【问题标题】:Error casting CHAR(1) SQL column as "char" in code在代码中将 CHAR(1) SQL 列转换为“char”时出错
【发布时间】:2014-11-14 11:13:45
【问题描述】:

我正在从名为Combo_Label 的 SQL Server 2000 框 CHAR(1) 列中进行选择 - 它总是会有一个 A..Z 字符。在测试过程中,它将转换前70个左右的项目没有问题,但随后运行到Invalid Cast Exception

这是问题所在:

char comboLabel = (char)formCombo.Rows[j]["Combo_Label"];

这是监视列表的屏幕截图,显示了可以对其进行评估的一些方法。

对于为什么会发生这种情况有什么想法吗?

【问题讨论】:

    标签: c# sql .net type-conversion


    【解决方案1】:

    数据库和 Db 访问 API 没有 char 的概念。您的 CHAR(1) 映射到 string

    可能是最明智的选择:

      string comboLabel = (string)formCombo.Rows[j]["Combo_Label"];
    

    但如果你真的想要char

      char comboLabel = ((string)formCombo.Rows[j]["Combo_Label"])[0];
    

    【讨论】:

    • 知道了 - 效果很好。你知道为什么它会在前 71 行工作,然后会出现转换错误吗?这是幕后/内部的东西吗?
    • 我猜前 70 个包含 NULL。好好看看数据。
    【解决方案2】:

    该字段是一个字符串,你可以这样做但还需要考虑hte字段是null还是空字符串

    char comboLabel = ((string)formCombo.Rows[j]["Combo_Label"])[0];

    【讨论】:

      【解决方案3】:

      首先将其转换为字符串,然后获取第一个字符...

      char comboLabel = formCombo.Rows[j]["Combo_Label"].ToString()[0];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-15
        • 2015-08-05
        • 2010-10-12
        • 2021-04-29
        • 2013-10-18
        • 2012-01-15
        • 2020-11-25
        • 1970-01-01
        相关资源
        最近更新 更多