我正在尝试使用SqlDataReader读取smallint
列值。dataReader.GetInt32()
引发异常,因为“指定的转换无效。”
但
也很好。
有人可以解释为什么如果可以将Int16分配给Int32的原因,那么GetInt32()失败的原因
Int16 i16 = 1;
Int32 i32 = i16;
最佳答案
GetInt##()
方法查找完全匹配的内容,“无效转换”错误与DbType到ClrType的转换有关。
您是正确的,可以使GetInt32()读取较小的类型,但随后也可能会无意中发生这种情况。GetDouble()
是否应该毫无提示地读取int
,long
甚至是decimal
?
我认为最好不要。
关于c# - DataReader GetInt32()和GetInt16(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7840432/