Джеффри П. Мак-Манус Джеки Голдштейн Кевин Т. Прайс Обработка баз данных на Visual Basic®.NET 3-е издание Database Access with Visual Basic®.NET Third Edition Jeffrey P. McManus Jackie Goldstein Kevin T. Price Addison-Wesley Предисловие Для кого предназначена эта книга Структура книги Используемое программное обеспечение Об авторах О соавторе О рецензентах Благодарности ГЛАВА 1 Основы построения баз данных Что представляет собой база данных Что такое платформа базы данных Бизнес-ситуации Бизнес-ситуация 1.1: основные сведения о компании Jones Novelties Incorporated Таблицы и поля Проектирование базы данных Бизнес-ситуация 1.2: проектирование таблиц и отношений Манипулирование данными с помощью объектов Типы данных Схема базы данных Использование инструментов Visual Studio для создания базы данных Определение индексов и первичного ключа Создание схемы базы данных Использование программы Microsoft Visio для просмотра и изменения схемы базы данных Отношения Использование ссылочной целостности для поддержания непротиворечивости данных Проверка ограничений ссылочной целостности с помощью Server Explorer Каскадные обновления и каскадные удаления Нормализация Отношения типа один-к-одному Отношения типа один-ко-многим Отношения типа многие-ко-многим Создание пользовательского интерфейса на основе Windows Forms Подключение к базе данных и работа с записями Создание приложения для просмотра данных Программный способ связывания данных Элементы управления, взаимодействующие с данными Обновление записей в приложении просмотра данных Создание новых записей в форме, связанной с данными Удаление записей из связанной с данными формы Проверка введенных данных в форме, связанной с данными Проверка введенных данных на уровне процессора баз данных Резюме Вопросы и ответы ГЛАВА 2 Запросы и команды на языке SQL Что такое запрос Тестирование запросов с помощью компонента Server Explorer Отбор записей с помощью предложения SELECT Указание источника записей с помощью предложения FROM Формирование критериев с использованием предложения WHERE Операторы, используемые в предложении WHERE Оператор BETWEEN Оператор LIKE и символы шаблона Оператор IN Сортировка результатов с помощью предложения ORDER BY Сортировка в убывающей последовательности Сортировка по нескольким полям Отображение первых или последних записей диапазона с помощью предложения ТОР Создание запросов TOP PERCENT Объединение связанных таблиц в запросе Выражение объединения в SQL Использование конструктора представлений для создания объединений Использование внешних объединений Выполнение вычислений в запросах Определение псевдонимов с использованием предложения AS Запросы, которые группируют данные и подводят итоги Применение предложения HAVING для группирования данных в запросах Функция SUM Перечень итоговых функций Запросы на объединение Подзапросы Манипулирование данными с помощью SQL Запросы на обновление Запросы на удаление Запрос на добавление записей Запросы на основе команды SELECT INTO Использование языка определения данных Создание элементов базы данных с помощью предложения CREATE Добавление ограничений в таблицу Назначение внешнего ключа Создание индексов с помощью команды CREATE INDEX Удаление таблиц и индексов с помощью предложения DROP Модификация структуры таблицы с помощью предложения ALTER Резюме Вопросы и ответы ГЛАВА 3 Знакомство с SQL Server 2000 Установка и запуск Microsoft SQL Server Требования для инсталляции SQL Server 2000 Установка SQL Server 2000 Запуск и остановка SQL Server Управление способом запуска SQL Server Основы работы с SQL Server 2000 Запуск программы SQL Server Enterprise Manager Создание базы данных с помощью программы SQL Server Enterprise Manager Создание таблиц в базе данных SQL Server Использование программы SQLServer Enterprise Manager для создания таблиц базы данных SQL Server Создание идентификационного поля для уникальной идентификации записей Использование других методов для генерации первичных ключей Создание поля с первичным ключом Использование программы SQL Query Analyzer для доступа к базе данных Просмотр всех объектов базы данных с помощью хранимой процедуры sp_help Использование существующей базы данных Создание команд SQL в программе Query Analyzer Использование представлений для управления доступом к данным Создание представлений с помощью программы SQL Server Enterprise Manager Использование представлений в приложениях Создание представления с помощью программы SQL Query Analyzer Создание и запуск хранимых процедур Запуск хранимых процедур в окне программы SQL Query Analyzer Создание хранимой процедуры с помощью программы SQL Query Analyzer Отображение текста существующих представлений или хранимых процедур Создание триггеров Бизнес-ситуация 3.1: создание триггера для поиска созвучных слов Управление пользователями и средства безопасности с помощью программы SQL Server Enterprise Manager Создание и сопровождение учетных записей пользователей Управление ролями с помощью программы SQL Server Enterprise Manager Тестирование системы безопасности с помощью программы SQL Query Analyzer Применение ограничений безопасности в программе SQL Query Analyzer Определение подключенных пользователей Завершение процесса с помощью команды KILL Удаление объектов базы данных Бизнес-ситуация 3.2: SQL-сценарий для создания базы данных Резюме Вопросы и ответы ГЛАВА 4 Модель ADO.NET: провайдеры данных Обзор технологии ADO.NET Мотивация и философия Поддержка распределенных приложений и отсоединенной модели программирования Расширенная поддержка XML Интеграция с .NET Framework Внешний вид объектов ADO.NET ADO.NET И ADO 2.X Место ADO.NET в архитектуре .NET Framework Прикладные интерфейсы Провайдеры данных ADO.NET Провайдер данных SqICIient Провайдер данных Oledb Провайдер данных Odbc Основные объекты Объект Connection Объект Command Применение объекта Command с параметрами и хранимыми процедурами Выполнение команд Метод ExecuteNonQuery Метод ExecuteScalar Метод ExecuteReader Объект DataReader Использование объектов Connection и Command во время создания приложения Другие провайдеры данных Бизнес-ситуация 4.1: создание процедуры для архивирования старых заказов по годам Резюме Вопросы и ответы ГЛАВА 5 ADO.NET: объект DataSet Компоненты объекта DataSet Ввод данных в объект DataSet Определение схемы объекта DataTable Вставка данных в объект DataTable Обновление данных в объекте DataSet Состояние и версия записи Обработка ошибок ввода данных в записи и поля Доступ к данным с помощью объекта DataTable Поиск, фильтрация и сортировка записей Отношения между таблицами Ограничения Применение объекта DataSet Резюме Вопросы и ответы ГЛАВА 6 ADO.NET: объект DataAdapter Передача данных из источника данных в объект DataSet Обновление источника данных Указание команд обновления Использование объекта CommandBuilder Явное указание команд обновления Вставка бизнес-логики в команды обновления Использование компонента DataAdapter во время создания приложения Бизнес-ситуация 6.1: комбинация нескольких связанных таблиц Резюме Вопросы и ответы ГЛАВА 7 ADO.NET: дополнительные компоненты Обнаружение конфликтов при параллельном доступе к данным Отображения таблиц и полей Объект DataView Бизнес-ситуация 7.1: просмотр данных из разных источников Строго типизированные наборы данных Резюме Вопросы и ответы ГЛАВА 8 Работа с проектом базы данных среде Visual Studio .NET Создание проекта базы данных Ссылки на базы данных Сценарии Сценарии создания данных Сценарии изменения данных Запуск сценария Командные файлы Запросы Резюме Вопросы и ответы ГЛАВА 9 XML И .NET Обзор XML Семейство технологий XML XML и доступ к данным Классы XML на платформе .NET Применение модели Document Object Model Применение технологии XPATH Утилита SQLXML Инсталляция и конфигурирование утилиты SQLXML Результаты конфигурирования Применение XML, XSLT и SQLXML для создания отчета Резюме Вопросы и ответы ГЛАВА 10 ADO.NET и XML Основные принципы чтения и записи XML-данных Чтение XML-данных Запись XML-данных Формат DiffCram Бизнес-ситуация 10.1: подготовка XML-файлов для бизнес-партнеров Создание объекта XmlReader с помощью объекта Command Объект XmlDataDocument Резюме Вопросы и ответы ГЛАВА 11 Web-формы: приложения на основе ASP.NET для работы с базами данных Обзор технологии ASP.NET HTML-элементы управления и серверные элементы управления Дополнительные преимущества технологии ASP.NET Доступ к базе данных с помощью ASP.NET Включение учетной записи ASP.NET в состав учетных записей SQL Server Применение параметра TRUSTED_CONNECTION Применение элемента управления DataGrid Повышение производительности приложений с помощью хранимых процедур Резюме Вопросы и ответы ГЛАВА 12 Web-службы и технологии промежуточного уровня Применение промежуточного уровня для презентационной логики Обработка данных на промежуточном уровне Создание повторно используемых компонентов промежуточного уровня Использование компонента в другом приложении Доступ к объектам с помощью Web-служб Публикация существующего компонента с помощью Web-службы Доступ к Web-службе программными средствами Заключительные замечания Резюме Вопросы и ответы
Удаление записей из связанной с данными формы Для удаления записей из связанной с данными формы на основе Windows Forms нужно использовать метод RemoveAt объекта BindingContext. Этот метод принимает один параметр – индекс удаляемой записи. Для организации удаления текущей записи нужно использовать свойство Position в качестве параметра метода RemoveAt объекта BindingContext, как показано в листинге 1.3.
Листинг 1.3. Удаление данных в приложении для работы с данными с помощью метода RemoveAt объекта BindingContext Private Sub btnDelete_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDelete.Click
If MsgBox("Whoa bubba, you sure?", MsgBoxStyle.YesNo, "Delete record") = MsgBoxResult.Yes Then
With Me.BindingContext(DsCustomer1, "tblCustomer")
RemoveAt(.Position)
End With
End If
End Sub
Этот код основан на созданной перед этим кнопке btnDelete. Учтите, что эта процедура запрашивает пользователей, действительно ли они хотят удалить запись. Этот запрос позволяет избежать неприятных последствий в случае, если пользовательский интерфейс создан так, что пользователь может случайно удалить запись, щелкая на кнопке Delete. (Обратите внимание, что, кроме этого способа на основе диалогового окна с предупреждением об удалении записи, можно применять более сложные методы отката ошибочных изменений данных. Однако описание таких сложных конструкций выходит за рамки данной главы.)
Учтите, что метод RemoveAt способен определять и обрабатывать стандартные исключительные ситуации, например при отсутствии данных или после очистки данных в элементе управления пользовательского интерфейса при вызове метода AddNew. Эта возможность позволяет значительно усовершенствовать методы контроля над связанными сданными элементами управления в прежних версиях Visual Basic, для которых требовалось создавать громоздкий код обработки исключительных ситуаций, возникающих при выполнении пользователями непредсказуемых действий.