2013-05-16 64 views
3

如何在C#/ ADO.NET/FirebirdClient中查詢數據庫模式?命名空間Firebird.Data.Schema中的所有類都是內部的。用FirebirdClient查詢Firebird數據庫模式

例如: 檢查,如果表中有與存儲過程參數,其名稱和類型

FirebirdClient的指定名稱 查詢號碼欄 - 緊湊型框架,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