2013-01-23 26 views
0

我正在編寫一個應用程序在C#(.NET 4.0),它必須與另一個更老的應用程序集成。部分要求是我的程序必須從三個Btrieve文件中讀取數據。我可以假設這些Btrieve數據文件已經存在於安裝了我的程序的計算機上,並且我還可以假設Pervasive PSQL V9也將被安裝,並且關係和事務服務程序正在運行。閱讀普及數據庫9而不創建ODBC DSN

我有關聯的DDF文件,我可以將它們安裝爲我的應用程序的一部分。創建它們的方式我必須將它們放在與Btrieve數據文件不同的目錄中。 (它們必須是數據文件所在目錄的子目錄)。

我在啓動時對Pervasive或Btrieve一無所知,但經過一些實驗後,我已經可以使用32位ODBC管理工具創建DSN,並且可以從數據文件使用ODBC ADO連接器。迄今爲止都很好。

我的問題是,是否有可能從我的.NET程序中讀取這些文件而無需在機器上創建ODBC DSN?換句話說,是否可以指定* .DAT文件所在的目錄以及* .DDF文件在ODBC連接字符串中的目錄?

我沒有致力於使用ODBC,我很高興使用OLEDB或任何其他技術,允許我使用.NET可靠地從這些文件中讀取數據。

回答

1

儘管無DSN連接允許您在沒有DSN的情況下進行連接,但您仍然需要數據庫名稱。普遍的數據庫名稱可以使用DTIDTO即時創建。使用C#,我會建議DTO。
如果您無法創建數據庫名稱,則可以使用OLEDB。它支持使用連接字符串的Data Source參數中的路徑,如OLEDB文檔的Remote Connections部分中所述。

還有一點需要注意,確保將.NET程序編譯爲x86,而不是AnyCPU。 Pervasive OLEDB提供商只有32位。如果您將應用程序安裝在64位操作系統上編譯爲AnyCPU,它將查找64位提供程序並失敗。

+0

感謝您的回答。我已經去過DTO了,並取得了一些進展,但我在成功創建數據庫時遇到了問題。我已經發布了[this](http://stackoverflow.com/questions/14496587/create-pervasive-database-using-distributed-tuning-objects-dto)問題,如果你有興趣回答這個問題。 –

0

您應搜索無DSN連接。您不需要將DSN = mydsn傳遞給connect方法(其中mydsn是您設置的DSN),而是傳遞DRIVER = xxx(其中xxx是驅動程序的名稱)以及它需要將文件定向到的任何其他屬性。有大量的站點連接字符串列表用於不同的ODBC驅動程序,因此如果找不到ODBC驅動程序的文檔,就必須列出Pervasive。另一種替代方法是在註冊表中查看您的DSN,您將在其中找到需要指定的屬性的名稱。