当表没有主键时,C#中是否可以使用OleDbAdapter并将其Update方法用于数据集?如何进行此操作?
答案 0 :(得分:1)
Here's an example,可能会给你一个大概的想法。
答案 1 :(得分:1)
您始终可以使用myTable.Select("myColumn Like 'unique value'");
答案 2 :(得分:0)
可以添加主键吗?
如果没有某种唯一ID(应该是PK),那么就无法知道要更新的行。
答案 3 :(得分:0)
当我使用第三方数据库时,我遇到了同样的问题。他们的数据库中没有主键,但他们确实拥有独特的字段组合。
首先,创建一个数据表,并使用唯一条件用查询结果填充它。
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(sqlstring, ACCESS_dbConnection);
adapter.Fill(dt);
其次,按列替换ds与更新的数据。
foreach (DataColumn col in datarow.Columns)
{
Debug.WriteLine(col.ColumnName);
ds.Rows[0][col.ColumnName] = datarow.Rows[0][col.ColumnName];
}
然后,您可以更新。
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
adapter.UpdateCommand = cb.GetUpdateCommand();
adapter.InsertCommand = cb.GetInsertCommand();
adapter.Update(ds);
这适合我。
只有在您确定只有一个查询数据时才会执行此操作。如果没有,你可能想要添加一些" if"检查