【问题标题】:C# OleDB Save ChangesC# OleDB 保存更改
【发布时间】:2016-10-14 06:30:28
【问题描述】:
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=\"C:\\Users\\User\\Desktop\\New Microsoft Access Database.accdb\"");
                OleDbDataAdapter DataAdapter = new OleDbDataAdapter("SELECT *from pinakas", connection);

                DataTable pinakas_Table = new DataTable();
                DataAdapter.Fill(pinakas_Table);

                MessageBox.Show(pinakas_Table.Rows[1]["Name"].ToString());

好的,所以这一行显示我的第一行字段的名称“George” “名字”。

        pinakas_Table.Rows[1]["Name"] = "John";

现在这一行将字段“名称”设置为值“约翰”

        pinakas_Table.AcceptChanges();
        DataAdapter.Fill(pinakas_Table);
        MessageBox.Show(pinakas_Table.Rows[1]["Name"].ToString());

好的,现在我的应用程序显示名称“John”!这意味着 DataTable "pinakas_Table" 得到了更改。

        DataAdapter.Update(pinakas_Table);

但它从未保存到我的 Access 数据库中。

【问题讨论】:

  • 数据集 ds = new DataSet(); DataAdapter.Fill(ds); MessageBox.Show(ds.Tables[0].Rows[1]["Name"].ToString()); ds.Tables[0].Rows[1]["Name"] = "John"; ds.AcceptChanges(); MessageBox.Show(ds.Tables[0].Rows[1]["Name"].ToString()); DataAdapter.Update(ds.Tables[0]); // 当我使用 DataSet 而不是 DataTable 时也是如此。更改不提交

标签: c# oledb dataadapter


【解决方案1】:

Updating Data Sources with DataAdapters 状态...

DataSetDataTableDataRow 上调用AcceptChanges 将导致DataRow 的所有Original 值被DataRowCurrent 值覆盖。如果将行标识为唯一的字段值已被修改,则在调用 AcceptChanges 后,Original 值将不再与数据源中的值匹配。在调用DataAdapterUpdate 方法期间,会自动为每一行调用AcceptChanges

通过调用pinakas_Table.AcceptChanges();,您修改的行将被视为其数据在数据库中未发生变化,因此DataAdapter.Update(pinakas_Table); 将看到该行不需要任何操作。不要打电话给AcceptChanges()Update method 将在成功时为您调用AcceptChanges()

【讨论】:

  • 如果我没有“AcceptChanges”,当我使用 DataAdapter 更新时会出错。
  • {"当传递带有修改行的 DataRow 集合时,更新需要有效的 UpdateCommand。"}
  • 调用AcceptChanges() 只是抑制该错误,因为它使适配器认为没有要执行的更新并且它永远不会尝试使用未设置的UpdateCommand property。您需要设置UpdateCommand 并删除对AcceptChanges() 的调用。
  • 无法将更改保存到数据库...我什至不确定整个方法是否正确...人们使用“插入”查询。我来自德尔福,这一切都很容易,现在我承认了
  • 什么意思:你需要设置 UpdateCommand 并移除对 AcceptChanges() 的调用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 2016-03-25
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多