Опубликован: 05.08.2007 | Доступ: свободный | Студентов: 2201 / 83 | Оценка: 4.47 / 4.09 | Длительность: 20:11:00
ISBN: 978-5-9556-0097-0
Лекция 13:

Передача изменений в базу данных при помощи хранимых процедур. Объект CommandBuilder

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

В процессе передачи изменений в базу данных могут возникать многочисленные исключения. Объекты 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., входящему в набор DataTable, DataRow или DataColumn.

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

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

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

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

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