2011-02-25 20 views
4

我目前正在開發一個需要通過ODBC連接獲取數據庫模式的項目。主要是因爲源可能是Access數據庫,SQL Server,Oracle等。 這樣我就可以將客戶模式重新創建爲SQL數據庫。ODBC架構 - 如何找到關係?

一切工作正常,但我無法找到一種方法來檢索表之間的關係,我無法找到任何關於此問題的MSDN。如果這不能完成,那麼我需要知道另一種通用這樣做。

在此先感謝您的任何答案。

回答

3

如果您直接使用ODBC API,則可以使用API​​ SQLForeignKeys。但是,由於您使用的是OdbcConnection對象,因此使用API​​執行此任務將是一個痛苦的過程。那麼,對於這個問題,直接使用ODBC API來做任何事情都是很多的工作。

編輯我建議使用OdbcConnectionGetSchema'ForeignKeys'作爲集合名稱的可能性。但是,我研究了這一點,不幸的是,OdbcConnection似乎不支持該集合。

因此,除了直接使用SQLForeignKeys(或進行特定於數據庫的調用)之外,似乎ODBC並不會提供一條簡單的途徑來收集這些信息。如果有人可以用一個很好的機制來提供答案,我會刪除這個答案,因爲它現在唯一的價值就是指出我不知道如何清楚地找到信息。

+1

我使用內置OdbcConnecton對象的.NET並調用GetSchema()。如果我無法從這個對象中得到我所需要的,那麼我可能需要求助於調用ODBC API。我不得不弄清楚如何通過C#訪問這些文件,因爲我不確定它們實際上安裝了哪些DLL。 – TyCobb 2011-02-26 00:15:29

+1

@TyCobb:我可能已經猜到了你是如何訪問它的。我將嘗試查看是否可以確定OdbcConnection代碼是否使用了SQLForeignKeys。不過,我答應我的妻子我會在13分鐘後回家......我遲到了。但我只是想出了一個讓我困擾了一天的bug,所以這一定是值得的。在任何情況下,如果您可以避免直接使用API​​,那將會很好;這些是直接使用的主要麻煩。 – 2011-02-26 00:19:52

+0

非常感謝您的幫助。我可以繼續打開ODBC32.dll,看看我能用它做什麼。你至少讓我有一個計劃B. – TyCobb 2011-02-26 00:29:55