2013-05-09 118 views
0

我有一個以下查詢來顯示在dataGridView中的學生數據,但它doest似乎顯示任何記錄。我的代碼:SQL查詢運行,但沒有產生任何結果

public void setSQL() 
{ 
    string ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\jasper\\Desktop\\AutoReg\\AutoReg.accdb;"; 

    OleDbConnection MyConn = new OleDbConnection(ConnStr); 
    MyConn.Open(); 

    DataSet ds = new DataSet(); 

    //query to ask 
    string query = "SELECT * FROM Student"; 

    using (OleDbCommand command = new OleDbCommand(query, MyConn)) 
    { 
     using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) 
     { 
      adapter.Fill(ds); 
      dataGridView1.DataSource = ds; 
      MyConn.Close(); 
     } 
    } 
} 
+0

一些建議:使用try和catch塊,這樣,如果查詢失敗,您可以關閉您的連接(它可以這樣做的你不能控制的原因)。 – Renan 2013-05-09 13:52:04

+0

很明顯,但要確保你打的是正確的文件,並且它在學生表中有數據。 – Tony 2013-05-09 13:53:39

+0

這是正確的文件,我確信它裏面有一些數據。 – jaspernorth 2013-05-09 13:54:57

回答

0

編輯:看到評論後,我發現我的錯誤。我假設一個Web應用程序。

您應該使用DataTable作爲數據源,而不是DataSet。將數據源屬性設置爲DataSet表集合中的第一個表。

實際上,你可以使用一個DataSet,但它並不那麼簡單。但它允許用戶更改她所看到的表格。

+0

似乎不起作用:/ 'System.Windows。 Forms.DataGridView'不包含'DataBind'的定義 – jaspernorth 2013-05-09 13:50:46

+0

你是完全正確的!這現在的作品,非常感謝 – jaspernorth 2013-05-09 13:56:23

+0

無法相信一個接受的答案,downvote。 @jaspernorth:如果有幫助,請接受這個答案。 – shahkalpesh 2013-05-09 14:04:40

0

幾件你可以檢查的東西。

  1. 您確定您在此表中有條目嗎?

  2. 嘗試註釋掉有關OleDbDataAdapter的部分,改爲使用DataReader,以便可以逐步查看是否有行正在返回。

  3. 如果你在你的datareader中獲取行,那麼它可能與你的datagrid設置有關。你在使用自動生成列嗎?如果不是,列是否設置正確?

0

相反的:

dataGridView1.DataSource = ds; 

試試這個:

dataGridView1.DataSource = ds.Tables[0]; 
+0

謝謝,也很有用 – jaspernorth 2013-05-09 14:04:50