将 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])
我正在创建一个正在访问 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])