【发布时间】:2015-11-13 11:44:39
【问题描述】:
我正在创建一个访问 MySQL 数据库的系统,将项目作为数据集表检索,并将每行中的项目设置为对象中的变量。我遇到的问题是,将 datarow.ItemArray[x] 转换为整数时出现错误:System.InvalidCastException。 我检查了数据库,数据库中的 Item 定义为 Int(10)。 我还通过 Visual Studio 中的调试检查了数据行,我尝试将其转换为整数的 Item 的值为 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>();
【问题讨论】:
-
使用调试器,
dr[0]是什么类型?也可以看ds.Tables[0].Columns[0].DataType -
Name = "UInt32" FullName = "System.UInt32"
-
从您的图像中可以看出您正在将 int 转换为 int。尝试移除演员表。
-
@StephenBrickner:演员表是必需的,因为
ItemArray是object[]。DataRow中的所有内容都是对象,必须取消装箱。 -
@StephenBrickner 如果我不插入演员表,我会收到错误:“无法将类型'object'隐式转换为'int'。存在显式转换(您是否缺少演员表?)”跨度>
标签: c# mysql casting dataset datarow