Следует отметить, что файлы, входящие в состав библиотеки 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.
BDE обеспечивает для созданных приложений:
Утилита конфигурации состоит из одной формы, содержащей блокнот из шести страниц.
Страница Drivers содержит параметры доступа к различным типам данных.
Страница Aliases содержит сведения о псевдонимах источников данных, к которым посредством BDE обращаются приложения, установленные на данном компьютере.
Страница System содержит параметры настройки работы самой библиотеки BDE, связанные с использованием памяти, сетевого окружения и других ресурсов, доступных использующим BDE приложениям. Эти параметры содержатся в реестре Windows 95 (или Windows NT).
Страницы Date, Time, Number содержат правила отображения в приложениях календарных дат, времени и числовых данных в соответствии с правилами, принятыми в той или иной стране.
При нажатии на кнопку New ODBC Driver можно добавить в список новый ODBC-источник данных (перед этим, естественно, следует установить соответствующий ODBC-драйвер и описать источник данных с помощью ODBC-администратора в панели управления Windows). Можно также удалить ODBC-драйвер из файла конфигурации BDE (Delete ODBC Driver).
В правой части страницы Drivers указаны параметры выбранного в списке драйвера. При настройке драйверов следует заменить параметры, указанные по умолчанию, на значения, специфические для выбранного источника данных (например, языковый драйвер, правила обработки запросов, имя сервера и базы данных, тип сетевого протокола для доступа к серверу, номер версии). Эти наборы параметров различны для различных драйверов баз данных .
После этого в появившейся диалоговой панели следует ввести имя-псевдоним для этого источника и выбрать нужный драйвер из предложенного списка (того, что определен на странице Drivers). Имя STANDARD в этом случае соответствует таблицам dBase, Paradox и текстовым файлам (в формате CSV - Comma Separated Value).
В правой части страницы Aliases содержатся параметры конкретных источников данных, которые можно модифицировать, заменяя значения по умолчанию (в том числе унаследованные с предыдущей страницы), например, имена каталогов, серверов, имя пользователя по умолчанию, языковый драйвер и др.
Параметр | Описание | Значение по умолчанию |
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) |
Параметр | Описание | Значение по умолчанию |
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 |
Параметр | Описание | Значение по умолчанию |
TWELVEHOUR | Параметр, определяющий интервал отображения часов: 0-12 (TRUE) или 0-24 (FALSE) | TRUE |
AMSTRING | Символьная строка для указания первой половины дня, если TWELVEHOUR=TRUE | AM |
PMSTRING | Символьная строка для указания второй половины дня, если TWELVEHOUR=TRUE | PM |
SECONDS | Параметр, определяющий, указывать ли секунды в значении времени | TRUE |
MILSECONDS | Параметр, определяющий, указывать ли миллисекунды в значении времени . | FALSE |
Параметр | Описание | Значение по умолчанию |
DECIMALSEPARATOR | Символ, отделяющий дробную часть числа | Значение, содержащееся в настройках панели управления Windows 95/NT |
THOUSANDSEPARATOR | Символ, отделяющий друг от друга "тройки" разрядов в многозначных числах | Значение, содержащееся в настройках панели управления Windows 95/NT |
DECIMALDIGITS | Максимальное число десятичных разрядов числа, полученного при преобразовании символьной строки | 2 |
LEADINGZERON | Параметр, определяющий, указывать ли нуль перед дробной частью числа, чье абсолютное значение меньше единицы | TRUE |
При описании параметров драйвера баз данных (страница Drivers) следует указывать языковый драйвер, предлагаемый для баз данных этого типа по умолчанию. При создании нового псевдонима (страница Aliases) следует указывать, какой языковый драйвер используется в базе данных, иначе будет использоваться языковый драйвер, установленный по умолчанию для данного драйвера баз данных.
Отметим, что в общем случае языковая настройка баз данных и использующих их приложений включает в себя не только настройку параметра LANGDRIVER на страницах Drivers, Aliases и System. Некоторые СУБД имеют свои средства языковой настройки, причем эти средства могут быть многоуровневыми. Например, в случае использования какой-либо серверной СУБД может потребоваться, помимо настройки BDE, настройка языковых параметров сервера, настройка аналогичных параметров клиентской части или даже выбор соответствующей языковой версии сервера. Подробнее эти проблемы будут рассмотрены чуть позже.
Помимо этого, существует проблема, связанная с различиями DOS- и Windows-кодировок для русского языка. Языковые драйверы BDE существуют для обеих кодировок. Какой из них выбрать, зависит от многих факторов: наличия и объема унаследованных данных, наличия других приложений, использующих эти же данные и др. Например, разумно, используя таблицы формата dBase III совместно с приложениями для DOS, созданными на Clipper, применить DOS-кодировку для этих таблиц.
Параметр | Описание | Значение по умолчанию |
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 |
С языковой настройкой таблиц dBase обычно не возникает проблем. Для DOS-кодировки обычно используется языковый драйвер dBASE RUS cp866, а для Windows - 'ascii' ANSI.
Следует отметить, что к таблицам dBase можно обращаться, используя ODBC.
Особое внимание следует обратить на то, что расширение *.dbf имеют не только таблицы формата dBase, но и таблицы Clipper, FoxBase, FoxPro. Однако эти СУБД могут иметь другой формат индексных файлов и мемо-полей, которые в явном виде могут не поддерживаться библиотекой BDE (например, индексы *.cdx). В этом случае рекомендуется либо доступ через ODBC (что не всегда эффективно с точки зрения производительности), либо использование библиотек третьих фирм, обеспечивающих интерфейс с такими СУБД (например, Apollo компании SuccessWare).
Параметр | Описание | Значение по умолчанию |
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 |
Параметр | Описание | Значение по умолчанию |
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 |
Ряд ODBC-источников требует указания параметра PATH - пути к каталогу, где находится база данных.
Следует обратить внимание на то, что перед описанием ODBC-источника в файле конфигурации BDE обязательно нужно установить соответствующий ODBC-драйвер и описать соответствующий источник данных в панели управления Windows 95/NT, используя соответствующий ODBC-администратор. При этом следует обратить внимание на некоторую терминологическую неувязку. Дело в том, что ODBC-драйвер с точки зрения BDE, создаваемый при нажатии кнопки New ODBC Driver на странице Drivers утилиты конфигурации BDE, на самом деле представляет собой указание не на реальный ODBC-драйвер, установленный в панели управления Windows, а на конкретный источник данных, доступ к которому осуществляется с помощью реального ODBC-драйвера (с точки зрения панели управления). При этом следует еще создать и соответствующий псевдоним базы данных, что окончательно сбивает с толку некоторых начинающих пользователей. Таким образом, последовательность действий при осуществлении доступа к ODBC-источникам следующая:
Отметим, что в версии BDE, поставляемой с Delphi 3.0, вся эта терминологическая путаница ликвидирована, а все описанные в реестре Windows источники данных добавляются в список псевдонимов, и тем самым ликвидируется необходимость выполнения описанной выше инструкции. Остается надеяться, что в следующей версии C++ Builder доступ к ODBC-источникам упростится таким же образом
Для корректного отображения русских букв и установки правильного порядка алфавитной сортировки можно попытаться использовать какой-либо из русскоязычных драйверов dBase или Paradox. Однако следует помнить, что некоторые ODBC-драйверы имеют свои процедуры настройки, которые могут, в частности, включать опцию перекодировки OEM->ANSI (т.е. DOS->Windows). Кроме того, если доступ через ODBC осуществляется к какой-либо серверной СУБД, следует обратить внимание на возможности языковой настройки сервера и клиентской части.
Параметр | Описание | Значение по умолчанию |
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 |
При конфигурации псевдонима 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.
Параметр | Описание | Значение по умолчанию |
BLOBS TO CACHE | Определяет, сколько BLOB-полей кэшируется на рабочей станции. Возможные значения: 64 - 65536 | 64 |
BLOB SIZE | Определяет размер буфера для BLOB-полей, передаваемых в результате запроса. Возможные значения - 32-100 К. Параметр применим только в случае нередактируемых данных | 32 К |
При возникновении проблем связи C++ Builder с InterBase следует проверить наличие связи с помощью утилиты Interactive SQL. При наличии связи в Interactive SQL следует проверить параметры конфигурации драйвера и псевдонима BDE, а при отсутствии - попробовать найти ошибки в сетевом протоколе, проверив соединение с помощью утилит PING и TELNET.
Более подробно о работе с C++ Builder можно узнать из книги Н.З.Елмановой и С.П.Кошеля "Borland C++ Builder", выходящей в августе в издательстве "Диалог-МИФИ".
Координаты автора: Учебный центр Interface Ltd., тел. (095)135-55-00, 135-25-19,
e-mail: elmanova@interface.ru