【问题标题】:Datarow field extension method for convertion smallint to int将 smallint 转换为 int 的 Datarow 字段扩展方法
【发布时间】:2012-04-30 13:45:22
【问题描述】:

我在 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

【问题讨论】:

    标签: c# sql-server int extension-methods field


    【解决方案1】:

    SQL Server Data Type Mappings (ADO.NET)

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

    因此,你应该使用

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

    读取值

    【讨论】:

    • 这也会引发异常。 ConvertToInt32 正在工作。我不知道为什么扩展方法不起作用
    • 真的很抱歉。它是 tinyint 而不是 smallint。所以你的建议有效。谢谢。
    【解决方案2】:

    使用, datarow.Field("myColumnName");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 2017-11-28
      • 2011-04-25
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多