Книга: Обработка баз данных на Visual Basic®.NET
Обработка ошибок ввода данных в записи и поля
Обработка ошибок ввода данных в записи и поля
В модели ADO.NET предусмотрен гибкий механизм определения и обработки ошибок ввода данных в записи и поля объекта DataTable. Этот механизм позволяет использовать в приложении правила проверки вводимых данных, сообщать об обнаруженных ошибках, но откладывать их исправление до определенного момента в потоке выполнения приложения. (Не путайте их с обычными системными исключительными ситуациями времени выполнения, которые обрабатываются стандартными конструкциями платформы.NET Framework на основе операторов Try-Catch-Finally.)
Если приложение обнаруживает ошибку ввода данных, то оно создает описание найденной ошибки для записи или отдельного поля. Для обозначения наличия ошибки в отдельной записи используется свойство RowError объекта DataRow, например ему присваивается строка с комментарием "Something wrong here" (Здесь произошла какая-то ошибка).
myDataRow.RowError = "Something wrong here"
А для обозначения наличия ошибки в отдельном поле используется метод SetColumnError объекта DataRow, например с его помощью присваивается строка с комментарием "Bad data in this column" (Неверные данные в этом поле).
myDataRow.SetColumnError (2, "Bad data in this column")
Для извлечения строк с сообщениями о таких ошибках в полях или записях можно использовать свойство RowError или вызвать метод GetColumnError. Для сброса значения свойства RowError нужно присвоить ему пустую строку (" ") или использовать метод ClearErrors объекта RowError, который очищает свойство RowError и удаляет все сообщения об ошибках, заданные методом SetColumnError.
Объект DataRow содержит свойство HasErrors, которое имеет значение True, если в поле или записи обнаружены какие-либо ошибки. Значение этого свойства отображается на свойство HasErrors объекта DataTable, которое при наличии ошибок в поле или записи также равно True. Аналогично, если свойство HasErrors для любой таблицы DataTable объекта DataSet имеет значение True, то значение свойства HasErrors объекта DataSet также равно True. Метод GetErrors объекта DataTable возвращает массив объектов DataRow, которые содержат ошибки. В целом этот простой механизм позволяет быстро определить любые ошибки ввода данных, как показано в листинге 5.3.
Листинг 5.3. Пример обнаружения ошибок во всех таблицах объекта DataSet
Private Sub ResolveErrors(myDataSet as DataSet)
Dim rowsWithErrors() As DataRow
Dim myTable As DataTable
Dim myCol As DataColumn
Dim currRow As Integer
For Each myTable In myDataSet.Tables
If myTable.HasErrors Then
' Извлечение всех записей с ошибками.
RowsWithErrors = myTable.GetErrors()
For currRow = 0 To rowsWithErrors.GetUpper
For Each myCol In myTable.Columns
' Найти поля с ошибками и выбрать
' способ их обработки.
' Ошибка в поле извлекается с помощью метода
' rowsWithErrors(currRow).GetColumnError(myCol)
Next
' очистка ошибок.
rowsWithErrors(currRow).ClearErrors
Next currRow
End If
Next
End Sub
- Обновление данных в объекте DataSet
- Резервное копирование базы данных InterBase
- Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Владелец базы данных
- ЧАСТЬ IV. База данных и ее объекты.
- Перевод базы данных InterBase 6.x на 3-й диалект
- Типы данных для работы с датой и временем
- Практическая работа 53. Запуск Access. Работа с объектами базы данных
- Обзор основных причин повреждения базы данных
- Перехват ошибок