2013-05-09 58 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