DataReader GetInt32()& GetInt16()

时间:2011-10-20 18:28:02

标签: c# .net

我正在尝试使用SqlDataReader读取smallint列值。

dataReader.GetInt32()抛出异常为“指定的强制转换无效。”

但是

  

dataReader.GetInt16()

工作正常。

你能解释为什么GetInt32()失败,如果Int16可以像这里一样分配给Int32

 Int16 i16 = 1;
 Int32 i32 = i16;

1 个答案:

答案 0 :(得分:8)

GetInt##()方法查找完全匹配,'无效转换'错误是关于DbType到ClrType的转换。

你是正确的,GetInt32()本来可以读取较小的类型,但那也可能无意中发生。

GetDouble()在没有抱怨的情况下intlong甚至decimal阅读?{ 我觉得最好不要。