Проверка данных в наборах данных
Проверка данных представляет собой процесс подтверждения того, что значения, вводимые в объекты данных, соответствуют ограничениям в схемах наборов данных, а также правилам, установленным для приложения. Проверка данных до отправки обновлений в основную базу данных является хорошей практикой, которая уменьшает вероятность появления ошибок, а также ожидаемое количество циклов обработки между приложением и базой данных. Чтобы подтвердить, что данные, записываемые в набор данных, верны, можно выполнить проверки в самом наборе данных. Набор данных может проверить данные независимо от того, как производится обновление: напрямую, элементами управления в форме, внутри компонента или каким-либо другим способом. Поскольку набор данных является частью приложения, логично именно в нем реализовать проверку, учитывающую особенности данного приложения (в отличие от аналогичных проверок в самой базе данных).
Добавить проверки в приложение предлагается в файл частичного класса набора данных. В Visual Basic или Visual C# откройте Конструктор наборов данных и дважды щелкните столбец или таблицу, для которых необходимо создать проверку. Это действие автоматически создает обработчик событий ColumnChanging или RowChanging. Дополнительные сведения см. в разделе Практическое руководство. Проверка данных в ходе изменения столбцов или Практическое руководство. Проверка данных в ходе изменения строк. Полный пример содержится в разделе Пошаговое руководство. Добавление проверки в набор данных.
Проверка данных
Проверка в наборе данных может быть выполнена следующим образом:
Путем создания для приложения собственных проверок, которые могут проверять данные во время изменения значений в отдельных столбцах. Дополнительные сведения см. в разделе Практическое руководство. Проверка данных в ходе изменения столбцов.
Путем создания для приложения собственных проверок, которые могут проверять данные во время изменения значений при изменении строки данных целиком. Дополнительные сведения см. в разделе Практическое руководство. Проверка данных в ходе изменения строк.
Путем создания ключей, ограничений уникальности и т. д. как части определения действительной схемы набора данных. Дополнительные сведения о включении проверки в определение схемы см. в разделе Практическое руководство. Установка столбца данных в качестве первичного ключа Практическое руководство. Наложение ограничения уникальности значений на столбец данных.
Путем задания свойств объекта DataColumn, например MaxLength, AllowDBNull и Unique.
Есть несколько событий, инициируемых объектом DataTable при внесении изменений в запись:
События ColumnChanging и ColumnChanged вызываются во время и после каждого изменения отдельных столбцов. Событие ColumnChanging полезно, когда нужно проверить изменения в отдельных столбцах. Сведения о предлагаемом изменении передаются как аргумент с событием. Дополнительные сведения см. в разделе Практическое руководство. Проверка данных в ходе изменения столбцов.
События RowChanging RowChanged вызываются во время и после любого изменения в строке. Событие RowChanging является более общим в том смысле, что оно лишь указывает, что где-то в строке происходит изменение, не указывая на столбец. Дополнительные сведения см. в разделе Практическое руководство. Проверка данных в ходе изменения строк.
По умолчанию каждое изменение столбца инициирует четыре события: сначала события ColumnChanging и ColumnChanged для отдельного столбца, который в данный момент изменяется, а затем события RowChanging и RowChanged. Если в строку вносится несколько изменений, события будут инициироваться для каждого изменения.
Примечание
Метод BeginEdit строки данных отключает события RowChanging и RowChanged после каждого изменения отдельных столбцов.В этом случае событие не инициируется до вызова метода EndEdit, когда события RowChanging и RowChanged инициируются только один раз.Дополнительные сведения см. в разделе Практическое руководство. Отключение ограничений при заполнении набора данных.
Выбор события зависит от желаемой степени детализации проверки. Если важно перехватить ошибку непосредственно при изменении столбца, создайте проверку с помощью события ColumnChanging. В противном случае используйте событие RowChanging, которое может перехватывать сразу несколько ошибок. Кроме того, если данные структурированы таким образом, что значение одного столбца проверяется на основе содержимого другого столбца, необходимо выполнять проверку во время события RowChanging.
По окончании обновления записей объект DataTable инициирует события, на которые можно отвечать по мере того, как появляются изменения, и после того, как все изменения уже сделаны.
Если приложение использует типизированный набор данных, можно создавать строго типизированные обработчики событий. Это добавит четыре дополнительных типизированных события, для которых можно создать обработчики; dataTableNameRowChanging, dataTableNameRowChanged, dataTableNameRowDeleting и dataTableNameRowDeleted. Эти обработчики типизированных событий передают аргумент, который включает имена столбцов пользовательской таблицы, упрощающий написание и чтение кода.
События обновления данных
Событие |
Описание |
---|---|
Значение в столбце изменяется. Событие передает строку и столбец, а также предлагаемое новое значение. |
|
Значение в столбце изменено. Событие передает строку и столбец, а также предлагаемое значение. |
|
Изменения, внесенные в объект DataRow, будут зафиксированы в наборе данных. Если метод BeginEdit не вызывался, событие RowChanging инициируется для каждого изменения в столбце сразу после инициирования события ColumnChanging. Если же метод BeginEdit вызывался до внесения изменений, событие RowChanging инициируется только при вызове метода EndEdit. Событие передает строку и значение, указывающее, какое действие выполняется (изменение, вставка и т. д.). |
|
Строка изменена. Событие передает строку и значение, указывающее, какое действие выполняется (изменение, вставка и т. д.). |
|
Строка удаляется. Событие передает строку и значение, указывающее, какое действие выполняется (удаление). |
|
Строка удалена. Событие передает строку и значение, указывающее, какое действие выполняется (удаление). |
События ColumnChanging, RowChanging и RowDeleting вызываются во время процесса обновления. Эти события могут быть использованы для проверки данных или выполнения других операций по обработке данных. Поскольку обновления выполняются во время работы этих событий, можно отменить обновление с помощью создания исключения, что не позволит изменениям выполниться до конца.
События ColumnChanged, RowChanged и RowDeleted являются уведомляющими событиями, инициируемыми после успешного окончания обновления. Эти события очень полезны, если в дальнейшем требуется продолжать работу, используя выполненное обновление.
См. также
Задачи
Практическое руководство. Подключение к данным в базе данных
Практическое руководство. Проверка данных элемента управления DataGridView в Windows Forms