0

我的代码成功地从数据库中读取了字符串值,但是当我想导入一个整数值时,它会将其读取为空值(即使数据库具有分配给该字段的值)

我的代码:

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
4

1 回答 1

0

非常感谢您的回答,我找到了一个解决方案,方法是创建一个单独的变量来进行转换,然后将值传递给 Weapon 对象的创建。我觉得我的原始代码应该可以工作,但是如果您在直接调用该值后进行整数转换,它似乎不喜欢它:

编码:

 int weaponDamage = Convert.ToInt32(dt.Rows[randomItem][2]);
 wea = new Weapon(weaponDamage);
于 2013-02-22T14:38:28.520 回答