2010-03-24 56 views
2

我正面臨着DataReader的一個奇怪問題。我正在使用帶有傳統rdbms系統的OdbcClient。DataReader的奇怪問題?

我發送follwing命令到數據庫。

select Col1, Col2, Col3 from Table1 where Col2 = 'Val1'; 

但是在某些情況下,當我通過DataReader迭代它時,如下所示。

IDataReader reader = cmd.ExecuteReader(); 

while(reader.Read()) 
{ 
    // Get the values from reader 

    int col2 = reader.GetValue(1); 

} 

雖然我在數據庫的Col2列中有價值,但我得到的Col2值爲DBNull。我正確地獲取Col1和Col3的值。這種行爲的可能原因是什麼?

更新:如果在調用cmd.ExecuteQuery()之前調用cmd.Prepare(),則這是固定的。請任何人都可以解釋這種行爲?

+0

檢查您的拼寫在Col2 ='Val1; – 2010-03-24 14:58:02

+0

將數據加載到DataTable時會發生什麼? 'table.Load(讀取器)' – Lijo 2013-12-13 08:24:59

回答

0

Col2的數據類型是什麼?你正在讀取GetValue,也許數據庫的值不能轉換爲Int ...是這樣嗎?

0

你有沒有試着用命名的參數爲:

int col2 = int.parse(reader["Col2"].ToString());