【发布时间】:2010-12-21 06:27:50
【问题描述】:
当表没有主键时,是否可以在 C# 中使用 OleDbAdapter 并将其 Update 方法用于数据集?我该怎么做?
【问题讨论】:
标签: c# dataset primary-key dataadapter
当表没有主键时,是否可以在 C# 中使用 OleDbAdapter 并将其 Update 方法用于数据集?我该怎么做?
【问题讨论】:
标签: c# dataset primary-key dataadapter
我在使用第三方数据库时遇到了同样的问题。它们的数据库中没有主键,但它们确实具有唯一的字段组合。
首先,创建一个数据表,并使用唯一条件将查询结果填充到其中。
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);
这对我有用。
只有在您确定只有一对一的查询数据时才这样做。如果没有,您可能需要添加一些“如果”检查
【讨论】:
你总是可以使用myTable.Select("myColumn Like 'unique value'");找到一行
【讨论】:
可以添加主键吗?
如果没有某种唯一 ID(应该是 PK),则无法知道要更新哪一行。
【讨论】:
Here's an example 在 VB 中,这可能会给你一个大致的概念。
【讨论】: