【问题标题】:C# database connection and datagridviewC# 数据库连接和datagridview
【发布时间】:2011-03-21 22:31:29
【问题描述】:

我最近开始在 C# 中使用数据库,但我没有弄清楚什么! 在 Visual Studio 2008 中,我开始了一个新项目,在表单中添加了一个 datagridview,并在 form_load 上输入了以下代码:

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 中没有数据! 我该怎么办?

【问题讨论】:

    标签: c# database datagridview odbc


    【解决方案1】:

    一个数据集可以包含多个数据表。您可以将 DataGridView 的数据源设置为 DataSet 中的特定表,或者只使用 DataTable:

    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;
    }
    

    【讨论】:

    • thnx 的答案:D 刚刚尝试过,但仍然是同样的问题,datagridview 为空:\
    • @user670255,嗯......这应该可以。只是检查一下,您确定该表中有数据吗?如果在你设置dataGridView1.DataSource = table;的那一行下断点,table里面有数据吗?
    • 是的!我在 ms 访问中创建了列,并在行中添加了一些数据!我也尝试不是从表单加载而是通过单击按钮来执行此操作,现在我遇到了一个错误:错误 [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    • @user670255,我唯一能想到的另一件事是AutoGenerateColumnsfalsetrue 是默认值,但您可能需要检查并确定。除此之外,我使用 Sql Server 尝试了与此类似的代码,它填充了数据网格。我对 Access 没有太多经验,因此无法解决您的其他错误。对不起!
    【解决方案2】:
            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;
    

    【讨论】:

      【解决方案3】:

      希望有帮助,请将这些行添加到编码行的最后一行:

      this.dataGridView1.DataMember = "tabela";
      
      and better put this line before `con.Close();
      
      this.dataGridView1.DataSource = dset;
      this.dataGridView1.DataMember = "tabela";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-15
        • 2016-10-03
        • 2013-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多