【问题标题】:Empty rows when retrieving data from database to dataGridView in c#在c#中将数据从数据库检索到dataGridView时为空行
【发布时间】:2016-10-21 08:14:56
【问题描述】:

当我从 MySQL 数据库检索行到 dataGridView 时,为什么会得到空白行?我最终得到了行数,但它是空的(它没有文本)。

这是我目前的代码:

        private void button2_Click(object sender, EventArgs e)
    {
        string constring = "Data Source = localhost; port = 3306; username = root; password = 0159";
        MySqlConnection conDataBase = new MySqlConnection(constring);
        MySqlCommand cmdDataBase = new MySqlCommand("Select * FROM TopShineDB.Table1 ;", conDataBase);
        using (MySqlConnection conn = new MySqlConnection(constring))
        {
            try
            {
                MySqlDataAdapter sda = new MySqlDataAdapter();
                sda.SelectCommand = cmdDataBase;
                DataTable dt = new DataTable();
                sda.Fill(dt);

                BindingSource bs = new BindingSource();
                bs.DataSource = dt;
                dataGridView1.DataSource = bs;
                sda.Update(dt);
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

【问题讨论】:

  • 检查你的查询是否从数据库返回数据,在sda.Fill(dt)之后为什么你使用BindingSource bs?尝试评论此行并添加dataGridView1.DataSource = dt; ratthat 而不是 bs。
  • 我试过你的建议,结果一模一样
  • 检查我的答案.. 让我知道它是否能解决您的问题。

标签: c# mysql datagridview row data-retrieval


【解决方案1】:

*只需清除您在 DataGridView 中定义的列 *

      private void button2_Click(object sender, EventArgs e)
{
    string constring = "Data Source = localhost; port = 3306; username = root; password = 0159";
    MySqlConnection conDataBase = new MySqlConnection(constring);
    MySqlCommand cmdDataBase = new MySqlCommand("Select * FROM TopShineDB.Table1 ;", conDataBase);
    using (MySqlConnection conn = new MySqlConnection(constring))
    {
        try
        {
            MySqlDataAdapter sda = new MySqlDataAdapter();
            sda.SelectCommand = cmdDataBase;
            DataTable dt = new DataTable();
            sda.Fill(dt);

       
                 dataGridView1.Columns.Clear();
            dataGridView1.DataSource = bs;
  
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

c#

【讨论】:

    【解决方案2】:

    试试这个:

    private void BindGrid()
    {
        string conString = @"Data Source=localhost;port=3306;Initial Catalog=TopShineDB;User Id=root;password=0159";
        using (MySqlConnection con = new MySqlConnection(conString))
        {
            using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM Table1", con))
            {
                cmd.CommandType = CommandType.Text;
                using (MySqlDataAdapter sda = new MySqlDataAdapter(cmd))
                {
                    using (DataTable dt = new DataTable())
                    {
                        sda.Fill(dt);
                        dataGridView1.DataSource = dt;
                    }
                }
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      我尝试下面的代码示例从数据库中获取数据并绑定到 datagridview。

      var ConnectionString = "your ConnectionString";
      MySqlConnection connect = new MySqlConnection(ConnectionString);
      MySqlCommand cmd = new MySqlCommand("your query");
      connect.Open();
      MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
      DataSet ds = new DataSet(); 
      adp.Fill(ds); 
      DataTable dt = new DataTable();
      dt = DtSet.Tables[0];
      dataGridView1.DataSource = DtSet.Tables[0];
      connect.Close();
      

      【讨论】:

      • 我得到了完全相同的结果。
      • 你调试过datatable包含数据吗?
      • 在应用程序开始时它没有数据。用户稍后填写它,然后将数据存储到数据库中。现在我正在这样做,因此在启动时用户将能够从数据库中加载数据。
      • 能否请您检查一次 datagridview 属性是否更改了任何默认属性?
      • 我更改了属性,但谁对此负责?
      猜你喜欢
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      相关资源
      最近更新 更多