是否可以使用Oledb从数据库中检索整数值?

时间:2013-02-22 14:03:30

标签: c# oledb

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

我的代码:

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

1 个答案:

答案 0 :(得分:0)

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

代码:

 int weaponDamage = Convert.ToInt32(dt.Rows[randomItem][2]);
 wea = new Weapon(weaponDamage);