C#:更新没有任何主键的数据集

时间:2009-11-28 19:02:55

标签: c# dataset primary-key dataadapter

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

4 个答案:

答案 0 :(得分:1)

VB中的

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