2011-04-06 60 views
0

我想檢查sqldatareader是否爲null。因此,嘗試下面的代碼:sqldatareader錯誤

if (x[k]!= DBNull.Value) 
{ 
    box.Text = Convert.ToString(x[k++]); 

    if ((box.Text) != "") 
    current[j - 1] = Convert.ToDouble(box.Text); 
    else current[j - 1] = 0; 

    box.Enabled = false; 
} 

然而在試圖DataReader的內部檢查值,它拋出一個錯誤,「無效的嘗試時,不存在數據讀取數據」。我還應該檢查數據是否存在。請幫忙。這裏x是一個sqldatareader SqlDataReader x = cmd.ExecuteReader(); 和CMD是一個選擇commnand ..

回答

0

你可以做一個空檢查和訪問數據行之前就行。

這樣

if(null != x && x.HasRows) 
{ 
//Your code 
} 
+0

但它仍然顯示了同樣的錯誤。 !雖然if條件滿足,但不能執行該行 box.Text = Convert.ToString(x [k ++]); x的fieldcount顯示6,但爲什麼它不能讀取x [k]?即使當k = 0時也是如此。 – scooby 2011-04-06 04:08:55

+0

嘗試快速查看x [k]的值。 – Anuraj 2011-04-06 04:39:14

+0

是否可以查看存儲在數據讀取器中的值?我的意思是,我不認爲有辦法窺視x [0]或x [1]內的值.. – scooby 2011-04-06 05:04:36

4

您可以使用SqlDataReader.HasRows - 這是真的,如果數據的至少一行存在,或者您可以通過使用SqlDataReader.Read()所有讀取結果;

因此,對於你的例子:

while(x.Read()) 
{ 
    //read stuff 
}