正在从Datagridview更新MS Access数据库

本文关键字:MS Access 数据库 更新 Datagridview | 更新日期: 2023-09-27 18:28:26

我正在尝试从datagridview更新ms访问数据库。

单击按钮即可填充数据网格视图,修改任何单元格时都会更新数据库。

我一直在使用的代码示例在表单加载时填充并使用cellendedit事件。

private OleDbConnection connection = null;
private OleDbDataAdapter dataadapter = null;
private DataSet ds = null;
private void Form2_Load(object sender, EventArgs e)
{
    string connetionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:''Users''Peter''Documents''Visual Studio 2010''Projects''StockIT''StockIT''bin''Debug''StockManagement.accdb';Persist Security Info=True;Jet OLEDB:Database Password=";
    string sql = "SELECT * FROM StockCount";
    connection = new OleDbConnection(connetionString);
    dataadapter = new OleDbDataAdapter(sql, connection);
    ds = new DataSet();
    connection.Open();
    dataadapter.Fill(ds, "Stock");
    connection.Close();
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Stock";
}
private void addUpadateButton_Click(object sender, EventArgs e)
{
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    try
    {
        dataadapter.Update(ds,"Stock");
    }
    catch (Exception exceptionObj)
    {
        MessageBox.Show(exceptionObj.Message.ToString());
    }
}

我收到的错误是

传递DataRow集合时,Update需要有效的UpdateCommand具有修改的行。

我不确定这个命令需要去哪里,以及如何引用单元格来更新数据库中的值。

正在从Datagridview更新MS Access数据库

dbDataAdapterClass(OleDbDataAdapter从中继承的类)具有SelectCommand、UpdateCommand和InsertCommand。当显式调用任何方法(例如update;)时,它负责选择、更新和插入。由于在您的代码中,您从未提供解释如何进行更新的命令,因此数据适配器不知道如何进行更新

因此,通过向适配器添加更新命令来满足需求。

dataadapter = new OleDbDataAdapter(sql, connection);

在上面一行之后添加下面的代码,OleDbCommandBuilder将为您生成命令。

OleDbCommandBuilder cb = new OleDbCommandBuilder(dataadapter);

本教程将为您提供更多信息。