Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Настройка параметров доступа к данным в C++ Builder

Наталия Елманова

Библиотека Borland Database Engine (BDE)

Если созданное с помощью С++ 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 обеспечивает для созданных приложений:

  • непосредственный доступ к локальным базам данных (dBase, Paradox, текстовые файлы)
  • доступ к SQL-серверам (Oracle, Sybase, MS SQL Server, InterBase, Informix, DB2) с помощью драйверов Borland SQL Links
  • доступ к любым источникам данных, имеющим драйвер ODBC (Open DataBase Connectivity), например, к файлам электронных таблиц (Excel, Lotus 1-2-3), серверам баз данных, не имеющим драйверов SQL Links (например, Gupta/Centura)
  • создание приложений клиент-сервер, использующих разнородные данные
  • высокую производительность при работе с плоскими таблицами
  • использование SQL (Structured Query Language - язык запросов к серверным СУБД), в том числе при работе с локальными данными
  • изоляцию приложения от средств языковой поддержки
  • изоляцию приложения от конфигурации системы и сети

Утилита настройки 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

Страница системных настроек позволяет указать параметры системы и сети, используемые 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

Средства языковой настройки BDE представляют собой набор так называемых языковых драйверов, устанавливающих набор символов, используемых в данных, и порядок алфавитной сортировки для используемого языка. Языковые драйверы Borland существуют для большого количества языков, в том числе и для русского.

При описании параметров драйвера баз данных (страница Drivers) следует указывать языковый драйвер, предлагаемый для баз данных этого типа по умолчанию. При создании нового псевдонима (страница Aliases) следует указывать, какой языковый драйвер используется в базе данных, иначе будет использоваться языковый драйвер, установленный по умолчанию для данного драйвера баз данных.

Отметим, что в общем случае языковая настройка баз данных и использующих их приложений включает в себя не только настройку параметра LANGDRIVER на страницах Drivers, Aliases и System. Некоторые СУБД имеют свои средства языковой настройки, причем эти средства могут быть многоуровневыми. Например, в случае использования какой-либо серверной СУБД может потребоваться, помимо настройки BDE, настройка языковых параметров сервера, настройка аналогичных параметров клиентской части или даже выбор соответствующей языковой версии сервера. Подробнее эти проблемы будут рассмотрены чуть позже.

Помимо этого, существует проблема, связанная с различиями DOS- и Windows-кодировок для русского языка. Языковые драйверы BDE существуют для обеих кодировок. Какой из них выбрать, зависит от многих факторов: наличия и объема унаследованных данных, наличия других приложений, использующих эти же данные и др. Например, разумно, используя таблицы формата dBase III совместно с приложениями для DOS, созданными на Clipper, применить DOS-кодировку для этих таблиц.

Особенности настройки BDE для работы с некоторыми источниками данных

dBase

При работе с таблицами 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

При работе с таблицами 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-источники

При работе с 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-источникам следующая: 

  • Установить нужный ODBC-драйвер (и, возможно, соответствующий ODBC-администратор для панели управления Windows).
  • Описать с помощью ODBC-администратора необходимый источник данных в панели управления.
  • Запустить утилиту конфигурации BDE и нажать кнопку New ODBC Driver на странице Drivers.
  • Придумать и ввести имя так называемого ODBC-драйвера с точки зрения BDE
  • Выбрать "настоящий" ODBC-драйвер из установленных в операционной системе
  • Выбрать имя источника данных
  • Нажать OK. В списке драйверов появится новый так называемый ODBC-драйвер (с точки зрения BDE).
  • Перейти на страницу Aliases и создать псевдоним, связанный со вновь созданным драйвером с точки зрения BDE.

Рис. 6. Описание нового ODBC-драйвера "с точки зрения BDE".

Отметим, что в версии BDE, поставляемой с Delphi 3.0, вся эта терминологическая путаница ликвидирована, а все описанные в реестре Windows источники данных добавляются в список псевдонимов, и тем самым ликвидируется необходимость выполнения описанной выше инструкции. Остается надеяться, что в следующей версии C++ Builder доступ к ODBC-источникам упростится таким же образом

Для корректного отображения русских букв и установки правильного порядка алфавитной сортировки можно попытаться использовать какой-либо из русскоязычных драйверов dBase или Paradox. Однако следует помнить, что некоторые ODBC-драйверы имеют свои процедуры настройки, которые могут, в частности, включать опцию перекодировки OEM->ANSI (т.е. DOS->Windows). Кроме того, если доступ через ODBC осуществляется к какой-либо серверной СУБД, следует обратить внимание на возможности языковой настройки сервера и клиентской части. 

Oracle

Для настройки доступа к серверам 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

Для настройки доступа к серверам 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", выходящей в августе в издательстве "Диалог-МИФИ".

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
Аноним
Мне нравитсяМне не нравится
1 июня 2006, 12:42:40
Неплохая статья. Написано по делу. Ничего лишнего. Хорошо написана теория. Прекрасно подошла для написания курсовой!!!
2.
Аноним
Мне нравитсяМне не нравится
8 октября 2005, 21:49:21
Подскажите, пожалуйста если можно как настроить доступ к серверу Informix
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог