我的代码成功从数据库中读取字符串值,但是当我想导入一个整数值时,它会将其读取为空值(即使数据库具有分配给该字段的值)
我的代码:
query = "SELECT * FROM Enemies";
da = new OleDbDataAdapter(query, conn);
da.Fill(dt); // dt = DataTable
wea = new Weapon(Convert.ToString(dt.Rows[randomItem][1])); // Works perfect for only string value retrieval
// randomItem = Randomly chooses a row from the database to use for object construction
如果我使用以下代码,则会收到“InvalidCastExcpetion未处理”异常。 “无法将对象从DBNull强制转换为其他类型”
wea = new Weapon(Convert.ToInt32(dt.Rows[randomItem][2])) // The 2 gets the damage column from the database
答案 0 :(得分:0)
非常感谢您的回答,我通过创建一个单独的变量进行转换找到了解决方案,然后将值传递给Weapon对象创建。我觉得我的原始代码应该可以正常工作,但如果你在直接调用该值后进行整数转换,它似乎不喜欢它:
代码:
int weaponDamage = Convert.ToInt32(dt.Rows[randomItem][2]);
wea = new Weapon(weaponDamage);