无法使用OleDBAdapter将行插入表

时间:2010-12-13 10:54:27

标签: c# odbc paradox insert-into

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。 任何想法我的错误是什么?

先谢谢。

- = =诺姆 -

2 个答案:

答案 0 :(得分:0)

您的InsertCommand是什么?

删除这些行后再尝试

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

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

答案 1 :(得分:0)

删除对AcceptChanges()的调用:

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

According to MSDN

  

提交对此所做的所有更改   DataSet自加载或之后   AcceptChanges的最后一次   调用。

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