簡體   English   中英

如何同時適應 32 位和 64 位 odbc 驅動程序

[英]How to accommodate both 32 bit and 64 bit odbc drivers

我正在編寫一個 c# WPF 應用程序,其中設計要求之一是能夠從 Microsoft Access 數據庫加載數據。 我對此主題有很多與 MS Access 驅動程序相關的問題:

  1. 如果我們的應用程序編譯為 64 位,它是否能夠運行 32 位 odbc 驅動程序? 當我以 64 位運行我的應用程序時,訪問 32 位驅動程序時出現錯誤,我想我在某處讀到您無法從 64 位應用程序訪問 32 位 odbc 驅動程序。

  2. 如果我們在客戶端機器上安裝 64 位 Access 驅動程序,並且他們也已經安裝了 32 位 Access 驅動程序,會不會搞砸? 默認情況下,如果 32 位驅動程序已經存在,Microsoft 不會讓您安裝 64 位驅動程序。 有一種解決方法(在安裝時使用 /passive 命令),但我擔心同時擁有兩個驅動程序可能會使 Access 出現問題。

  3. 有什么我想念的嗎? 是否有其他人曾經能夠為其應用程序訪問正確的 Odbc 驅動程序的解決方法?

讓我們逐點回答這個問題:

  1. 如果我們的應用程序編譯為 64 位,它是否能夠運行 32 位 odbc 驅動程序?

不,不會。

  1. 如果我們在客戶端機器上安裝 64 位 Access 驅動程序,並且他們也已經安裝了 32 位 Access 驅動程序,會不會搞砸?

是的,或者至少,您的里程在這里可能會有所不同。 我見過有人這樣做,需要完全卸載 Office 並重新安裝才能讓 Access OLEDB 提供程序再次工作,而其他人則完全沒有問題。 32 位 2010 數據庫引擎的問題似乎比 2016 少,但不是您想在生產應用程序中做的事情。

  1. 有什么我想念的嗎?

好吧,這里有很多選擇。 例如,您可以使用與默認驅動程序不沖突的第三方 ODBC 驅動程序,例如 mdbtools。 You could use the DLL surrogate to spawn a 32-bits COM object and use DAO instead of the ODBC driver to interface with the database. You could provide a 32-bit COM object with the 64-bit application yourself, let that communicate with the ODBC driver, and interface with that using the DLL surrogate. 還有無數更多的選擇。 不過,沒有一個比使用 ODBC 驅動程序更完美,通常只提供 32 位和 64 位版本並讓用戶選擇與其 Office 安裝匹配的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM