Технология Microsoft ADO.NET

       

Обработка исключений


В процессе передачи изменений в базу данных могут возникать многочисленные исключения. Объекты DataSet, DataTable и DataRow имеют свойство HasErrors, позволяющее обрабатывать некоторые из них. Скопируйте папку приложения GetChangesMethod и назовите ее "Exceptions". Изменим обработчик события Closing формы следующим образом:

private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) { try { sqlDataAdapter1.Update(dataSet11); } catch(Exception ex) { if(dataSet11.HasErrors) { foreach( DataTable myTable in dataSet11.Tables) { if(myTable.HasErrors) { foreach(DataRow myRow in myTable.Rows) { if(myRow.HasErrors) { MessageBox.Show("Ошибка в записи #: " + myRow["Кодтуриста"], myRow.RowError); foreach(DataColumn myColumn in myRow.GetColumnsInError()) { MessageBox.Show(myColumn.ColumnName, " - в этом столбце ошибка"); } myRow.ClearErrors(); myRow.RejectChanges(); } } } } } } }

Здесь мы пробегаемся по каждому объекту6) , входящему в набор DataTable, DataRow или DataColumn.

Метод ClearErrors удаляет все ошибки из объекта myRow, а метод RejectChanges производит откат всех изменений. Запускаем приложение. Переходим в SQL Server Enterprise Manager, в режиме дизайна таблицы "Туристы" изменим название поля "Фамилия". При закрытии формы и попытке внести изменения появляется диагностическое сообщение (рис. 13.22, А):


Рис. 13.22.  Обработка исключений

Закроем приложение, восстановим название поля - правильное название нам также нужно для получения данных. Запустим его снова, изменим название таблицы. В этом случае появляется другое сообщение (рис. 13.22, Б).

В программном обеспечении к курсу вы найдете приложение Exceptions (Code\Glava6\Exceptions).

  1)

  Если вы хорошо знаете Microsoft Access, вы можете самостоятельно создать эти запросы в режиме конструктора, выбирая их соответствующие типы.

  2)

  Если вы забыли, как это делается, вернитесь к пятой Главе.

  3)

  Этот фрагмент является переводом статьи "Database Updates from Datasets" из MSDN (заголовок раздела "Updating Related Tables").

  4)

  Просто перейдите в окно "Server Explorer" и перетащите на форму таблицу из узла базы данных имеющегося подключения, затем сгенерируйте объект DataSet.

  5)

  Для последующего сравнения будет более удобным установить цвет шрифта обоих документов черным.

  6)

  Разумеется, для отображения одной таблицы "Туристы" у нас будет всего один объект DataTable.

Содержание раздела