如何使用 TableAdapter 进行更新?

Posted

技术标签:

【中文标题】如何使用 TableAdapter 进行更新?【英文标题】:How to update with TableAdapter? 【发布时间】:2013-01-12 11:06:45 【问题描述】:

我正在WindowsApplication 中编写一个使用数据库的程序。 我用DataGridView 显示数据库值。 目前,我希望有可能通过DataGridView更新数据库,因此我写了这段代码:

    private void MainForm_Load(object sender, EventArgs e)
    
        // TODO: This line of code loads data into the 'databaseDataSet1.products' table. You can move, or remove it, as needed.
        this.productsTableAdapter1.Fill(this.databaseDataSet1.products);
    

    private void upButton1_Click(object sender, EventArgs e)
    
        this.productsTableAdapter1.Update(this.databaseDataSet1.products);
        MessageBox.Show("הנתונים עודכנו בהצלחה!");
    

问题是没有将值更新到数据库中。 如果有人能帮我解决这个问题,我会很高兴,或者更好地解释如何使用DataGridView,因为我在互联网上没有找到任何有用的东西。

【问题讨论】:

【参考方案1】:
        this.Validate();
        this.productsBindingSource.EndEdit();
        this.productsTableAdapter1.Update(this.databaseDataSet1.products);
        //this.productsTableAdapter1.UpdateAll(this.databaseDataSet1);

【讨论】:

【参考方案2】:

假设您使用 DataTableDataAdapter 填充 datagridview,您可以执行以下操作:

private void SaveChanges()

    try
    
        if (sqlDataAdapter != null && dataTable.GetChanges() != null)
            sqlDataAdapter.Update(dataTable);
    
    catch (Exception exception)
    
        MessageBox.Show(exception.Message);
    

这将根据您的 DataTable 自动生成更新数据库所需的任何插入、更新或删除语句

【讨论】:

【参考方案3】:

您应该将 datagridview 绑定到 DataTable 或 BindingList 对象,因为它们是可观察的。

【讨论】:

你说我需要“绑定datagridview...”是什么意思? 你这样写:dataGridView1.DataSource = dTable;其中 dTable 是 DataTable() 的一个实例。现在您只需要修改数据表,它就会反映在数据网格视图中。【参考方案4】:
try

    this.Validate();
    this.customersBindingSource.EndEdit();
    this.customersTableAdapter.Update(this.northwindDataSet.Customers);
    MessageBox.Show("Update successful");

catch (System.Exception ex)

    MessageBox.Show("Update failed");

【讨论】:

以上是关于如何使用 TableAdapter 进行更新?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TableAdapter 配置向导的 SQL 语句中使用等宽字体?

使用 DataSet 更新 TableAdapter - 更新需要有效的 DeleteCommand 错误

如何在 TableAdapter 查询中使用命名参数?

Datagridview 更新到多个表而不使用 bindingsource 或 tableadapter

在 vb.net 中使用 tableadapter 更新旧数据并添加新数据

使用带有 SqlCommandBuilder 的 TableAdapter 和导出到 DataTable 的工作表来更新 SQL 数据库表