3

当表没有主键时,是否可以在 C# 中使用 OleDbAdapter 并将其 Update 方法用于数据集,我该怎么做?

4

4 回答 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 回答