如何使用TableAdapter进行更新?

时间:2013-01-12 11:06:46

标签: c# winforms datagridview dataset

我正在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,因为我没有在互联网上找到任何有用的东西。

4 个答案:

答案 0 :(得分:2)

        this.Validate();
        this.productsBindingSource.EndEdit();
        this.productsTableAdapter1.Update(this.databaseDataSet1.products);
        //this.productsTableAdapter1.UpdateAll(this.databaseDataSet1);

答案 1 :(得分:0)

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

答案 2 :(得分:0)

假设您使用DataTableDataAdapter填充数据网格视图,您可以执行以下操作:

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

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

答案 3 :(得分:0)

try
{
    this.Validate();
    this.customersBindingSource.EndEdit();
    this.customersTableAdapter.Update(this.northwindDataSet.Customers);
    MessageBox.Show("Update successful");
}
catch (System.Exception ex)
{
    MessageBox.Show("Update failed");
}