Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET
- Название:Обработка баз данных на Visual Basic®.NET
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2003
- Город:Москва
- ISBN:5-8459-0512-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET краткое содержание
Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000. Затем рассматриваются способы использования основных объектов модели ADO.NET для доступа к данным в реляционных базах данных. Благодаря подробным примерам, читатели могут изучить способы использования основных свойств и методов, а также узнать о более сложных компонентах и технологиях. Многочисленные листинги с кодом на языке Visual Basic .NET иллюстрируют используемые концепции, а бизнес-ситуации показывают практическую область их применения.
Обработка баз данных на Visual Basic®.NET - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Учтите, что метод RemoveAt способен определять и обрабатывать стандартные исключительные ситуации, например при отсутствии данных или после очистки данных в элементе управления пользовательского интерфейса при вызове метода AddNew. Эта возможность позволяет значительно усовершенствовать методы контроля над связанными сданными элементами управления в прежних версиях Visual Basic, для которых требовалось создавать громоздкий код обработки исключительных ситуаций, возникающих при выполнении пользователями непредсказуемых действий.
Проверка введенных данных в форме, связанной с данными
В программировании баз данных проверка введенных данных (validation) гарантирует, что эти данные отвечают правилам, определенным при проектировании приложения. Эти правила называются правилами проверки данных (validation rules). Один из способов проверки данных при программировании приложения на основе Windows Forms состоит в написании кода для события RowUpdating объекта DataAdapter. Событие RowUpdating возникает как раз перед обновлением записи, а событие Row-Updated — сразу после обновления записи. Размещая код проверки введенных данных в событие RowUpdating, можно быть уверенным в том, что будут обрабатываться любые изменения данных в любой части приложения.
Ключевым фактором эффективного использования события RowUpdating является использование свойств и методов аргумента события, который представлен в виде экземпляра объекта System.Data.SqlClient.SqlClient.SqlRowUpdatingEventArgs.
Кроме проверки команды обновления записи (с помощью свойства Command объекта), можно проинформировать адаптер данных DataAdapter об отказе от обновления и откате внесенных изменений. В листинге 1.4 этот подход иллюстрирует рассмотренный ранее пример приложения для просмотра данных.
Private Sub SqlDataAdapter1_RowUpdating(ByVal sender As Object, _
ByVal e As System.Data.SqlClient.SqlRowUpdatingEventArgs) _
Handles SqlDataAdapter1.RowUpdating
If e.Row.Item("FirstName") = "" Or e.Row.Item("LastName") = "" Then
MsgBox("Change not saved; customer must have a first and last name.")
e.Status = UpdateStatus.SkipCurrentRow
e.Row.RejectChanges()
End If
End Sub
Передача значения UpdateStatus.SkipCurrentRow свойству Status аргумента события позволяет сообщить адаптеру данных о прекращении операции, т.е. отмене обновления данных, потому что оно не прошло проверку. Но недостаточно просто прекратить выполнение операции, потому что в этом случае пользователь получит пустое текстовое поле (и пустое поле в объекте DataSet). Для решения этой проблемы следует вызвать метод RejectChanges объекта Row, который содержится в аргументе события. Он обновит содержимое пользовательского интерфейса и сообщит объекту DataSet о том, что больше не нужно согласовывать эту строку с базой данных. После этого можно продолжать редактирование данных, не беспокоясь об их безопасности.
Проверка введенных данных на уровне процессора баз данных
Помимо проверки данных во время ввода информации, следует знать о том, что можно также выполнять проверку и на уровне процессора баз данных. Такая проверка обычно более надежна, поскольку применяется независимо от причины изменения данных. При этом вам не нужно заботиться о реализации правил проверки введенных данных в каждом приложении, которое получает доступ к какой-нибудь таблице. Однако проверка введенных данных на уровне процессора баз данных отличается меньшей гибкостью, поскольку его практически невозможно переопределить, и часто имеет примитивную форму (обычно ограничивается тем, что не допускает ввод в поля пустых значений). Кроме того, проверку введенных данных на уровне процессора баз данных можно выполнять только на уровне поля, и вы не сможете сделать так, чтобы правила проверки введенных данных, реализуемые процессором баз данных, были основаны на сравнении значений двух полей (если только проверка не реализована на основе ограничения первичный/внешний ключ или реализована в серверной процедуре в виде триггера).
Контроль на уровне процессора баз данных является функцией схемы базы данных. Предположим, вы хотите быть уверены в том, что ни одна запись о клиенте не будет введена в таблицу 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 и более старых версиях, теперь распределены среди разных объектов данных. Например, соединение с базой данных теперь создается с помощью отдельного объекта SqlConnection, операции извлечения, обновления и удаления данных — с помощью объектов BindingContext и DataAdapter, а операции перемещения по записям — с помощью объекта BindingContext. В отличие от прежних объектов для работы с данными, новые объекты не имеют никакого визуального представления во время выполнения, что позволяет разработчику создавать практически любые виды пользовательского интерфейса для работы с данными.
Можно ли первичный ключ составить из нескольких полей?
Да, хотя такие ключи встречаются нечасто. Они называются конкатенированными ключами. Например, если вы составляете конкатенированный первичный ключ из полей, содержащих имя и фамилию, то это значит, что в такой базе данных нельзя зарегистрировать полных "тезок", поскольку каждое сочетание имени и фамилии должно образовывать уникальное значение.
Читать дальшеИнтервал:
Закладка: