Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование лекции.doc
Скачиваний:
49
Добавлен:
12.11.2019
Размер:
5.53 Mб
Скачать

30.1. Основы языка sql

Итак, для доступа к БД используются выражения специального языка запросов SQL (Structured Query Language). Язык SQL включает несколько операторов для работы с данными, но пока нам достаточно знать всего один, главный – SELECT. Вот его общий вид:

SELECT {поля} FROM {имя файла БД}

[WHERE {условие}] [ORDER BY {поля}]

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

Чтобы запросить всю БД из файла с именем DVD.db со всеми полями, следует выполнить оператор SQL

SELECT * FROM DVD

Здесь символ "*" означает "все поля базы". Имя файла необязательно брать в кавычки. Это приходится делать, если оно совпадает с одним из ключевых слов SQL (см. приложение).

Чтобы запросить не всю базу, а некоторую выборку, т.е. только те записи, которые отвечают какому-то условию, используется конструкция WHERE. Например, если мы хотим увидеть только диски с фильмами, вышедшими в 2003 году, следует задать условие YEARF = 2003 (вспомним, что YEARF – это имя поля в нашей базе):

SELECT * FROM DVD WHERE YEARF=2003

Наконец, базу можно отсортировать (упорядочить) по какому-то полю. Например, выведем названия дисков в алфавитном порядке:

SELECT * FROM DVD ORDER BY NAME_RUSSIAN

SQL корректно сортирует русские буквы. В одном операторе SQL можно комбинировать несколько условий, например:

SELECT * FROM DVD WHERE YEARF=2003 OR YEARF=2004

ORDER BY YEARF, NAME_RUSSIAN

Такой запрос означает: "выбрать из базы DVD такие записи, у которых в поле YEARF записано значение 2003 или 2004, а затем отсортировать их сначала по возрастанию значений в поле YEARF, а затем по алфавиту по полю NAME_RUSSIAN".

30.2. Понятие алиаса

Обратите внимание, что в приведенных примерах использования языка SQL после слова FROM указывается только имя файла БД без пути к нему. А как же наша программа узнает, где именно на диске лежит наш файл dvd.db?

Путь к БД, используемой той или иной программой, хранится не в самой этой программе, а в настройках сервера BDE. Оказывается он там двумя способами: либо при установке программы, либо программа сама прописывает этот путь в начале своей работы. Хранение пути вне программы снимает все вопросы, связанные с переносом файлов с машины на машину, на сетевой диск и т.д. – достаточно изменить путь алиаса при помощи программы BDE Administrator.

Пути к БД в BDE хранятся в виде алиасов (англ. alias – кличка). Каждый алиас имеет уникальное имя – его вы придумываете сами. В алиасе записываются тип используемой БД, путь к директории, где находятся файлы БД, и некоторые другие параметры (например, кодовая таблица символов или пароль доступа к БД).

Предположим, что файл dvd.db находится в директории С:\TEST\Data. Давайте сначала создадим алиас вручную. Запустите программу BDE Administrator (ее ярлык находится в разделе Borland Delphi главного меню). В дереве слева отображаются уже существующие на вашем компьютере алиасы.

Рис. 30.122 Экран программы BDE Administrator.

Выполните команду меню ObjectNew. В появившемся окошке преджлагается на выбор формат вашей БД. Для баз Paradox оставьте значение по умолчанию STANDARD. В дереве появляется новый пункт с именем по умолчанию типа STANDARD1. Поменяйте его на придуманное вами имя алиаса DVD. В окне справа щелкните по копке с тремя точками в строке PATH таблицы свойств алиаса (Рис. 30 .122). В открывшемся диалоге выберите директорию С:\TEST\Data. Все, алиас создан. Для сохранения внесенных изменений щелкните по кнопке и закройте BDE Administrator.

30.3. SQL в Delphi

Подключимся к нашей базе данных dvd.db с использованием алиасов и SQL. Снова создаем приложение и модуль данных.

На модуль данных надо поместить следующие компоненты:

- Session (закладка BDE);

- Database (закладка BDE);

- Query (закладка BDE).

Компонент Session (сессия) отвечает за управление работой BDE. Компонент Database (база данных) связывает программу с той директорией на диске, где находятся используемые файлы БД. Компонент Query (запрос) позволяет отправить запрос на SQL-сервер и получить с сервера выборку данных.

Рис. 30.123 Структура компонентов при доступе к распределенной БД

Дайте всем этим компонентам более короткие названия (поле Name в инспекторе объектов): Session вместо Session1; Database вместо Database1; DVD вместо Table1.

Компонент Session

Д ля этого компонента в инспекторе объектов надо задать следующие значения свойств:

Active - False. В начальный момент работы программы сессия должна быть закрыта.

SessionName – здесь вы вводите придуманное вами имя сессии, используемое во всех остальных компонентах. Например, можно назвать сессию DVDSes.

Остальные поля можно не трогать.

Компонент Database

Connected – False. В начальный момент работы программы база данных должна быть закрыта.

LoginPrompt – False. Данное свойство, будучи установленным в True, вызывает вывод окна ввода имени пользователя и пароля для подключения к БД.

DatabaseName - здесь вы вводите придуманное вами имя базы данных. Например, можно назвать сессию DVDDB.

SessionName – то имя сессии, которое вы ввели в поле SessionName компонента Session (его можно выбрать из раскрывающегося списка).

Компонент Query

Active – False. В начальный момент работы программы запрос должен быть закрыт.

DatabaseName - то имя базы данных, которое вы ввели в поле DataBaseName компонента Database (его можно выбрать из раскрывающегося списка).

SessionName – то имя сессии, которое вы ввели в поле SessionName компонента Session (его можно выбрать из раскрывающегося списка).

RequestLive – True. Если БД будет необходимо редактировать, данное свойство надо поставить в True.

SQL – самое главное свойство. Сюда заносится собственно текст SQL-запроса. В нашем случае это SELECT * FROM DVD