0
OleDbConnection _connection = new OleDbConnection();
        StringBuilder ConnectionString = new StringBuilder("");
        ConnectionString.Append(@"Provider=Microsoft.Jet.OLEDB.4.0;");
        ConnectionString.Append(@"Extended Properties=Paradox 5.x;");
        ConnectionString.Append(@"Data Source=C:\Clients\Rail\Wheelsets;");
        _connection.ConnectionString = ConnectionString.ToString(); 
        _connection.Open();
        OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Vehicles;", _connection);
        DataSet dsRetrievedData = new DataSet();
        da.Fill(dsRetrievedData);   
        OleDbCommandBuilder builder = new OleDbCommandBuilder(da);
        da.InsertCommand = builder.GetInsertCommand();
        ////Insert new row
        DataRow rowNew = dsRetrievedData.Tables[0].NewRow();
        rowNew[dsRetrievedData.Tables[0].Columns[0].ColumnName] = "978";
        rowNew[dsRetrievedData.Tables[0].Columns[1].ColumnName] = "222";
        rowNew[dsRetrievedData.Tables[0].Columns[4].ColumnName] = "999";
        rowNew[dsRetrievedData.Tables[0].Columns[5].ColumnName] = "999";
        rowNew[dsRetrievedData.Tables[0].Columns[6].ColumnName] = "999";
        dsRetrievedData.Tables[0].Rows.Add(rowNew);
        dsRetrievedData.Tables[0].AcceptChanges();
        dsRetrievedData.AcceptChanges();
        int result = da.Update(dsRetrievedData);

这就是我使用的代码。如您所见,我有一个悖论表。以及一些如何在这一切结束时结果 = 0。任何想法我的错误是什么?

预先感谢。

-=诺姆=-

4

2 回答 2

0

你的 InsertCommand 是什么?

删除这些行后也尝试

dsRetrievedData.Tables[0].AcceptChanges();
dsRetrievedData.AcceptChanges();

如果您调用 AcceptChanges,则数据表中的所有更改都将被接受,因此没有任何行被更改,因此无需更新

于 2010-12-13T11:00:18.277 回答
0

删除调用AcceptChanges()

dsRetrievedData.Tables[0].AcceptChanges();
dsRetrievedData.AcceptChanges();

根据 MSDN

提交自加载或自上次调用 AcceptChanges 以来对此 DataSet 所做的所有更改。

这意味着,它将新添加的行标记为not new.

于 2010-12-13T11:02:49.070 回答