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

C# 是否可以使用Oledb从数据库检索整数值?,c#,oledb,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 onl

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

我的代码:

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 
如果我使用以下代码,我会收到一个“InvalidCastException未处理”异常。“无法将对象从DBNull强制转换为其他类型”


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

守则:

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

“损坏”列真的是一个整数值吗?不是数值?如果列值为
NULL
您希望在其位置使用什么值?您是否检查了所有列的位置是否正确?是否在损坏列中获取了值?该列的所有行中是否都有值?看起来您的特定行的值肯定为空。你找到正确的列了吗?请记住,列索引是从零开始的。是的,我在列中有值。我的数据类型是数字,字段大小是整数。我应该更改我的数据类型吗?
 int weaponDamage = Convert.ToInt32(dt.Rows[randomItem][2]);
 wea = new Weapon(weaponDamage);