Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Проверка данных

Чтобы убедиться, что данные в приложении отвечают требованиям процессов, которым они передаются, часто приходится добавлять проверку. Это может включать в себя проверку правильности данных, введенных пользователем в форму, а также проверку данных, отправленных пользовательскому приложению другим приложением, или даже проверку для установления того, что сведения, вычисленные в пользовательском компоненте, подпадают под ограничения источника данных и требований приложения.

Данные можно проверять несколькими способами:

  • На бизнес-уровне – путем добавления в приложение кода для проверки данных. Набор данных – одно из мест, где это можно сделать. Набор данных предоставляет некоторые преимущества внутренней проверке, такие как возможность проверять изменения значений столбцов и строк. Дополнительные сведения см. в разделе Проверка данных в наборах данных.

  • На уровне представления, путем добавления проверки к формам. Дополнительные сведения см. в разделе Проверка введенных пользователем данных в Windows Forms.

  • Проверка серверной части осуществляется путем отсылки данных в источник данных, например в базу данных, и разрешения ему принимать или не принимать данные. При работе с базой данных с расширенными возможностями проверки данных и предоставления сведений об ошибках это может оказаться очень удобным, так как дает возможность проверки данных независимо от того, откуда они пришли. Тем не менее этот способ может быть неприспособленным к индивидуальным требованиям проверки приложения. Кроме того, если источник данных выполняет проверку данных, это может привести к многочисленным циклам обработки источника данных в зависимости от того, как приложение способствует разрешению выявленных при проверке ошибок, вызванных сервером.

Примечание по безопасности. При использовании команд для обработки данных со свойством CommandType, равным Text, внимательно проверьте сведения, которые отправляются клиентом, перед передачей их базе данных. Злоумышленники могут попытаться отправить (вставить) измененные или дополнительные инструкции SQL в целях получения несанкционированного доступа к базе данных или ее повреждения. Перед передачей в базу данных сведений, введенных пользователем, обязательно проверяйте допустимость этих сведений. Рекомендуется использовать запросы с заданными параметрами или, по возможности, сохраненные процедуры. Дополнительные сведения см. в разделе Общие сведения об использовании скриптов.

Как обновление передается источнику данных

После внесения изменений в наборе данных изменения можно передать источнику данных. Чаще всего это делается путем вызова метода Updateадаптера таблицTableAdapter(или адаптера данных). Метод обрабатывает каждую запись в таблице данных; если требуется, определяет необходимый тип обновления (обновление, вставка, удаление), а затем выполняет соответствующую команду.

В следующем примере выполнения обновления предполагается, что приложение использует набор данных, содержащий только одну таблицу данных. Приложение извлекает две строки из базы данных. После получения информации таблица данных, расположенных в памяти, выглядит следующим образом.

(RowState) CustomerID Name Status

(Unchanged) c200 Robert Lyon Good

(Unchanged) c400 Nancy Buchanan Pending

Приложение меняет статус Nancy Buchanan на "Preferred". В результате выполнения этого изменения значение свойстваRowStateдля данной строки меняется сUnchangedнаModified. Значение свойства для первой строкиRowStateостается равнымUnchanged. Теперь таблица выглядит следующим образом:

(RowState) CustomerID Name Status

(Unchanged) c200 Robert Lyon Good

(Modified) c400 Nancy Buchanan Preferred

После этого приложение вызывает метод Updateдля передачи набора данных в базу данных. Метод просматривает строку за строкой. Для первой строки метод не передает базе данных никаких инструкций SQL, так как эту строку не изменяли после ее извлечения из базы данных.

Однако для второй строки метод Updateавтоматически вызывает соответствующую команду данных и передает ее базе данных. Особенности синтаксиса инструкций SQL зависят от диалекта SQL, поддерживаемого основным хранилищем данных. Однако необходимо отметить общие черты передаваемых инструкций SQL.

  • Передаваемая инструкция SQL является инструкцией UPDATE. Адаптер данных знает, как использовать инструкции UPDATE, так как в значении свойства RowStateуказаноModified.

  • Передаваемая инструкция SQL включает в себя предложение WHERE, указывающее, что целью инструкции UPDATE является строка со значением CustomerID = 'c400'. Эта часть инструкции SELECT выбирает нужную строку среди других, так как параметр CustomerID является первичным ключом целевой таблицы. Сведения о предложении WHERE являются производными от исходной версии записи (DataRowVersion.Original) в случае, если значения, необходимые для идентификации строки, были изменены.

  • Передаваемая инструкция SQL включает в себя предложение SET для установки новых значений измененных столбцов.

Примечание. Если в качестве значения свойства UpdateCommand адаптера таблиц было выбрано имя сохраненной процедуры, адаптер не создает инструкцию SQL. Вместо этого он вызывает сохраненную процедуру с соответствующими переданными параметрами.