[英]How to accommodate both 32 bit and 64 bit odbc drivers
我正在編寫一個 c# WPF 應用程序,其中設計要求之一是能夠從 Microsoft Access 數據庫加載數據。 我對此主題有很多與 MS Access 驅動程序相關的問題:
如果我們的應用程序編譯為 64 位,它是否能夠運行 32 位 odbc 驅動程序? 當我以 64 位運行我的應用程序時,訪問 32 位驅動程序時出現錯誤,我想我在某處讀到您無法從 64 位應用程序訪問 32 位 odbc 驅動程序。
如果我們在客戶端機器上安裝 64 位 Access 驅動程序,並且他們也已經安裝了 32 位 Access 驅動程序,會不會搞砸? 默認情況下,如果 32 位驅動程序已經存在,Microsoft 不會讓您安裝 64 位驅動程序。 有一種解決方法(在安裝時使用 /passive 命令),但我擔心同時擁有兩個驅動程序可能會使 Access 出現問題。
有什么我想念的嗎? 是否有其他人曾經能夠為其應用程序訪問正確的 Odbc 驅動程序的解決方法?
讓我們逐點回答這個問題:
不,不會。
是的,或者至少,您的里程在這里可能會有所不同。 我見過有人這樣做,需要完全卸載 Office 並重新安裝才能讓 Access OLEDB 提供程序再次工作,而其他人則完全沒有問題。 32 位 2010 數據庫引擎的問題似乎比 2016 少,但不是您想在生產應用程序中做的事情。
好吧,這里有很多選擇。 例如,您可以使用與默認驅動程序不沖突的第三方 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.