Наталия Елманова
Если созданное с помощью С++ Builder приложение в процессе работы обращается к базам данных, оно, как правило, использует для этой цели библиотеку BDE (Borland Database Engine), основанную на технологии IDAPI (Integrated Database Application Program Interface). Эта библиотека устанавливается автоматически при установке С++ Builder. По умолчанию она устанавливается в каталог C:\Program Files\Borland\Common Files\BDE.
Следует отметить, что файлы, входящие в состав библиотеки BDE, предназначены для использования не только приложениями, созданными с помощью С++ Builder, но и многими другими продуктами Borland (Visual dBase, Paradox, Delphi, Borland C++, IntraBuilder), созданными на их основе приложениями, а также офисными приложениями Corel (например, электронной таблицей Quattro Pro), генератором отчетов Crystal Reports (Seagate Software) . Поэтому при наличии нескольких использующих BDE приложений все 32-разрядные приложения (в том числе C++ Builder) используют установленную последней 32-разрядную версию BDE. В этом случае по умолчанию программа установки C++ Builder предложит поставить BDE в каталог, где установлена уже используемая версия BDE.
Рис.1. Связь приложений с источниками данных с помощью BDE
BDE обеспечивает для созданных приложений:
При возникновении необходимости доступа к данным в большинстве случаев для их источника (как правило, это какая-либо конкретная база данных) создается псевдоним (alias), имя которого используется приложением. Параметры этого и других псевдонимов, а также параметры настройки драйверов баз данных содержатся в файле idapi32.cfg, расположенном в том же каталоге, что и файлы BDE. Для изменения содержания этого файла, а также значений соответствующих этой библиотеке ключей реестра Windows 95 и Windows NT используется утилита конфигурации BDE - BDECFG32.EXE.
Утилита конфигурации состоит из одной формы, содержащей блокнот из шести страниц.
Страница Drivers содержит параметры доступа к различным типам данных.
Страница Aliases содержит сведения о псевдонимах источников данных, к которым посредством BDE обращаются приложения, установленные на данном компьютере.
Страница System содержит параметры настройки работы самой библиотеки BDE, связанные с использованием памяти, сетевого окружения и других ресурсов, доступных использующим BDE приложениям. Эти параметры содержатся в реестре Windows 95 (или Windows NT).
Страницы Date, Time, Number содержат правила отображения в приложениях календарных дат, времени и числовых данных в соответствии с правилами, принятыми в той или иной стране.
Для настройки драйверов баз данных используется страница Drivers утилиты настройки BDE. В левой части этой страницы имеется список доступных для BDE драйверов, куда входят драйверы для dBase и Paradox, установленные на данном компьютере драйверы SQL Links для доступа к серверным СУБД, а также имена ODBC-источников данных, созданные с помощью 32-разрядного администратора ODBC панели управления Windows (рис. 5.2).
Рис. 2. Настройка драйверов баз данных
При нажатии на кнопку New ODBC Driver можно добавить в список новый ODBC-источник данных (перед этим, естественно, следует установить соответствующий ODBC-драйвер и описать источник данных с помощью ODBC-администратора в панели управления Windows). Можно также удалить ODBC-драйвер из файла конфигурации BDE (Delete ODBC Driver).
В правой части страницы Drivers указаны параметры выбранного в списке драйвера. При настройке драйверов следует заменить параметры, указанные по умолчанию, на значения, специфические для выбранного источника данных (например, языковый драйвер, правила обработки запросов, имя сервера и базы данных, тип сетевого протокола для доступа к серверу, номер версии). Эти наборы параметров различны для различных драйверов баз данных .
Для доступа приложений к данным средства разработки Borland используют механизм псевдонимов, описывающих доступ к конкретным источникам данных. Создать описание нового источника данных можно, нажав кнопку New Alias в левой части окна (рис. 6.3, 6.4).
Рис. 3. Выбор псевдонима БД и установка параметров
После этого в появившейся диалоговой панели следует ввести имя-псевдоним для этого источника и выбрать нужный драйвер из предложенного списка (того, что определен на странице Drivers). Имя STANDARD в этом случае соответствует таблицам dBase, Paradox и текстовым файлам (в формате CSV - Comma Separated Value).
Рис. 4.Создание нового псевдонима БД
В правой части страницы Aliases содержатся параметры конкретных источников данных, которые можно модифицировать, заменяя значения по умолчанию (в том числе унаследованные с предыдущей страницы), например, имена каталогов, серверов, имя пользователя по умолчанию, языковый драйвер и др.
Страница системных настроек позволяет указать параметры системы и сети, используемые BDE и хранящиеся в реестре Windows (рис. 5, табл. 1).
Рис. 5. Страница System утилиты конфигурации BDE.
Таблица 1. Параметры системы и сети, используемые BDE.
Параметр | Описание | Значение по умолчанию |
---|---|---|
VERSION | версия BDE | |
LOCAL SHARE | Если этот параметр равен true, можно использовать одни и те же данные приложениями, использующими BDE, и приложениями, не использующими BDE | FALSE |
MINBUFSIZE | Минимальный размер буфера оперативной памяти для кэширования данных из БД. Возможные значения - от 32 до 65535 Кб, но не более, чем объем доступной Windows оперативной памяти | |
MAXBUFSIZE | Максимальный размер буфера оперативной памяти для кэширования данных из БД. Должен быть выше, чем MINBUFSIZE, но не более, чем объем доступной Windows оперативной памяти. Должен быть кратен 128. | 2048 |
LANGDRIVER | Языковый драйвер, соответствующий национальной версии операционной системы | |
MAXFILEHANDLES | Максимальное число файлов, открываемых BDE. Может принимать целые значения от 5 до 256 | 48 |
SYSFLAGS | Внутренний параметр BDE | |
LOW MEMORY USAGE LIMIT | Максимально допустимый объем основной памяти, используемый BDE | 32 |
AUTO ODBC | если этот параметр принимает значение true, используются все ODBC-источники из файла ODBC.INI | FALSE |
DEFAULT DRIVER | драйвер, используемый первым, если тип БД - FILE, и имя таблицы не имеет расширения. | |
SQLQRYMODE | Метод исполнения запросов к серверам. Может принимать значения NULL, SERVER, LOCAL | NULL |
SHAREDMEMSIZE | Максимальный размер для разделяемой оперативной памяти | 2048 |
SHAREDMEMLOCATION | Предпочтительный адрес для размещения разделяемой области памяти. | E000 (Windows 95) 7000(Windows NT) |
Страница Date позволяет указать параметры отображения дат (см. табл.2).
Таблица 2. Параметры настройки отображения дат
Параметр | Описание | Значение по умолчанию |
---|---|---|
SEPARATOR | Символ-разделитель числа, месяца и года | Значение, содержащееся в настройках панели управления Windows 95/NT |
MODE | Параметр, определяющий порядок следования числа. месяца и года. Может принимать значения: 0(MDY), 1( DMY), 2(YMD). | Значение, содержащееся в настройках панели управления Windows 95/NT |
FOURDIGITYEAR | Параметр, определяющий отображаемое число цифр года. Может принимать значения: TRUE (4 цифры), FALSE (2 цифры) | TRUE |
YEARBIASED | Параметр, определяющий, прибавлять или нет 1900 к значению года, если предыдущий параметр равен FALSE | TRUE |
LEADINGZEROM | Параметр, определяющий, указывать ли лидирующие нули перед значением месяца, если оно является однозначным числом. | FALSE |
LEADINGZEROD | Параметр, определяющий, указывать ли лидирующие нули перед значением числа, если оно является однозначным числом. | FALSE |
Страница Time позволяет указать параметры отображения времени (см. табл. 3).
Таблица 3. Параметры настройки отображения времени
Параметр | Описание | Значение по умолчанию |
---|---|---|
TWELVEHOUR | Параметр, определяющий интервал отображения часов: 0-12 (TRUE) или 0-24 (FALSE) | TRUE |
AMSTRING | Символьная строка для указания первой половины дня, если TWELVEHOUR=TRUE | AM |
PMSTRING | Символьная строка для указания второй половины дня, если TWELVEHOUR=TRUE | PM |
SECONDS | Параметр, определяющий, указывать ли секунды в значении времени | TRUE |
MILSECONDS | Параметр, определяющий, указывать ли миллисекунды в значении времени . | FALSE |
Страница Number позволяет указать параметры отображения числовых данных (табл. 4).
Таблица 4. Параметры настройки отображения чисел
Параметр | Описание | Значение по умолчанию |
---|---|---|
DECIMALSEPARATOR | Символ, отделяющий дробную часть числа | Значение, содержащееся в настройках панели управления Windows 95/NT |
THOUSANDSEPARATOR | Символ, отделяющий друг от друга "тройки" разрядов в многозначных числах | Значение, содержащееся в настройках панели управления Windows 95/NT |
DECIMALDIGITS | Максимальное число десятичных разрядов числа, полученного при преобразовании символьной строки | 2 |
LEADINGZERON | Параметр, определяющий, указывать ли нуль перед дробной частью числа, чье абсолютное значение меньше единицы | TRUE |
Средства языковой настройки BDE представляют собой набор так называемых языковых драйверов, устанавливающих набор символов, используемых в данных, и порядок алфавитной сортировки для используемого языка. Языковые драйверы Borland существуют для большого количества языков, в том числе и для русского.
При описании параметров драйвера баз данных (страница Drivers) следует указывать языковый драйвер, предлагаемый для баз данных этого типа по умолчанию. При создании нового псевдонима (страница Aliases) следует указывать, какой языковый драйвер используется в базе данных, иначе будет использоваться языковый драйвер, установленный по умолчанию для данного драйвера баз данных.
Отметим, что в общем случае языковая настройка баз данных и использующих их приложений включает в себя не только настройку параметра LANGDRIVER на страницах Drivers, Aliases и System. Некоторые СУБД имеют свои средства языковой настройки, причем эти средства могут быть многоуровневыми. Например, в случае использования какой-либо серверной СУБД может потребоваться, помимо настройки BDE, настройка языковых параметров сервера, настройка аналогичных параметров клиентской части или даже выбор соответствующей языковой версии сервера. Подробнее эти проблемы будут рассмотрены чуть позже.
Помимо этого, существует проблема, связанная с различиями DOS- и Windows-кодировок для русского языка. Языковые драйверы BDE существуют для обеих кодировок. Какой из них выбрать, зависит от многих факторов: наличия и объема унаследованных данных, наличия других приложений, использующих эти же данные и др. Например, разумно, используя таблицы формата dBase III совместно с приложениями для DOS, созданными на Clipper, применить DOS-кодировку для этих таблиц.
При работе с таблицами dBase настройка соответствующего драйвера сводится к настройке следующих параметров:
Параметр | Описание | Значение по умолчанию |
---|---|---|
VERSION | Внутренний параметр BDE | 1.0 |
TYPE | Тип сервера (SQL-сервер или файловый сервер) | FILE |
LANGDRIVER | Языковый драйвер, определяющий набор символов и порядок алфавитной сортировки | dBASE ENU cp437 |
LEVEL | Версия формата dBase при создании таблиц | 5 |
MDX BLOCK SIZE | Размер блока, отводимого под индексные файлы *.mdx. Может быть целым числом, кратным 512 K | 1024 |
MEMO FILE BLOCK SIZE | Размер блока, отводимого под файлы memo-полей *.dbt. Может быть целым числом, кратным 512 K | 1024 |
При установке параметров псевдонима нужно указать значение параметра PATH - пути к каталогу, где расположены таблицы базы данных (это может быть и сетевой диск).
С языковой настройкой таблиц dBase обычно не возникает проблем. Для DOS-кодировки обычно используется языковый драйвер dBASE RUS cp866, а для Windows - 'ascii' ANSI.
Следует отметить, что к таблицам dBase можно обращаться, используя ODBC.
Особое внимание следует обратить на то, что расширение *.dbf имеют не только таблицы формата dBase, но и таблицы Clipper, FoxBase, FoxPro. Однако эти СУБД могут иметь другой формат индексных файлов и мемо-полей, которые в явном виде могут не поддерживаться библиотекой BDE (например, индексы *.cdx). В этом случае рекомендуется либо доступ через ODBC (что не всегда эффективно с точки зрения производительности), либо использование библиотек третьих фирм, обеспечивающих интерфейс с такими СУБД (например, Apollo компании SuccessWare).
При работе с таблицами Paradox настройка соответствующего драйвера сводится к настройке следующих параметров:
Параметр | Описание | Значение по умолчанию |
---|---|---|
VERSION | Внутренний параметр BDE | 1.0 |
TYPE | Тип сервера (SQL-сервер или файловый сервер) | FILE |
NET DIR | Местоположение файла PDOXUSRS.NET, управляющего совместным использованием таблиц Paradox в сети. | FILE |
LANGDRIVER | Языковый драйвер, определяющий набор символов и порядок алфавитной сортировки | 'ascii'ANSI |
LEVEL | Версия формата Paradox при создании таблиц (3,4,5 или 7) | 5 |
BLOCK SIZE | Размер блока, отводимого для хранения записей таблиц Paradox. Может быть целым числом, кратным 1024 K. Возможные значения зависят от значения параметра LEVEL. | 2048 |
FILL FACTOR | Максимальный процент заполнения блока для индексных файлов. | 95 |
STRICTINTEGRTY | Параметр, определяющий, могут ли таблицы Paradox модифицироваться приложениями, не поддерживающими ссылочную целостность. | TRUE |
Как и в случае dBase, русские языковые драйверы для Paradox существуют для обеих кодировок - и DOS, и Windows. Однако указание на используемый язык содержится еще и внутри самих таблиц. Поэтому при создании таблицы Paradox (например, с помощью Database Desktop) следует обязательно указать используемый языковый драйвер при описании свойств таблицы. Как показывает опыт, при неверном определении языка таблицы могут возникнуть проблемы при последующем вводе в нее данных, содержащих русские буквы - некоторые из них после выхода из редактируемого поля могут превратиться в латинские.
При работе с ODBC-источниками требуется настройка следующих параметров:
Параметр | Описание | Значение по умолчанию |
---|---|---|
VERSION | Внутренний параметр BDE | 1.0 |
TYPE | Идентификатор ODBC-источника | FILE |
DLL | Имя 16-разрядной динамической библиотеки, содержащей драйвер | IDODBC16.DLL |
DLL32 | Имя 32-разрядной динамической библиотеки, содержащей драйвер | IDODBC32.DLL |
ODBC DRIVER | ODBC-драйвер для соединения с сервером | |
DRIVER FLAGS | Внутренний параметр BDE | |
USER NAME | Имя пользователя в диалоге ввода пароля | |
ODBS DSN | Имя источника данных, описанного в администраторе ODBC | |
OPEN MODE | Параметр, определяющий, в каком режиме открываются таблицы - READ/WRITE eee READ ONLY | READ/WRITE |
LANGDRIVER | Языковый драйвер, определяющий набор символов и порядок алфавитной сортировки | 'ascii'ANSI |
SCHEMA CASHE SIZE | Число таблиц, чья структура кэшируется. Возможные значения - от 0 до 32 | 8 |
SQLQRYMODE | Метод выполнения запросов. Возможные значения: LOCAL - запрос обрабатывается только клиентским приложением, SERVER - запрос выполняется только сервером, NULL (пустая строка) - запрос передается клиенту, если сервер не может его обработать. | NULL |
SQLPASSTHRU MODE | Определяет режим совместного использования одного и того же псевдонима направляемыми на сервер и локальными запросами: NOT SHARED - совместное использование запрещено, SHARED AUTOCOMMIT - совместное использованием разрешено с автоматическим завершением транзакций, SHARED NOAUTOCOMMIT - совместное использованием разрешено с завершением транзакций по правилам сервера. | SHARED AUTOCOMMIT |
TRACE MODE | Численное значение, определяющее уровень вывода отладочной информации. | |
SCHEMA CACHE TIME | Время нахождения информации о структуре таблиц в кэше в секундах от 1 до 2147483647. Другие значения: -1 - до закрытия БД, 0 - информация не кэшируется | -1 |
BATCH COUNT | Число записей, помещаемых в пакет до завершения транзакции | Число записей, умещающихся в 32 К. |
MAX ROWS | Максимальное число записей, которые драйвер может доставить на рабочую станцию при выполнении одиночного SQL-запроса | -1 (нет ограничений) |
ROWSET SIZE | Число записей, доставляемых в одном блоке данных (поддерживается не всеми ODBC- драйверами). | 20 |
При создании псевдонимов баз данных на страницу Aliases по умолчанию заносятся параметры со страницы Drivers для соответствующего ODBC-драйвера. При необходимости многие из них можно переопределить.
Ряд ODBC-источников требует указания параметра PATH - пути к каталогу, где находится база данных.
Следует обратить внимание на то, что перед описанием ODBC-источника в файле конфигурации BDE обязательно нужно установить соответствующий ODBC-драйвер и описать соответствующий источник данных в панели управления Windows 95/NT, используя соответствующий ODBC-администратор. При этом следует обратить внимание на некоторую терминологическую неувязку. Дело в том, что ODBC-драйвер с точки зрения BDE, создаваемый при нажатии кнопки New ODBC Driver на странице Drivers утилиты конфигурации BDE, на самом деле представляет собой указание не на реальный ODBC-драйвер, установленный в панели управления Windows, а на конкретный источник данных, доступ к которому осуществляется с помощью реального ODBC-драйвера (с точки зрения панели управления). При этом следует еще создать и соответствующий псевдоним базы данных, что окончательно сбивает с толку некоторых начинающих пользователей. Таким образом, последовательность действий при осуществлении доступа к ODBC-источникам следующая:
Рис. 6. Описание нового ODBC-драйвера "с точки зрения BDE".
Отметим, что в версии BDE, поставляемой с Delphi 3.0, вся эта терминологическая путаница ликвидирована, а все описанные в реестре Windows источники данных добавляются в список псевдонимов, и тем самым ликвидируется необходимость выполнения описанной выше инструкции. Остается надеяться, что в следующей версии C++ Builder доступ к ODBC-источникам упростится таким же образом
Для корректного отображения русских букв и установки правильного порядка алфавитной сортировки можно попытаться использовать какой-либо из русскоязычных драйверов dBase или Paradox. Однако следует помнить, что некоторые ODBC-драйверы имеют свои процедуры настройки, которые могут, в частности, включать опцию перекодировки OEM->ANSI (т.е. DOS->Windows). Кроме того, если доступ через ODBC осуществляется к какой-либо серверной СУБД, следует обратить внимание на возможности языковой настройки сервера и клиентской части.
Для настройки доступа к серверам Oracle следует настроить примерно тот же набор параметров, что и в случае ODBC-источников. Помимо этого, для драйвера ORACLE существует дополнительный набор параметров:
Параметр | Описание | Значение по умолчанию |
---|---|---|
VENDOR INIT | Имя библиотеки для соединения клиента с сервером (ORANT.DLL, ORA72.DLL и др.) | ORANT.DLL |
SERVER NAME | Имя псевдонима (alias) БД, указанного в файле TNSNAMES.ORA. Если сервер локальный, то SERVER NAME=@2: | |
NET PROTOCOL | TNS - если используется SQL*Net версии 2.0 или выше, или имя сетевого протокола для доступа к серверу, если используется более ранняя версия SQL*Net. | |
ENABLE SCHEMA CASHE | Разрешается ли кэширование на рабочей станции структуры таблиц, содержащихся на сервере. | FALSE |
SCHEMA CASHE DIR | Каталог для кэширования структуры таблиц. | 1.0 |
ENABLE BCD | Разрешен ли перевод числовых и денежных величин в формат BCD (binary coded decimals) во избежание ошибок округления. | FALSE |
ENABLE INTEGERS | Разрешено ли преобразование числовых величин с фиксированной запятой в целый формат. | FALSE |
LIST SYNONYMS | Разрешены ли синонимы (альтернативные имена таблиц и представлений) в структурах таблиц: NONE - нет, PRIVATE - разрешены личные синонимы, ALL - разрешены личные и общие синонимы. | NONE |
Проблемы установки соединения с Oracle из приложений Borland связаны главным образом с правильной настройкой сетевого программного обеспечения Oracle SQL*Net. Последние версии серверов Oracle (7.2, 7.3) содержат в своем составе SQL*Net версии 2.0 или выше. Для конфигурации SQL*Net 2.0 и выше следует настроить псевдонимы баз данных Oracle с помощью утилиты SQL*Net Easy Configuration, описав сетевое имя или адрес сервера, имя базы данных и тип сетевого протокола. После этого рекомендуется проверить наличие соединения с сервером с помощью утилиты Oracle SQL Plus. Только после проверки соединения можно конфигурировать псевдоним BDE.
При конфигурации псевдонима BDE в качестве сетевого протокола можно указать TNS (Transparent Network Substrate - высокоуровневая надстройка Oracle над сетевыми протоколами). В качестве имени сервера следует указать имя псевдонима базы данных Oracle, указав перед этим именем символ '@' (об этом в документации не сказано). Для локального сервера (или в случае, когда клиентское приложение функционирует на одном компьютере с сервером баз данных, например, Oracle Workgroup Server for Windows NT) в качестве имени сервера можно использовать строку '@2:' .
Для корректного отображения русских букв и установки правильного порядка алфавитной сортировки можно использовать драйверы dBase RUS CP866 или Paradox ANSI Cyrillic в зависимости от того, какая кодировка - DOS или Windows - будет использоваться. Однако корректная работа с русским языком будет обеспечена только в том случае, если удачно подобрано сочетание трех параметров языковой настройки: языковой настройки сервера (она указывается при его установке), языковой настройки клиентской части (значение HKEY_LOCAL_MACHINE//SOFTWARE)//ORACLE//NLS_LANG реестра Windows 95) и собственно языкового драйвера BDE. Подробности языковой настройки клиентской части и сервера можно найти в документации к серверу Oracle.
Для настройки доступа к серверам InterBase следует настроить примерно тот же набор параметров, что и в случае ODBC-источников. Помимо этого, для InterBase существует дополнительный набор параметров:
Параметр | Описание | Значение по умолчанию |
---|---|---|
BLOBS TO CACHE | Определяет, сколько BLOB-полей кэшируется на рабочей станции. Возможные значения: 64 - 65536 | 64 |
BLOB SIZE | Определяет размер буфера для BLOB-полей, передаваемых в результате запроса. Возможные значения - 32-100 К. Параметр применим только в случае нередактируемых данных | 32 К |
Отметим, что при соединении с локальным сервером InterBase следует указывать путь к файлу базы данных.
При возникновении проблем связи C++ Builder с InterBase следует проверить наличие связи с помощью утилиты Interactive SQL. При наличии связи в Interactive SQL следует проверить параметры конфигурации драйвера и псевдонима BDE, а при отсутствии - попробовать найти ошибки в сетевом протоколе, проверив соединение с помощью утилит PING и TELNET.
Более подробно о работе с C++ Builder можно узнать из книги Н.З.Елмановой и С.П.Кошеля "Borland C++ Builder", выходящей в августе в издательстве "Диалог-МИФИ".