2015-03-19 50 views
0

我想檢查一下DataTable對象是否爲null,但是每當DataTable爲null時,我的程序總是給我一個OleDBException。空數據表異常

我有這樣的方法來建立數據表

public DataTable setUpDataTable(String sql) 
    { 
     String connString = connDel; 

     using (OleDbConnection conn = new OleDbConnection(connString)) 
     { 
      OleDbCommand cmd = new OleDbCommand(sql, conn); 

      try 
      { 
       conn.Open(); 
      } 
      catch (NullReferenceException ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      DataTable delTable = new DataTable(); 
      OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); 
      adapter.Fill(delTable); 
      return delTable; 

     } 
    } 

而這裏就是我所說的方法來初始化DataTable對象(原來的方法是在另一個類)。我想看看這個DataTable是否爲空。

DataTable duplicates = main.setUpDataTable(sql); 

if (duplicates != null) 
      return false; 

該程序根本沒有進入if語句,但在DataTable對象的初始化時拋出異常。該方法在DataTable中存在某些內容時起作用,但在該內容爲空時拋出異常。我怎樣才能解決這個問題?

回答

0

試試這個..

如果沒有匹配的記錄,你會得到一個空的DataTable,這樣你就可以記錄數查詢返回:

if (duplicates != null && duplicates .Rows.Count > 0) 
    return false; 

此外,請確認SQL SELECT查詢。

+0

它填充setUpDataTable中的DataTable時仍然崩潰。這裏是我對SQL語句有幫助的地方(房間號是一個字符串):選擇日期,建築物,[房間號],設備,[開始時間],[結束時間]從[交付數據庫] + 「WHERE DATE =#」+ date.ToString(「MM/dd/yyyy」)+「#AND BUILDING ='」+ building +「'AND [ROOM NUMBER] ='」+ room +「'AND EQUIPMENT ='」 + equip +「'AND [START_TIME] =#」+ start.ToString(「MM/dd/yyyy」)+「#AND [END TIME] =#」+ end.ToString(「MM/dd/yyyy」) + 「#」 – 2015-03-19 17:03:18