我在SQL Server中有smallint
类型的列。我读了Ado.net包含这个字段的行。
当我获得该SQL Server行的DataRow
时,我尝试将其转换为整数,如下面的代码:
int value = datarow.Field<int>("myColumnName");
因为字段为smallint
,我认为我应该转换为int
。但它抛出一个例外说
指定演员表无效.....
我不想使用Convert.ToInt32
或其他功能。我想使用Datarow的字段扩展方法。我怎么能这样做?
修改
datarow.Field<int>("myColumnName"); // doesnt work
datarow.Field<Int16>("myColumnName"); // doesnt work
datarow.Field<short>("myColumnName"); // doesnt work
Convert.ToInt32(datarow["myColumnName"]) // works but i dont want it
答案 0 :(得分:3)
请参阅SQL Server Data Type Mappings (ADO.NET)。
SMALLINT
是SQL Server中的16位整数,因此它映射到.NET中的Int16
因此,您应该使用
Int16 value = datarow.Field<System.Int16>("MyColumnName")
读取值
答案 1 :(得分:0)
使用, datarow.Field&LT;字节&GT;(&#34; myColumnName&#34);