Дата публикации: 15.09.2000

Поддержка IB6

15 сентября наступило быстрее, чем хотелось бы. Мы реализовали много новых вещей и откорректировали немного старых. В настоящий момент провайдер поддерживает работу с IB4, IB5 и IB6. Все возможные типы InterBase, кроме массивов.

Мы благодарим всех пользователей, с которыми общались в течение прошедшего месяца. Некоторые новшества появились только благодаря вам. Особое спасибо Дмитрию Кузьменко, благодаря которому все это стало реальностью. Век помнить будем :)

Изменения в информационных свойствах источника данных

«gds32 version» — возвращает версию клиентской части IB.

«db_dialect» — это свойство появляется в доступном наборе только для клиентской части не ниже IB6. Указывает текущий диалект базы данных. Серверы 4x, 5x при запросе диалекта возвращают ошибку, которая интерпретируется как поддержка только 1 диалекта.

«Connection Status» — текущий статус подключения:

DBPROPVAL_CS_UNINITIALIZED (0) Не инициализированное состояние
DBPROPVAL_CS_INITIALIZED (1) Источник инициализирован
DBPROPVAL_CS_COMMUNICATIONFAILURE (2) Потеря подключения

Проверка подключения проводится с timeout'ом равным 5 секундам. Если за это время не удалось блокировать подключение для монопольного пользования (в многопоточной программе) , то считается что подключение нормальное.

«Server Name» — имя сервера, на котором расположена обслуживаемая база данных.

Исправлены и изменены свойства:

  • «OLE DB Version» — теперь возвращает «02.00»
  • «Data Source Object Threading» — в провайдере был неправильно указан численный идентификатор данного свойства.

Насчет правильности значения свойств «Prepare Commit Behavior» и «Prepare Abort Behavior» — сомнения остаются, поскольку подготовленный запрос остается действительным после выполнения commit и rollback. В тоже время MSDASQL говорит что это не так.

Свойства инициализации (подключения к базе данных)

«dialect» — требуемый диалект подключения клиента. Этот параметр доступен явно только для клиентских частей не ниже IB6. Но проверяется в любом случае (иначе он передается через расширенные свойства). Правила корректности значения таковы:

  • Запрашиваемый диалект не выше диалекта базы данных. Если вы ничего не указали или указали 0, то диалект подключения устанавливается равным диалекту базы данных («db_dialect»).
  • Диалект подключения не выше поддерживаемого провайдером для текущей клиентской части IB. В настоящий момент это третий диалект для IB6 и первый диалект для IB4, IB5.

Изменено поведение свойства «password«. Теперь вы можете получить его значение, если свойство «Persist Security Info» равно true. В противном случае будете получать «*********». Пользователи ADO Express могут поставить галочку у «Allow save password».

Для свойства инициализации «user id» определен псевдоним «user», который можно использовать в строке подключения.

Свойство «Prompt» имеет значение по умолчанию — не запрашивать пароль у пользователя. К месту сказать — у текущего провайдера MSSQL это свойство было совсем удалено.

Для всех свойств без исключения

Теперь правильно обрабатываются атрибуты на чтение и на запись свойств. Раньше можно было читать и изменять что угодно.

Источник подключений (Data Source)

Помимо поддержки новых свойств, эта компонента реализовывает новый интерфейс IPersistFile, позволяющий чтение/запись параметров инициализации из файла. Кроме того, провайдер регистрирует расширение файлов «ibp», благодаря чему пользователи ADO могут писать следующий код:

Dim cn as new ADODB.Connection
cn.Open("file name=d:\database\cur_db.ibp")

ADO самостоятельно определит провайдер, заставит его прочитать указанный файл и инициализирует источник данных.

Для сохранения пароля в файле, вы должны установить свойство «Persist Security Info» равным true.

Глобальная блокировка на время подключения. Клиентская часть IB может зависать, если проводить параллельные подключения к базам данных. Поэтому в провайдер добавлен код, обеспечивающий последовательность подключений.


Дата публикации: 15.09.2000. Права на материал принадлежат: IBProvider. При перепечатке ссылка на сайт https://www.ibprovider.com/rus обязательна.