【问题标题】:bind more than one dataGridView to MySQL database将多个dataGridView绑定到MySQL数据库
【发布时间】:2011-05-22 08:44:49
【问题描述】:

我有四个表的 MySQL 数据库,并且我已经编写了一个示例绑定方法。但是这个解决方案只适用于一张桌子。如果我绑定了多个,dataGridViews 将填充信息,但更新和删除命令效果不佳。

 public void Bind(DataGridView dataGridView, string tableName)
    {
        string query = "SELECT * FROM " + tableName;

        mySqlDataAdapter = new MySqlDataAdapter(query, conn);
        mySqlCommandBuilder = new MySqlCommandBuilder(mySqlDataAdapter);

        mySqlDataAdapter.UpdateCommand = mySqlCommandBuilder.GetUpdateCommand();
        mySqlDataAdapter.DeleteCommand = mySqlCommandBuilder.GetDeleteCommand();
        mySqlDataAdapter.InsertCommand = mySqlCommandBuilder.GetInsertCommand();

        dataTable = new DataTable();
        mySqlDataAdapter.Fill(dataTable);

        bindingSource = new BindingSource();
        bindingSource.DataSource = dataTable;

        dataGridView.DataSource = bindingSource;
    }

我应该为每个新表使用不同的 mySqlDataAdapter 或 mySqlCommandBuilder 吗?我使用了不同的 DataTable 和 BindingSource 对象,但是当我在一个表中插入新行时,我有一个例外,我在另一个表中留下了空字段。有针对此问题的解决方案或提示吗?

提前致谢!

【问题讨论】:

  • 您不想使用数据集?或将表格列表发送到此方法?你希望代码看起来如何?你写了什么没用?
  • 我想绑定我所有的表。我正在尝试 mySqlInterface.Bind(dataGridView1, "Storage"); mySqlInterface.Bind(dataGridView2, "Items");这两张表都是数据库中的信息,但是更新和删除只对Item表起作用(最后一张,我叫bind方法)。

标签: c# mysql datagridview datatable bindingsource


【解决方案1】:

迟到总比没有好...

我有一个应用程序,它使用 Visual Studio 2013 将不同的表加载到同一个 DataGridView 中。到目前为止它正在工作!

1.数据表

您当然需要为每个要加载的不同表创建一个新表,否则无法清除旧数据。你可能会认为

dataTable.Clear()

可以解决问题,但不会,它会留下旧的列标题,因此您的新表会加载到所有旧列的右侧:-(。虽然有趣的是,如果您的新表有一个与旧的它合并了它们!

2。 MySqlAdapter

我目前为每个表创建一个新的,但至少你的 sql 查询正在改变,所以你需要创建一个新的 SelectCommand:

MySqlCommand cmd = new MySqlCommand("SELECT * FROM `" + tableName + "`", conn);
sqlAdapter.SelectCommand = cmd;

我已经尝试过了,它似乎可以工作,但实际上创建一个新的 MySqlAdapter 更简单,此时性能真的不是问题!

3。 SqlCommandBuilder

是的,您应该创建一个新的,因为更新和删除命令会有所不同。我不使用类变量,而是在需要时动态创建一个(即作为局部变量)。

4.绑定源

我不认为你需要一个新的 BindingSource,但我没有经常使用它们,所以不能确定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-03
    • 2011-08-08
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多