我试图smallint使用SqlDataReader 读取列值.
在dataReader.GetInt32()为"指定的强制转换无效."抛出异常
但
dataReader.GetInt16()
工作得很好.
你能否解释为什么GetInt32()失败,如果Int16可以像这里一样分配给Int32
Int16 i16 = 1;
Int32 i32 = i16;
Run Code Online (Sandbox Code Playgroud)
该GetInt##()方法寻找一个精确匹配,"无效的转换"错误是关于将DbType ClrType转换.
你是正确的GetInt32()可以读取较小的类型,但那也可能无意中发生.
应该GetDouble()阅读int,long甚至可能decimal没有抱怨?
我觉得最好不要.
| 归档时间: |
|
| 查看次数: |
7832 次 |
| 最近记录: |