2013-07-17 44 views
0

這是我之前詢問的一個問題的擴展。我試圖執行SQL查詢並在DataGridView中顯示結果,但即使我將數據源分配給查詢結果並將AutoGenerateColumns設置爲true,查看器中也不會顯示任何結果。任何想法缺少什麼?數據不顯示在DataGridView中

private void Query() 
    { 
     const string ConnectionPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=RetentionDB.mdb"; 

     try 
     { 
      using (var cn = new OleDbConnection(ConnectionPath)) 
      using (var cmd = new OleDbCommand("SELECT * FROM RetentionTable WHERE Center = ?", cn)) 
      { 
       // Parameter names don't matter; OleDb uses positional parameters. 
       cmd.Parameters.AddWithValue("@p0", getCenter("")); 

       var objDataSet = new DataSet(); 
       var objDataAdapter = new OleDbDataAdapter(cmd); 
       objDataAdapter.Fill(objDataSet); 

       dataOutput.AutoGenerateColumns = true; 
       dataOutput.DataSource = objDataSet; 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message.ToString()); 
      MessageBox.Show(ex.StackTrace.ToString()); 
     } 
    } 

榮譽去理查德認爲可行性幫助我的代碼迄今。

PS我環顧四周,看到的這麼多問題,但他們都不適用(至少我發現)

+0

'SELECT * FROM RetentionTable WHERE Center =?'是什麼意思? –

+0

這只是對SQL查詢的測試。在「使用」部分中,@ p0調用getCenter()函數,該函數返回一個字符串並在問號的第一個實例中注入到SQL中。 – 1337Atreyu

回答

3

變化

dataOutput.DataSource = objDataSet; 

dataOutput.DataSource = objDataSet.Tables[0]; 

這裏討論你可以用作gridview的數據源的東西

GridView

基本上

IList接口,包括一維數組

的IListSource接口的,如數據表和數據集的類

的IBindingList的接口,如的BindingList類

IBindingListView接口,如BindingSource類

+0

你在天才!我一直在苦苦掙扎幾個小時,所花的一切都是那麼小的改變! – 1337Atreyu

+0

對不起,我正在嘗試,但它不讓我。必須稍後再回來。 – 1337Atreyu

0

請試試這樣:

private void Query() { const string ConnectionPath =「Provider = Microsoft.Jet.OLEDB.4.0; Data Source = RetentionDB.mdb」;

 try 
     { 
      using (var cn = new OleDbConnection(ConnectionPath)) 
      using (var cmd = new OleDbCommand("SELECT * FROM RetentionTable WHERE Center = ?", cn)) 
      { 
       // Parameter names don't matter; OleDb uses positional parameters. 
       cmd.Parameters.AddWithValue("@p0", getCenter("")); 

       var objDataSet = new DataSet(); 
       var objDataAdapter = new OleDbDataAdapter(cmd); 
       objDataAdapter.Fill(objDataSet,"RetentionTable"); 

       dataOutput.AutoGenerateColumns = true; 
       dataOutput.DataSource = objDataSet.Tables["RetentionTable"]; 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message.ToString()); 
      MessageBox.Show(ex.StackTrace.ToString()); 
     } 
    }