Здравствуйте, Fortnum, Вы писали:
F>Господа, а как через OleDb в .NET получить ошибку о том, что нарушены правила ссылочной целостности, когда пытаешься удалить, вставить или изменить запись в таблице? Метод OleDbCommand.ExecuteNonQuery для запроса "DELETE FROM MyTable WHERE Id = 137" возвращает 0, но то ли потому, что такой записи с Id = 137 не существует, то ли потому, что нельзя ее удалить, т.к. на нее ссылаются в других таблицах. Как правильно различить эти две ситуации? Он бы хоть эксепшн с номером ошибки поднимал, а как еще?
Вообще-то это зависит от базы данных и ExecuteNonQuery тут не причем. К примеру в Firebird в вашем случае будет сгенерировано исключение.
Попробуйте подписаться на сообщение OleDbConneciton.InfoMessage . Возможно ваш OLE DB провайдер не интерпретирует сообщения от сервера БД как ошибки, а присваивает им более низкий уровень чем требует ADO .Net