1

我是使用 TableAdapters 的新手,我不确定发生了什么。本质上,我正在尝试使用生成的数据集将数据从一个数据库导出到具有不同架构的另一个数据库。当我单步执行代码时,就填充目标数据库的行而言,一切似乎都运行良好。但是,当我尝试将一行添加到目标数据库时,该行似乎没有被插入。你们有什么想法吗?我已将添加到项目集中的数据库设置为不复制到输出目录……所以我在网上看到的建议似乎不起作用。

        OleDbConnection oleDbConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\database.mdb;");

        SomeTableAdapter tableAdapter = new SomeTableAdapter();
        tableAdapter.Connection = oleDbConnection;
        tableAdapter.Connection.Open();

        SomeDataSet.SomeDataTable dataTable = tableAdapter.GetData();
        SomeDataSet.SomeDataRow dataRow = null;

        // Do some checks on the existing rows

        // Creation of new row is necessary
        if (dataRow == null)
            dataRow = dataTable.NewSomeRow();

            // Populate row fields

            dataTable.AddSomeRow(dataRow);
            dataTable.AcceptChanges();
        }
        else
        {
            // Update exiting row
        }

        tableAdapter.Update(dataTable);
        tableAdapter.Connection.Close();
4

1 回答 1

2

调用 AcceptChanges() 是在自取其辱。它将对数据集的所有修改标记为“已提交”,因此下一次更新只是忽略它们。

您通常不应该直接调用 AcceptChanges,除非在高级场景中。

于 2009-12-24T18:36:45.987 回答