2013-02-22 110 views
0

我的代碼從數據庫中成功讀取字符串值,但是當我要導入一個整數值,它把它讀成空值(即使數據庫已分配給該字段值)是否可以使用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 was unhandled」異常。很多「對象不能從DBNull轉換到其他類型的」

wea = new Weapon(Convert.ToInt32(dt.Rows[randomItem][2])) // The 2 gets the damage column from the database 
+0

的「損害」列確實是一個整數值?不是數值? – marcoaoteixeira 2013-02-22 14:06:31

+0

如果列值爲NULL,您希望在它的位置使用什麼值? – 2013-02-22 14:06:58

+0

你是否檢查所有列是否正確彈出?檢查你是否在損害列中獲得值? – 2013-02-22 14:07:52

回答

0

謝謝您的回答,我通過創建一個單獨的變量,做了轉換,然後將其延續到了武器對象創造價值找到了解決辦法。我覺得像我原來的代碼是這樣運作的,但它似乎不喜歡它,如果你以後直接調用值做一個整數轉換:

代碼:

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