powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ADO: таблицы, поля, связи...
2 сообщений из 2, страница 1 из 1
ADO: таблицы, поля, связи...
    #35893692
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? Буду благодарен за любой совет.
...
Рейтинг: 0 / 0
ADO: таблицы, поля, связи...
    #36073478
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
youngprankster
Intebase . Пробовал IBProvider - подключается, но ни списка таблиц, ни чего-то большего от него добиться не могуавторProvider=LCPI.IBProvider.3;Password=masterkey;User ID=SYSDBA;Location="";ctype=NONE;unicode_mode=False;unicode_stmt=FalseОшибки нет, но возвращается пустое множество.

Немного с опозданием, но лучше поздно чем никогда :)

Есть такая проблема. Причина кроется в Client Cursor Engine. Оно не любит нестандартные колонки в схемах метаданных. В силу тупости его реализации.

Как вариант - юзайте серверный курсор. См. свойство на уровне TADOConnection.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ADO: таблицы, поля, связи...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]