2013-08-26 54 views
0

您好我試圖處理空異常,但我仍然收到異常警告:data is null此方法或屬性不能被調用空值。SqlDataReader填充組合框IsDBNull問題

這是我的代碼:

spojeni.Open(); 
     string sql_combobox = "SELECT column FROM tableO RDER BY nazev ASC"; 
     SqlCommand combobox = new SqlCommand(sql_combobox, spojeni); 


     try 
     { 
      SqlDataReader dr = combobox.ExecuteReader(); 
      while (dr.Read()) 
      { 
       if (!dr.IsDBNull(0)) 
       { 
        comboBox1.Items.Add(dr["column"]); 
       } 
      } 

      dr.Close(); 
      dr.Dispose(); 
      spojeni.Close(); 
     } 
+2

在檢查中,您正在檢查第#0列,但在「添加」調用中,您將按名稱獲取列。我冒昧猜測你所要求的列實際上並不是列#0。 – CodingGorilla

+1

不,'Select query'只有'1'列,這意味着'0'與'column'相同。 –

+0

哪一行給你錯誤?if(!dr.IsDBNull(0))或comboBox1.Items.Add(dr [「column」]); ? – Ehsan

回答

1

我從你的代碼獲得

spojeni.Open(); 
//change your query string there was an error in it 
string sql_combobox = "SELECT column FROM table ORDER BY nazev ASC"; 
SqlCommand combobox = new SqlCommand(sql_combobox, spojeni); 


try 
{ 
    SqlDataReader dr = combobox.ExecuteReader(); 
    while (dr.Read()) 
    { 
     if (!dr.IsDBNull(0)) 
     { 
      comboBox1.Items.Add(dr.GetString(0)); 
     } 
    } 

    dr.Close(); 
    dr.Dispose(); 
    spojeni.Close(); 
} 
+0

如果是這樣,我猜這個異常就是'ExecuteReader'上的'SQLException'(語法錯誤)。 –

+0

@KingKing你是對的。這就是爲什麼我想知道發生錯誤的那一行。 – Ehsan

0

你需要指定要檢查的列...嘗試這樣的事:

if (dr["column"] != DBNull.Value) 
{ 
    comboBox1.Items.Add(dr["column"]); 
} 
+0

如果你解釋爲什麼'IsDBNull'不起作用,這將是完美的。 –

+0

對不起,但這不適合我。斯蒂爾同樣的例外。 – Marek