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

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
youngprankster
Сообщения: 3
Зарегистрирован: 25 мар 2009, 14:47

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

Сообщение youngprankster » 26 мар 2009, 16:43

Хоть и
шансов получить ответ здесь достаточно мало
, но всё же... :)

Среда разработки 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? Буду благодарен за любой совет.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

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

Сообщение kdv » 26 мар 2009, 18:33

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

youngprankster
Сообщения: 3
Зарегистрирован: 25 мар 2009, 14:47

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

Сообщение youngprankster » 26 мар 2009, 19:27

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

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

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

Сообщение hvlad » 31 мар 2009, 14:42

Коваленко просил запостить сюда это

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

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

Сообщение WildSery » 31 мар 2009, 15:16

У меня дежавю или ты в той убитой теме дословно то же написал? :D

youngprankster
Сообщения: 3
Зарегистрирован: 25 мар 2009, 14:47

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

Сообщение youngprankster » 31 мар 2009, 17:43

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

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

Сообщение WildSery » 31 мар 2009, 19:17

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

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

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

Сообщение hvlad » 31 мар 2009, 20:20

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

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

Сообщение kdv » 02 апр 2009, 00:15

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

Ответить