2.Настроіть алиас за допомогою BDE.
3.Організувати запит до БД, ісользуя Tquery.
Рекомендації по реалізації та опис програмного інструментарію див. Нижче.
8.1 Borland Database Engine (BDE)
Розглянемо Borland Database Engine (BDE) - ядро баз даних компанії Борланд, а також навчимося створювати і редактіроватьаліаси - механізм, що полегшує зв'язок з базами даних. Крім того, ми вивчимо, як конфігурувати ODBC драйвери.
8.1.1 Сутність BDE
Потужність і гнучкість Delphi при роботі з базами даних заснована на низкоуровневом ядрі - процесорі баз даних Borland Database Engine (BDE). Його інтерфейс з прикладними програмами називається Integrated Database Application Programming Interface (IDAPI). В принципі, зараз не розрізняють ці дві назви (BDE і IDAPI) і вважають їх синонімами. BDE дозволяє здійснювати доступ до даних як з використанням традиційного record-орієнтованого (навігаційного) підходу, так і з використанням set-орієнтованого підходу, що використовується в SQL-серверах баз даних. Крім BDE, Delphi дозволяє здійснювати доступ до баз даних, використовуючи технологію (і, відповідно, драйвери) Open DataBase Connectivity (ODBC) фірми Microsoft. Але, як показує практика, продуктивність систем з використанням BDE набагато вище, ніж оних при використанні ODBC. ODBC драйвера працюють через спеціальний "ODBC socket", який дозволяє вбудовувати їх в BDE.
Всі інструментальні засоби баз даних Borland- Paradox, dBase, Database Desktop - використовують BDE. Всі особливості, які є в Paradox або dBase, "успадковуються" BDE, і тому цими ж особливостями володіє і Delphi.
8.1.2 Аліаси
Таблиці зберігаються в базі даних. Деякі СУБД зберігають базу даних у вигляді декількох окремих файлів, що є таблиці (в основному, всі локальні СУБД), в той час як інші складаються з одного файлу, який містить в собі всі таблиці та індекси (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.
У цьому прикладі база даних CONTACTS.GDBразмещается в діректорііUSERS, що знаходиться на діскеGWindows 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 повинен залишатися порожнім, інакше ядро баз даних не зможе визначити істинний шлях до Вашої базі, і буде згенеровано помилка.