C #: обновить набор данных без какого-либо первичного ключа

StackOverflow https://stackoverflow.com/questions/1813424

Вопрос

Можно ли в C # использовать OleDbAdapter и использовать его метод Update для набора данных, когда у таблицы нет первичного ключа, и как я могу это сделать?

Это было полезно?

Решение

Вот пример в VB, который может дать вам общее представление.

Другие советы

Вы всегда можете найти строку, используя myTable.Select (" myColumn Like 'unique value' ");

Можете ли вы добавить первичный ключ?

Без какого-либо уникального идентификатора (которым должен быть 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);

Это работает для меня.

Делайте это только тогда, когда вы уверены, что есть только один запрос данных. Если нет, возможно, вы захотите добавить «если» проверка

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top