簡體   English   中英

將多個dataGridView綁定到MySQL數據庫

[英]bind more than one dataGridView to MySQL database

我有帶四個表的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對象,但是當我在一個表中插入新行時,我有一個例外,我在另一張表中保留了空字段。 任何解決方案或有關此問題的提示?

提前致謝!

遲到總比不到我想的要好...

我有一個應用程序,可以使用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,但是我沒有使用太多,所以不能確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM