Смысл, вообщем, такой - я могу заполнять
буфер инициализации подключения и
коннектится к любому из серверов - 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.
Роман