DataReader GetInt32()和GetInt16()

KBB*_*ite 9 .net c#

我试图smallint使用SqlDataReader 读取列值.

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

dataReader.GetInt16()

工作得很好.

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

 Int16 i16 = 1;
 Int32 i32 = i16;
Run Code Online (Sandbox Code Playgroud)

Hen*_*man 8

GetInt##()方法寻找一个精确匹配,"无效的转换"错误是关于将DbType ClrType转换.

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

应该GetDouble()阅读int,long甚至可能decimal没有抱怨?
我觉得最好不要.