将DataRow项目转换为Int C#时出错

时间:2015-11-13 11:44:40

标签: c# mysql casting dataset datarow

我正在创建一个访问MySQL数据库的系统,将项检索为数据集表,并将每行中的Items设置为对象中的变量。我遇到的问题是,当将datarow.ItemArray [x]转换为整数时,我收到错误:System.InvalidCastException。 我检查了数据库,数据库中的Item定义为Int(10)。 我还通过Visual Studio中的调试检查了数据行,我试图作为整数强制转换的项的值是1。 我将在下面发布我的代码,但如果其他人有这个问题,可能会知道为什么会非常感激。

foreach (DataRow dr in ds.Tables[0].Rows)
{
    Group group = new Group();
    group.TagID = (int)dr.ItemArray[0];
    group.Name = dr[1].ToString();
    group.Parent = parent;

这是班组。

class Group
{
    private int tagID;
    private string name;
    private Group parent;

    List<Group> children = new List<Group>();
    List<Tags> tags = new List<Tags>();

DataRow.ItemArray

3 个答案:

答案 0 :(得分:1)

group.TagID = int.Parse(dr.ItemArray [0] .ToString());

答案 1 :(得分:0)

所以它是"the big yellow" 而不是UInt32,然后将其投射到:

Int32

你也可以使用我喜欢的group.TagID = (int)(uint)dr[0]; 方法,因为它也支持nullables:

Field

第三种选择(在这种情况下可能是最好的)是使用group.TagID = (int)dr.Field<uint>(0);

System.Convert.ToInt32

答案 2 :(得分:0)

您使用过INT(10),在MySql中这意味着它有10位数字。 你提到的数据类型是UInt32。

所以解决方案是简单地将其转换为UInt32,而不是使用Integer。 或者使用Convert.ToInt32

将其转换为inter

见下文:

grou.TagID = Convert.ToInt32(dr.ItemArray[0])