Страница 1 из 1

ADO: таблицы, поля, связи...

Добавлено: 26 мар 2009, 16:43
youngprankster
Хоть и
шансов получить ответ здесь достаточно мало
, но всё же... :)

Среда разработки CodeGear C++ Builder 2009.
Необходимо получать метаданные подключаемой БД: списки таблиц, полей, связи (ну, связи - не обязательно). Загвоздка в том, что должны поддерживаться различные СУБД, - в первую очередь, Access, Paradox, Interbase, Oracle.
Посему подключаюсь через ADO (dbGo-компоненты).
  • Access - работает отлично.
  • Paradox: указываю ConnectionString

    Код: Выделить всё

    Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Paradox 5.x
    подключение устанавливается, список таблиц приходит, но поля можно запросить не из всех - возникает ошибка
    Объект или поставщик не может выполнить требуемую операцию
    Например, из тестовой базы
    Program Files\Common Files\CodeGear Shared\Data
    невозможно получить поля таблицы Events. Также невозможно получить список связей (аналогичная ошибка).
  • Intebase. Пробовал IBProvider - подключается, но ни списка таблиц, ни чего-то большего от него добиться не могу

    Код: Выделить всё

    Provider=LCPI.IBProvider.3;Password=masterkey;User ID=SYSDBA;Location="";ctype=NONE;unicode_mode=False;unicode_stmt=False
    Ошибки нет, но возвращается пустое множество. Попробовал SIBProvider - примерно та же ситуация, что с Paradox. Какие-то таблицы проанализировать можно, какие-то - нет. Связи не получить

    Код: Выделить всё

    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 пока не пробовал.
Списки таблиц/полей пробовал получать через ADOConnection->GetTableNames / ADOConnection->GetFieldNames и через ADOConnection->OpenSchema. Эффект, в целом, один.

Может кто-нибудь посоветовать что-нибудь :) по этой ситуации. Есть ли универсальный способ запросить у ADO вышеозначенные метаданные? Стоит ли пробовать других поставщиков данных и, если да, то каких? Может, косяк в ConnectionString'ах (к слову, путь к БД указываю в них динамически)?

P.S.: чтобы уж отдельную тему не создавать, как можно получить из некой таблицы БД только несколько строк? Ограничивать путём добавления в запрос TOP - не все СУБД его поддерживают. MaxRecords в ADOQuery тоже работает не всегда.
Any ideas? Буду благодарен за любой совет.

Re: ADO: таблицы, поля, связи...

Добавлено: 26 мар 2009, 18:33
kdv
Есть ли универсальный способ запросить у ADO вышеозначенные метаданные?
есть. запросить системные таблицы самостоятельно. разброд в этом плане для драйверов и серверов, думаю, будет очень широким.
Any ideas?
в отношении ADO спросите лучше тут. Здесь ADO вообще как собаке пятая нога.
http://www.sql.ru/forum/actualtopics.aspx?bid=20

Re: ADO: таблицы, поля, связи...

Добавлено: 26 мар 2009, 19:27
youngprankster
в отношении ADO спросите лучше тут. Здесь ADO вообще как собаке пятая нога
Там уже спросил, спасибо.
запросить системные таблицы самостоятельно. разброд в этом плане для драйверов и серверов, думаю, будет очень широким
Это понимаю. Хочется универсализировать, да, видно, "универсализировалка" пока не отросла. Буду ковыряться. :roll:

Re: ADO: таблицы, поля, связи...

Добавлено: 31 мар 2009, 14:42
hvlad
Коваленко просил запостить сюда это

Ибо сам он так и не смог сдесь зарегистрироваться...

Re: ADO: таблицы, поля, связи...

Добавлено: 31 мар 2009, 15:16
WildSery
У меня дежавю или ты в той убитой теме дословно то же написал? :D

Re: ADO: таблицы, поля, связи...

Добавлено: 31 мар 2009, 17:43
youngprankster
У меня дежавю или ты в той убитой теме дословно то же написал?
Где/в чём? Не понял, что за тема, кем убита? #-o
Проблему, в принципе, пофиксил.
В частности, с Интербейсом помогла решить проблему замена
Provider=LCPI.IBProvider.3
на
Provider=LCPI.IBProvider.2

Re: ADO: таблицы, поля, связи...

Добавлено: 31 мар 2009, 19:17
WildSery
youngprankster писал(а):Где/в чём? Не понял, что за тема, кем убита? #-o
Я Влада спрашивал.

Re: ADO: таблицы, поля, связи...

Добавлено: 31 мар 2009, 20:20
hvlad
WildSery писал(а):У меня дежавю или ты в той убитой теме дословно то же написал? :D
Мне Коваленко дал 2 ссылки - где и что процитировать, моё дело маленькое :)

Re: ADO: таблицы, поля, связи...

Добавлено: 02 апр 2009, 00:15
kdv
слушайте, я сейчас не только темы поубиваю, но и некоторых. здесь что, багтрекер? Или цитатник с других форумов? К чему это все плодить в разных местах?