Джеффри П. Мак-Манус Джеки Голдштейн Кевин Т. Прайс Обработка баз данных на 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-службе программными средствами Заключительные замечания Резюме Вопросы и ответы
Отображение первых или последних записей диапазона с помощью предложения ТОР Ключевое слово ТОР используется для отображения некоторого количества начальных или конечных записей из большого результирующего набора. Для ограничения числа записей в результирующем наборе ключевое слово ТОР в запросах сочетается с предложением, указывающим порядок сортировки. Причем ключевое слово ТОР можно комбинировать как с числом, означающим количество записей, так и с числом, означающим процентное содержание отображаемых записей.
Например, необходимо отобрать три наиболее крупных заказа из числа последних заказов в таблице tblOrder. Для этого воспользуйтесь приведенной ниже инструкцией SQL.
SELECT ID, OrderDate, CustomerID
FROM tblOrder
ORDER BY OrderDate DESC
Обратите внимание, что ключевое слово DESC сортирует результирующий набор по убыванию. В результате выполнения этого запроса из таблицы tblOrder будут извлечены сведения о заказах каждого клиента, причем сначала будут располагаться самые последние заказы. Все просто прекрасно, за исключением того, что в базе данных, которая хранит информацию обо всех когда-либо выполненных заказах, придется просмотреть тысячи записей, в то время как вас интересуют только три наиболее крупных заказа. Поэтому вместо предыдущей команды попробуйте выполнить приведенную ниже инструкцию SQL.
SELECT TOP 3 *
FROM tblOrder
ORDER BY OrderAmount DESC
В результате выполнения этого запроса из таблицы tblOrder будут извлечены три записи для наиболее крупных заказов.
Почему же запрос вернул четыре записи вместо запрошенных трех? Такой запрос (ТОР 3) вовсе не гарантирует, что будут возвращены только три записи. Возможно, что результирующий набор будет содержать одну или две записи (или даже ни одной), если в таблице содержится только такое количество записей. А если на последнее место в результирующем наборе претендуют две и более записи, то вполне возможно, что будут возвращены четыре или даже большее количество записей.
В синтаксисе SQL нет понятия BOTTOM N, но зато есть возможность возвратить заданное количество последних записей в таблице. Для того чтобы создать такой запрос, достаточно отсортировать записи в возрастающей последовательности (т.е. от самого малого значения к самому большому), как показано ниже.
SELECT TOP 3 *
FROM tblOrder
ORDER BY OrderDate
Этот запрос показывает три самых "древних" заказа в базе данных.
Сортировка данных в порядке возрастания в SQL принимается по умолчанию. Поэтому нет необходимости использовать ключевое слово ASC для задания порядка сортировки по возрастанию.