, но всё же...шансов получить ответ здесь достаточно мало
Среда разработки CodeGear C++ Builder 2009.
Необходимо получать метаданные подключаемой БД: списки таблиц, полей, связи (ну, связи - не обязательно). Загвоздка в том, что должны поддерживаться различные СУБД, - в первую очередь, Access, Paradox, Interbase, Oracle.
Посему подключаюсь через ADO (dbGo-компоненты).
- Access - работает отлично.
- Paradox: указываю ConnectionString
подключение устанавливается, список таблиц приходит, но поля можно запросить не из всех - возникает ошибка
Код: Выделить всё
Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Paradox 5.x
Например, из тестовой базыОбъект или поставщик не может выполнить требуемую операцию
невозможно получить поля таблицы Events. Также невозможно получить список связей (аналогичная ошибка).Program Files\Common Files\CodeGear Shared\Data - Intebase. Пробовал IBProvider - подключается, но ни списка таблиц, ни чего-то большего от него добиться не могу
Ошибки нет, но возвращается пустое множество. Попробовал SIBProvider - примерно та же ситуация, что с Paradox. Какие-то таблицы проанализировать можно, какие-то - нет. Связи не получить
Код: Выделить всё
Provider=LCPI.IBProvider.3;Password=masterkey;User ID=SYSDBA;Location="";ctype=NONE;unicode_mode=False;unicode_stmt=False
Код: Выделить всё
Provider=sibprovi.SIBProvider;Password=masterkey;User ID=SYSDBA;Data Source="";Location="";Extended Properties="";Persist Encrypted=True;Encrypt Password=True;Mask Password=True;Cache Authentication=True;Persist Security Info=True;CHARACTER SET="";ROLE=""
- Oracle пока не пробовал.
Может кто-нибудь посоветовать что-нибудь по этой ситуации. Есть ли универсальный способ запросить у ADO вышеозначенные метаданные? Стоит ли пробовать других поставщиков данных и, если да, то каких? Может, косяк в ConnectionString'ах (к слову, путь к БД указываю в них динамически)?
P.S.: чтобы уж отдельную тему не создавать, как можно получить из некой таблицы БД только несколько строк? Ограничивать путём добавления в запрос TOP - не все СУБД его поддерживают. MaxRecords в ADOQuery тоже работает не всегда.
Any ideas? Буду благодарен за любой совет.