Смысл, вообщем, такой - я могу заполнять
буфер инициализации подключения и
коннектится к любому из серверов - FB/IB

После создания подключения, через
запрос информации о БД и сервере,
определяется принцип дальнейшей
работы.

А что делать, если, скажем у FB, появится
архиполезное свойство инициализации,
которое будет отсутствовать у IB (а
может даже конфликтовать) ?

Уже появилось... правда не в DPB, а в isc_database_info, свойство называется isc_info_firebird_version, мне оно нужно для того, чтоб отличать FB 1.5 от FB 2.0, а их в свою очередь от Вулкана - мне надо было для того, чтоб вернуть в DatabaseMetaData сортировку NULL - всегда в начале, в конце, больше или меньше. И каждому серверу - свое. Само-собой - IB этого параметра не понимает и ругается страшно.

А посему Jaybird 2.0 и выше не работает с IB. Теор. я могу добавить поддержку для IB, но пока только был один желающий, и то речь шла о IB 6.0, а там все равно на FB переходить надо.

В тот же буфер (для isc_attach_database) это
пихать опасно. А после подключения, его
(новое свойство инициализации) уже не
задашь :(

Пока единственным осмысленным
решением, возникшим у меня в голове,
стало то, что без создания _другой_
API-функции, отвечающей за подключение к
FB, задача не решабельна.

Но может есть еще какие способы?

А почему не переложить это на пользователя? Он ведь знает, к какому серверу подключается. Я могу это контролировать через JDBC URL, например, если подключаются по URL

jdbc:firebirdsql:localhost:c:/firebird/employee.fdb

то подключение идет напрямую по сокету и нашей реализации сетевого протокола. Если же используется

jdbc:firebirdsql:embedded:c:/firebird/employee.fdb

то пытаюсь загрузить fbembed.dll и через нее доступится к базе. Этим же способом буду решать и подключение к IB, если сильно будет надо, сделаю что-то типа

jdbc:firebirdsql:ib:localhost:c:/interbase/employee.fdb

а в ближайшем будущем будет похожее расширение для OpenOffice - там все значительно сложнее - придется избавлятся от слишком точного следования спецификации во многих местах.

Думаю, что и Ты можешь добавить какой-то параметр, который бы указывал, что подключатся будем к FB или IB.

Роман

Ответить