2011-05-02 79 views
3

我們有一個應用程序,它使用OLEDB和Jet引擎Microsoft.Jet.OLEDB.4.0。我們正在將我們的應用程序轉換爲也以64位模式運行。但是,數據庫引擎不再是64位Windows的標準部分。但是,Office 2010 64位確實安裝了64位訪問數據庫引擎(請參閱http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en),以便您可以使用Microsoft.ACE.OLEDB.12.0。Jet數據庫32和64位和替代品

所以我正在解決問題,以便我們的應用程序也運行在64位模式。但OLEDB代碼抱怨數據庫引擎未被註冊。所以我嘗試在上面的鏈接上安裝可再發行的64位引擎。但它告訴我,我需要先卸載32位Office 2007。我不會那樣做,因爲我確信一些設置等將會丟失。

所以我的問題是: 32位數據庫訪問組件如何不能在64位模式下工作,但如果32位已經安裝,你不能安裝64位的?這對任何人都有意義嗎?!

我意識到微軟希望人們切換到SQL Server Express,除非它具有侵入性,即使在乾淨的新Windows 7計算機上也能可靠地安裝,並且在不同機器之間複製或移動數據並非易事。那麼是否有適合Jet的替代方案?一些簡單但適用於32位和64位,理想情況下具有OLEDB和ODBC支持的東西? SQLite看起來很有希望嗎?

+0

我認爲使用正確的ODBC管理器存在一些棘手的問題。我不做這種發展,但剛剛閱讀了它。我建議你通過關於64位Jet/ACE的SO問題進行搜索,因爲我很確定你的問題已經被其他人遇到了,並且提供了一個解決方案,我記得它相當簡單(並且不明顯)。 – 2011-05-06 01:59:27

+1

另一個問題是,64位ACE與Office 2010 32位不兼容。因此,如果您的用戶安裝了Office 32bit,則您的64位解決方案將失敗。 – 2012-06-27 13:27:06

回答

1

只是做了一個快速搜索,似乎沒有很多的替代Access訪問沒有去SQL服務器。我發現這個,http://www.vistadb.net/,這聽起來很酷,但開發者許可證非常昂貴。

作爲一種替代方案,您仍然可以在不安裝64位驅動程序的情況下使用Access。這發生在我身上,必須從Access讀取,但無法將應用程序轉換爲32位。我的答案是編寫一個單獨的'代理'可執行文件,它將以32位運行。我會使用System.Diagnostics.Process對象啓動應用程序,並通過重定向的標準輸入和輸出與它通信,將連接字符串作爲命令行參數傳遞。 DataTable課程內置ReadXMLWriteXML函數,使得傳遞數據變得如此簡單。

+1

如果你可以使你的代理程序的源代碼可用,那將是絕對可怕的。 – jvangeld 2012-03-27 17:17:54

+1

我寫了一篇文章,http://kratzindustries.com/CodeRedBlog/?p=92。我在這裏做的是使用.NET中的'CodeDomProvider'類將代理代碼即時編譯到臨時位置,所以我不必在客戶端上安裝任何額外的代碼。 – Kratz 2012-03-28 15:14:30