Обработка баз данных на Visual Basic®.NET
Шрифт:
Передача значения UpdateStatus.SkipCurrentRow свойству Status аргумента события позволяет сообщить адаптеру данных о прекращении операции, т.е. отмене обновления данных, потому что оно не прошло проверку. Но недостаточно просто прекратить выполнение операции, потому что в этом случае пользователь получит пустое текстовое поле (и пустое поле в объекте DataSet). Для решения этой проблемы следует вызвать метод RejectChanges объекта Row, который содержится в аргументе события. Он обновит содержимое
Проверка введенных данных на уровне процессора баз данных
Помимо проверки данных во время ввода информации, следует знать о том, что можно также выполнять проверку и на уровне процессора баз данных. Такая проверка обычно более надежна, поскольку применяется независимо от причины изменения данных. При этом вам не нужно заботиться о реализации правил проверки введенных данных в каждом приложении, которое получает доступ к какой-нибудь таблице. Однако проверка введенных данных на уровне процессора баз данных отличается меньшей гибкостью, поскольку его практически невозможно переопределить, и часто имеет примитивную форму (обычно ограничивается тем, что не допускает ввод в поля пустых значений). Кроме того, проверку введенных данных на уровне процессора баз данных можно выполнять только на уровне поля, и вы не сможете сделать так, чтобы правила проверки введенных данных, реализуемые процессором баз данных, были основаны на сравнении значений двух полей (если только проверка не реализована на основе ограничения первичный/внешний ключ или реализована в серверной процедуре в виде триггера).
Контроль на уровне процессора баз данных является функцией схемы базы данных. Предположим, вы хотите быть уверены в том, что ни одна запись о клиенте не будет введена в таблицу tblCustomer без указания его имени и фамилии. Тогда установите правило проверки введенных данных на уровне процессора баз данных, выполнив перечисленные ниже действия.
1. В окне Server Explorer среды Visual Studio .NET откройте схему таблицы tblCustomer.
2. В столбце Allow Nulls (Допускаются неопределенные значения) снимите флажки FirstName и LastName.
3. Сохраните схему таблицы tblCustomer с помощью команды меню File→Save tblCustomer.
Теперь никакое программное обеспечение, использующее эту базу данных, не сможет ввести запись о клиенте без указания его имени и фамилии. (Любая попытка приведет к возникновению исключительной ситуации.)
Резюме
Эта глава посвящена основам баз данных в целом, а также простейшим способам соединения приложений Visual Basic .NET для работы сданными, хранящимися в базе данных SQL Server. Следует учитывать, что правильно составленная схема базы данных может значительно повысить производительность и практичность приложения. Нормализация, ссылочная целостность и индексирование могут оказаться весьма эффективными для достижения этих целей. Однако помните, что чрезмерное индексирование может привести к обратному эффекту и замедлить работу приложения. В следующих главах приводятся примеры бизнес-ситуаций, в которых следует учитывать эти особенности.
Вопросы и ответы
Существует ли в Visual Studio .NET элемент управления Data, который в Visual Basic 6 можно было успешно использовать для быстрого создания прототипов данных?
Нет. Все функции элемента управления Data, который использовался в Visual Basic 6 и более старых версиях, теперь распределены среди разных объектов данных. Например, соединение с базой данных теперь создается
Можно ли первичный ключ составить из нескольких полей?
Да, хотя такие ключи встречаются нечасто. Они называются конкатенированными ключами. Например, если вы составляете конкатенированный первичный ключ из полей, содержащих имя и фамилию, то это значит, что в такой базе данных нельзя зарегистрировать полных "тезок", поскольку каждое сочетание имени и фамилии должно образовывать уникальное значение.
ГЛАВА 2
Запросы и команды на языке SQL
В главе 1, "Основы построения баз данных", где демонстрируется создание базы данных с помощью Visual Studio .NET и SQL Server, вы познакомились со структурой базы данных и ее таблиц. В настоящей главе основное внимание уделяется манипулированию данными в таблицах, а также созданию и модификации структуры таблиц с помощью языка структурированных запросов (Structured Query Language — SQL).
Благодаря запросам SQL пользователь может выбирать записи из таблицы базы данных, находить связанные с ними данные в других таблицах и манипулировать структурой баз данных. Кроме того, запросы SQL вполне применимы для манипулирования базами данных в программах.
Язык SQL представляет собой стандартный способ управления базами данных. Он реализован в различных формах многими производителями в системах реляционных баз данных, включая Microsoft Access и SQL Server, а также системы, созданные другими поставщиками программного обеспечения, например Oracle и IBM. (Язык SQL обязан своим происхождением разработчикам компании IBM.) Как правило, SQL используется для создания запросов, которые извлекают данные из баз данных, хотя множество команд SQL выполняют и другие действия, например создание таблиц и полей.
Команды SQL делятся на две категории:
• команды языка определения данных (Data Definition Language — DDL), которые позволяют использовать запросы SQL для создания таких компонентов баз данных, как таблицы, поля и индексы;
• команды языка манипулирования данными (Data Manipulation Language которые позволяют извлекать, создавать, удалять и обновлять записи в базе данных.
В этой главе рассматриваются способы использования обеих категорий команд SQL.
Что такое запрос
Запрос (query) — это команда базы данных, осуществляющая выборку записей. Используя запросы, можно получить данные из одного или нескольких полей, принадлежащих одной или нескольким таблицам. При этом данные можно отбирать в соответствии с определенными условиями, называемыми критериями, которые служат для ограничения общего объема отбираемых данных.
Запросы в Visual Basic .NET обычно основаны на SQL. Это стандартный язык для осуществления выборки информации и других операций над базами данных. Он прост в освоении и реализован во многих различных базах данных, поэтому при желании преобразовать свое приложение управления базой данных SQL Server, например, в Sybase или Oracle вам не придется заново изучать совершенно новый язык запросов.