Какая строка набора данных нарушает уникальное ограничение БД? - PullRequest
2 голосов
/ 02 октября 2009

Я пишу приложение, используя c # 2005 и Sql Server 2000.

У меня есть таблица с уникальным ограничением, и, в случае, если меня интересует, у меня есть два пользователя, использующих форму, которая (при нажатии Сохранить) обновляет таблицу.

Если таблица, скажем, NAMES (ID int, NAME varchar (20)) и уникальное ограничение для NAME, если первый сохраняемый пользователь добавляет имена NAME 'David' и 'John', тогда это нормально. Если второй пользователь пытается выполнить обновление, используя DataTable, который содержит строки с ИМЕНАМИ «Джон» и «Сьюзен», то генерируется исключение SqlException. Однако в исключении нет ничего, что сообщало бы мне, какая строка в моей DataTable нарушила ограничение.

Кроме получения сведений о составе уникального ограничения из БД и последующего использования этой информации для проверки каждой строки в моей таблице данных, чтобы увидеть, нарушает ли эта строка ограничение, существует ли способ определить, какая строка является ошибочной?

Ответы [ 2 ]

2 голосов
/ 02 октября 2009

Вы должны использовать DataTable.GetErrors , чтобы получить массив DataRows с ошибками.

Для каждой DataRow в массиве вы должны проверить DataRow.RowError и какие столбцы содержат ошибку с DataRow.GetColumnsInError .

1 голос
/ 02 октября 2009

Кроме того, возможно, что строки в DataTable просто конфликтуют друг с другом, и, таким образом, операция базы данных завершается сбоем, даже если ничего не зафиксировано в базе данных, конфликтует с DataTable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...