У меня возникла такая же проблема, когда я использовал стороннюю базу данных. У них нет первичных ключей в их базе данных, но у них есть комбинация уникальных полей.
Сначала создайте таблицу данных и заполните ее результатом запроса, используя уникальное условие.
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);
Это работает для меня.
Делайте это только тогда, когда вы уверены, что есть только один на один запрос данных. Если нет, вы можете добавить проверку "если"