我正在尝试使用SqlDataReader读取smallint列值。
dataReader.GetInt32()引发异常,因为“指定的转换无效。”





也很好。

有人可以解释为什么如果可以将Int16分配给Int32的原因,那么GetInt32()失败的原因

 Int16 i16 = 1;
 Int32 i32 = i16;

最佳答案

GetInt##()方法查找完全匹配的内容,“无效转换”错误与DbType到ClrType的转换有关。

您是正确的,可以使GetInt32()读取较小的类型,但随后也可能会无意中发生这种情况。
GetDouble()是否应该毫无提示地读取intlong甚至是decimal
我认为最好不要。

关于c# - DataReader GetInt32()和GetInt16(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7840432/

10-10 21:16