将 DataRow Item 转换为 Int C# 时出错

Error casting DataRow Item to an Int C#

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

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组。

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

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

所以它是 UInt32 而不是 Int32,然后将其转换为:

group.TagID = (int)(uint)dr[0];

您还可以使用我更喜欢的 Field 方法,因为它也支持可空值:

group.TagID = (int)dr.Field<uint>(0);

第三个选项(在这种情况下可能是最好的)是使用 System.Convert.ToInt32:

group.TagID = System.Convert.ToInt32(dr[0]);

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

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

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

将其转换为 inter

见下文:

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