当表没有主键时,是否可以在 C# 中使用 OleDbAdapter 并将其 Update 方法用于数据集,我该怎么做?
问问题
3562 次
4 回答
1
这是VB中的一个例子,它可能会给你一个大致的想法。
于 2009-11-28T19:08:25.767 回答
1
您总是可以使用myTable.Select("myColumn Like 'unique value'");
于 2011-10-04T17:30:08.973 回答
0
可以添加主键吗?
如果没有某种唯一 ID(应该是 PK),则无法知道要更新哪一行。
于 2009-11-28T19:29:19.690 回答
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);
这对我有用。
仅当您确定只有一对一的查询数据时才执行此操作。如果没有,您可能需要添加一些“如果”检查
于 2016-07-05T17:20:37.223 回答