2014-09-19 91 views
0

我从SQL Server 2000框中选择CHAR(1)列名为Combo_Label - 它始终有一个单独的A .. Z字符。在测试过程中,它会将前70个物品毫无问题地转换,然后运行到Invalid Cast Exception错误在代码中将CHAR(1)SQL列转换为“char”

这就是问题之行:

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

这是观察名单中显示某些方面,它可以评估的屏幕截图。

http://i.imgur.com/iaEBEDZ.png

任何想法,为什么出现这种情况?

回答

2

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

可能是最明智的选择:

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

,但如果你真的想要一个char

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

疑难杂症 - 效果很好。你知道为什么它会对前71行起作用,然后发生铸造错误?这是幕后/内幕? – 2014-09-22 12:50:24

+0

我猜想第一个70包含NULL。仔细查看数据。 – 2014-09-22 17:25:56

0

领域是一个字符串,你可以做这样的事情,但也需要考虑,如果hte字段为空或空字符串

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

0

首先将其转换成一个字符串,然后拿到第一个字符...

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