3

我在 SQL Server 中有一列smallint类型。我通过 Ado.net 阅读了包含此字段的行。

当我得到DataRow那个 SQL Server 行时,我尝试将它转换为整数,如下面的代码:

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
4

2 回答 2

3

请参阅SQL Server 数据类型映射 (ADO.NET)

SMALLINT是 SQL Server 中的 16 位整数,因此它映射到Int16.NET

因此,您应该使用

Int16 value = datarow.Field<System.Int16>("MyColumnName")

读取值

于 2012-04-30T13:51:47.393 回答
0

使用,datarow.Field<byte>("myColumnName");

于 2014-03-26T07:30:23.020 回答