2013-05-16 3 views
3

Как я могу запросить схему базы данных в C#/ADO.NET/FirebirdClient? Все классы в пространстве имен Firebird.Data.Schema являются внутренними.Схема базы данных Firebird Query с FirebirdClient

Например: проверить, если таблица имеет столбец с заданным именем числа запросов хранимых параметров процедуры, его названия и типы

т.д.

FirebirdClient - Compact Framework, NETProvider-2.5.2-CF .7z

ответ

3

Вы должны запросить системные таблицы (их имена начинаются с префикса RDB$):

How to get a list of tables, views and columns in Firebird database?
RDB$ system objects

+0

Я имею в виду, есть возможность использовать внутренние классы FirebirdClient в моем приложении. Код для запроса таблиц RDB $ представлен в этой библиотеке, и переписать его дважды - это ИМХО не очень хорошая идея. – hellboy

+1

Вы можете использовать любой внутренний тип через отражение, так что это возможно *. Хотя, вы должны помнить, что внутренние типы обычно не документируются, и их контракт может быть разорван даже между двумя выпусками. Кроме того, вы можете попросить разработчика клиента FB о том, чтобы сделать эти типы общедоступными. Может быть, есть некоторые причины, которые мешают ему сделать это. – Dennis

+0

Спасибо. Вы спасли много времени от времени. –

1

У меня есть это!

FbConnection connection = (FbConnection)this.GetConnection(); 
    connection.GetSchema("procedureparameters", new string[] { null, null, procedureName }); 

Также можно получить всю информацию об объектах базы данных с FbConnection :: GetSchema

Смотрите также FbSchemaFactory :: PrepareCollection

+0

Очень круто! Мне было бы интересно узнать, что вы с ним делаете. – jp2code

+0

* (надеюсь, не отслеживая вашу жену) * – jp2code

+0

Существует проблема с Compact Framework: в FirebirdClient отсутствует FirebirdSql.Schema.FbMetaData.xml (как встроенный ресурс) – hellboy

Смежные вопросы