2013-07-17 46 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()); 
     } 
    }