Введение в DELPHI

       

Алиасы


Таблицы сохраняются в базе данных. Некоторые СУБД сохраняют базу данных в виде нескольких отдельных файлов, представляющих собой таблицы (в основном, все локальные СУБД), в то время как другие состоят из одного файла, который содержит в себе все таблицы и индексы (InterBase). Например, таблицы dBase и Paradox всегда сохраняются в отдельных файлах на диске. Директорий, содержащий dBase .DBF файлы или Paradox .DB файлы, рассматривается как база данных. Другими словами, любой директорий, содержащий файлы в формате Paradox или dBase, рассматривается Delphi как единая база данных. Для переключения на другую базу данных нужно просто переключиться на другой директорий. Как уже было указано выше, InterBase сохраняет все таблицы в одном файле, имеющем расширение .GDB, поэтому этот файл и есть база данных InterBase.

Удобно не просто указывать путь доступа к таблицам базы данных, а использовать для этого некий заменитель - псевдоним, называемый алиасом. Он сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации. Поэтому использование алиасов позволяет легко переходить от локальных баз данных к SQL-серверным базам (естественно, при выполнении требований разделения приложения на клиентскую и серверную части).

Для создания алиаса запустите утилиту конфигурации BDE (программу BDECFG.EXE), находящуюся в директории, в котором располагаются динамические библиотеки BDE.

По умолчанию, при установке Delphi создается директорий IDAPI, в котором и располагаются указанные библиотеки; при этом иконка с BDECFG обязательно будет присутствовать в группе Delphi.

Главное окно утилиты настройки BDE имеет вид, изображенный на рис.1. Для создания алиаса выберите страничку "Aliases" и нажмите кнопку "New Alias". В появившемся диалоговом окне введите имя алиаса и выберите его тип (тип базы данных) из выпадающего списка. Тип алиаса может быть стандартным (STANDARD) для работы с локальными базами в формате dBase или Paradox или соответствовать наименованию SQL-сервера (InterBase, Sybase, Informix, Oracle и т.д.).

Рис. 1: Главное окно утилиты конфигурации BDE

Рис. 2: В диалоговом окне добавления нового алиаса можно указать имя алиаса и тип базы данных

После создания нового алиаса его имя появится в списке алиасов на той же страничке "Aliases". Однако просто создать алиас не достаточно. Вам нужно указать дополнительную информацию, содержание которой зависит от типа выбранной базы данных. Например, для баз данных Paradox и dBase (STANDARD) требуется указать лишь путь доступа к данным:

TYPESTANDARD
PATHc:\users\data

SQL-сервер InterBase требует задания десяти параметров, многие из которых можно оставить установленными по умолчанию (кроме, обычно, параметров SERVER NAME и USER NAME):



TYPEINTRBASE
PATH
SERVER NAMEmyserv:g:\users\contacts.gdb
USER NAMESYSDBA
OPEN MODEREAD/WRITE
SCHEMA CACHE SIZE8
LANGDRIVERPdox ANSI Cyrillic
SQLQRYMODE 
SQLPASSTHRU MODESHARED AUTOCOMMIT
SCHEMA CACHE TIME-1

В этом примере база данных CONTACTS.GDB размещается в директории USERS, находящемся на диске G Windows NT сервера, называющегося MYSERV. Имя пользователя при связи с базой данных по этому алиасу - SYSDBA. Остальные параметры - LANGDRIVER, SQLQRYMODE, SQLPASSTHRU MODE, SCHEMA CACHE SIZE и SCHEMA CACHE TIME рассмотрим подробней.

Параметр LANGDRIVER определяет языковый драйвер для доступа к базе данных. Для правильной работы с русскими буквами при работе с базой данных формата dBase нужно выбрать значение "dBASE RUS cp866", при работе с базами данных формата Paradox и SQL-серверами (в том числе InterBase) - "Pdox ANSI Cyrillic". Кроме того, на этапе создания базы данных InterBase необходимо указать CHARACTER SET (набор символов) WIN1251.

Параметр SQLQRYMODE появляется только в случае, если установлен Borland SQL Links для связи с SQL-серверами. Он определяет режим передачи SQL-запросов и может иметь три значения:

  • NULL (пустая строка - режим по умолчанию) - запрос сначала посылается на SQL-сервер. Если сервер не может выполнить запрос, последний обрабатывается локально (это актуально для распределенных баз данных);
  • SERVER - запрос посылается на SQL-сервер. Если сервер не может выполнить запрос, генерируется ошибка;
  • LOCAL - запрос всегда выполняется на рабочей станции.

Параметр SQLPASSTHRU MODE определяет, могут ли запросы, передаваемые для выполнения на сервер (passthrouh SQL, использующие set-ориентированный подход), и стандартные вызовы BDE (использующие record-ориентированный навигационный подход) обрабатываться в одном и том же сеансе соединения с базой данных (в одном и том же "коннекте") - быть "SHARED". Он также может иметь три значения:

  • SHARED AUTOCOMMIT (значение по умолчанию) - для каждой операции по одной строке таблицы автоматически стартует неявная транзакция, которая, в случае успеха, завершается оператором COMMIT (закрепляющим произведенные изменения). Такой подход наилучшим образом подходит для работы с локальными базами, но неэффективен для SQL-серверных баз данных, так как стартующие каждый раз новые транзакции значительно загружают сетевой траффик.
  • SHARED NOAUTOCOMMIT - приложение должно явно стартовать и завершать транзакцию. Эта установка может привести к конфликтам в многопользовательской среде, где большое количество пользователей пытаются обновить одну и ту же строку таблицы.
  • NOT SHARED - означает, что запросы, передаваемые для выполнения на сервер (passthrouh SQL), и стандартные вызовы BDE (методы Delphi) используют раздельные соединения ("коннекты") с базой данных. Для управления транзакциями через "passthrouh SQL" необходимо устанавливать именно это значение, иначе "passthrouh SQL" и методы Delphi могут интерферировать друг с другом, что, в свою очередь, может привести к непредсказуемым результатам.

В параметре SCHEMA CACHE SIZE указывается число таблиц базы данных, информация о структуре которых будет кэшироваться, обеспечивая быстрый доступ к метаданным. Значение этого параметра может быть целым числом от 0 до 32. По умолчанию установлено число 8.

Параметр SCHEMA CACHE TIME определяет время, в течение которого будет кэшироваться информация из таблиц базы данных. Может иметь следующие значения:

  • -1 (значение по умолчанию) - информация из таблиц кэшируется до самого закрытия базы данных;
  • 0 - информация из таблиц вообще не кэшируется;
  • 1 - 2,147,483,647 - информация из таблиц кэшируется в течение указанного времени (в секундах).

Напомним, что установки по умолчанию параметров SQLQRYMODE, SQLPASSTHRU MODE, SCHEMA CACHE SIZE и SCHEMA CACHE TIME обеспечивают достаточно оптимальный режим работы с базой данных. Экспериментировать с ними для достижения наибольшей эффективности работы с конкретной базой данных желательно только после накопления некоторого опыта работы с BDE.

Остановимся подробней на задании такого важного параметра, как SERVER NAME. В нем нужно указать не только имя сервера (на котором находится Ваша база данных) и полный путь доступа к базе, но и сетевой протокол. Создатели утилиты настройки BDE не сочли нужным выделять протокол в отдельный параметр, поэтому необходимо использовать следующие выражения:

  • для доступа по протоколу TCP/IP- IB_SERVER:PATH\DATABASE.GDB. Например, путь к базе на Windows NT сервере будет выглядеть следующим образом - mynt:c:\ib\base.gdb, а к базе на UNIX-сервере - myunix:/ib/base.gdb;
  • для доступа по протоколу IPX/SPX- IB_SERVER@PATH\DATABASE.GDB. Например: mynw@sys:ib\base.gdb;
  • для доступа по протоколу NETBEUI- \\IB_SERVER\PATH\DATABASE.GDB.
    Например: \\mynt\c:\ib\base.gdb.
В этих примерах mynt - имя сервера Windows NT, myunix - имя сервера UNIX-системы, mynw - имя сервера Novell NetWare, sys - имя тома NetWare, ib - директорий, в котором находится база данных, base.gdb - имя базы данных InterBase. Для того чтобы правильно указать имя сервера Oracle, нужно писать имя по правилам Oracle - перед именем поставить @. Замечание. При доступе к SQL-серверным базам данных параметр PATH должен оставаться пустым, иначе ядро баз данных не сможет определить истинный путь к Вашей базе, и будет сгенерирована ошибка.



Содержание раздела