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。 任何想法我的错误是什么?
先谢谢。
- = =诺姆 -
答案 0 :(得分:0)
您的InsertCommand是什么?
删除这些行后再尝试
dsRetrievedData.Tables[0].AcceptChanges();
dsRetrievedData.AcceptChanges();
如果调用AcceptChanges,则接受数据表中的所有更改,因此没有更改的行,因此无需更新
答案 1 :(得分:0)
删除对AcceptChanges()
的调用:
dsRetrievedData.Tables[0].AcceptChanges();
dsRetrievedData.AcceptChanges();
提交对此所做的所有更改 DataSet自加载或之后 AcceptChanges的最后一次 调用。
这意味着,它将新添加的行标记为not new
。