2011-03-21 67 views
2

我最近开始使用C#数据库,但我没有搞清楚的东西! 在Visual Studio 2008年,我开始了一个新的项目,添加一个DataGridView到窗体,并在的Form_Load我把这个代码:C#数据库连接和datagridview的

string strCon = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Users\User\Desktop\Numeratori.accdb;"; 
string strSql = "select * from tabela"; 
OdbcConnection con = new OdbcConnection(strCon); 
con.Open(); 
OdbcDataAdapter dadapter = new OdbcDataAdapter(); 
dadapter.SelectCommand = new OdbcCommand(strSql, con); 
DataSet dset = new DataSet(); 
dadapter.Fill(dset); 
con.Close(); 
this.dataGridView1.DataSource = dset; 

当我运行它的形式打开了,但在DataGridView没有数据! 我该怎么办?

回答

5

数据集可以包含多个数据表。你可以在DataGridView的数据源设置为特定表中的数据集,或只使用一个数据表:

DataTable table = new DataTable(); 
dadapter.Fill(table); 
con.Close(); 
this.dataGridView1.DataSource = table; 

在一个侧面说明,您可以使用using帮助清理资源:

string strCon = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Users\User\Desktop\Numeratori.accdb;"; 
string strSql = "select * from tabela"; 

using (OdbcConnection con = new OdbcConnection(strCon)) 
using (OdbcDataAdapter dadapter = new OdbcDataAdapter(strSql, con)) 
{ 
    DataTable table = new DataTable(); 
    dadapter.Fill(table); 

    this.dataGridView1.DataSource = table; 
} 
+0

日Thnx的答案:D只是尝试这样做,但仍是同样的问题在DataGridView是空的:\ – user670255 2011-03-21 22:40:45

+0

@ user670255,嗯...这应该工作。只是为了检查,你确定该表中有数据吗?如果你在设置'dataGridView1.DataSource = table;'的行放置了一个断点,那么'table'中是否有数据? – 2011-03-21 22:57:19

+0

是的!我在ms访问中创建了列,并在行中添加了一些数据!我也试图不从形式负载,但通过单击按钮做到这一点,现在我想出了一个错误:ERROR [IM002] [微软]找不到[ODBC驱动程序管理器]数据源名称并没有指定默认驱动程序 – user670255 2011-03-21 23:12:14

0
 SqlConnection sql_connect = new SqlConnection(); 
     SqlCommand sql_command = new SqlCommand(); 
     string connetionString = @"server=ALI-LAP\SQLEXPRESSR2;Trusted_Connection=yes;database=XXX;"; 

     SqlDataAdapter sql_ada = new SqlDataAdapter(); 
     DataTable dt = new DataTable(); 

       sql_connect.ConnectionString = connetionString; 
       sql_command.Connection = sql_connect; 
       sql_command.CommandText = "SELECT * FROM XXX"; 

       sql_ada.SelectCommand = sql_command; 
       sql_ada.Fill(dt); 

       dataGridView.DataSource = dt;