我正在创建一个访问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>();
答案 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])