从 Datagridview 更新 MS Access 数据库

Posted

技术标签:

【中文标题】从 Datagridview 更新 MS Access 数据库【英文标题】:Updating MS Access Database from Datagridview 【发布时间】:2012-04-03 23:04:29 【问题描述】:

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

datagridview 在按钮单击时填充,并且在任何单元格被修改时更新数据库。

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

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 集合时,更新需要有效的 UpdateCommand 修改后的行。

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

【问题讨论】:

【参考方案1】:

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

所以满足要求,向适配器添加更新命令。

【讨论】:

而不是向适配器添加更新命令。我会说设置UpdateCommand属性【参考方案2】:
dataadapter = new OleDbDataAdapter(sql, connection);

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

OleDbCommandBuilder cb = new OleDbCommandBuilder(dataadapter);

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

【讨论】:

以上是关于从 Datagridview 更新 MS Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 c# 和 ms 访问中使用 DataGridView 超链接有困难

从后台线程奇怪的行为更新 datagridview

如何使用DataGridView从数据库表中插入,更新和删除数据?

非常频繁地更新datagridview

在 MS Access 中插入、更新或删除的数据不直接可用

将值从一个 DataGridView 复制到另一个