当表没有主键时,C#中是否可以使用OleDbAdapter并将其Update方法用于数据集?如何进行此操作?

有帮助吗?

解决方案

这是VB中的一个示例,可能会给您一个大致的想法。

其他提示

您始终可以使用 myTable.Select(" myColumn Like'unclusive value'")找到一行;

可以添加主键吗?

如果没有某种唯一ID(应该是PK),那么就无法知道要更新的行。

当我使用第三方数据库时,我遇到了同样的问题。它们的数据库中没有主键,但它们确实具有唯一的字段组合。

首先,创建一个数据表,并使用唯一条件用查询结果填充它。

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”检查

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top