使用TableAdapter将行插入Access 2003 DB

时间:2009-12-24 18:31:25

标签: c# ms-access tableadapter

我是使用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();

1 个答案:

答案 0 :(得分:2)

你正在通过调用AcceptChanges()射击自己。它将对数据集的所有修改标记为“已提交”,因此下一个更新只会忽略它们。

除了在高级方案中,您通常不应直接调用AcceptChanges。