簡體   English   中英

在Visual C#2010中使用Microsoft Access 2007數據庫

[英]Using Microsoft Access 2007 database with Visual C# 2010

我已經完成了我的C#應用​​程序的設計,該應用程序將員工數據存儲在Access數據庫中。 當我在計算機上安裝Microsoft Office 2007時,該程序可以正常運行,但是如果我卸載Office 2007,則會導致錯誤。現在,我想知道是否有一種方法可以使我的程序連接到Access數據庫而無需安裝整個Microsoft Office 2007。 。

using System.Data.OleDb;

如果您的連接字符串使用Microsoft.ACE.OleDb.12.0提供程序,則您需要在客戶端上安裝Microsoft Access數據庫引擎

在提供的鏈接中,您可以找到此提供程序的兩個版本的安裝。
一種用於32位,一種用於64位。

正確使用的選項取決於應用程序中定義的目標CPU以及操作系統的位數。 當然,在32位操作系統上,您不能安裝64位提供程序,但可以相反。

如果您的應用是針對x86編譯為目標CPU的,則您需要32位版本,也可以在64位系統上安裝您的應用。 如果您的應用程序是針對x64 Target CPU編譯的,則您需要64位版本,並且只能在64位系統上運行。 如果您的應用程序是針對Any CPU編譯的,則應在安裝時決定要安裝哪個版本的ACE.OleDb.12.0 ,具體取決於操作系統的ACE.OleDb.12.0

如果這還不足以使您頭痛,那么如果客戶端計算機上已經安裝了Office,則情況看起來會很糟糕。

Office將自動安裝與其版本(32或64位)兼容的提供程序,並且您不能與其他庫並排安裝這些庫的其他版本。

那么,您最好的選擇是什么?

  • 編寫用於x86 Target CPU應用程序,並為安裝了Office 64位的系統提供專門的設置,或者要求您的客戶更改Office版本。 (我在開玩笑)
  • AnyCPU Target編寫應用程序,在安裝時檢查OS位,然后選擇引擎的適當版本。 在64位系統上,希望您的客戶未安裝32位版本的Office。
  • 使用Access 2003 format (mdb)並針對x86目標CPU進行編譯。 這種方法需要Microsoft.Jet.OleDb.4.0提供程序,該提供程序應該已經在任何目標客戶端上可用。 它不需要安裝任何東西,並且可以在任何系統上正常運行。
  • 切換到SQLiteSql Server Compact EditionSql Server LocalDB 這些選項要求對應用程序進行全面的重新測試,數據庫模式遷移以及可能的代碼更改。 仍然需要專門的庫來分發

我個人使用小型的單用戶應用程序,數據量有限(小於1gb)並且與其他Office應用程序集成時使用Access 2003 MDB解決方案。

暫無
暫無

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

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