C#中使用晚綁定實現壓縮Access資料庫

來源:互聯網
上載者:User
C#中使用晚綁定實現壓縮Access資料庫.
VB對Com後期綁定支援得很好,在C#中可以使用反射來實現.

函數實現代碼如下: 1 public static void CompactAccessDB(string strMdbName)
 2 {
 3     string TempMdbName = Application.StartupPath + @"\Temp.mdb";
 4 
 5     //建立 Jet 引擎對象
 6     object objJetEngine = Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine"));
 7 
 8     //設定參數數組
 9     //根據你所使用的Access版本修改 "Jet OLEDB:Engine Type=5" 中的數字.
10     //5 對應 JET4X 格式 (access 2000,2002)
11 
12     object[] objParams = new object[] {
13         String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}",strMdbName), //輸入連接字串
14         String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Jet OLEDB:Engine Type=5",TempMdbName) //輸出連接字串
15         };
16 
17     //通過反射調用 CompactDatabase 方法
18     objJetEngine.GetType().InvokeMember("CompactDatabase",
19             System.Reflection.BindingFlags.InvokeMethod,
20             null,
21             objJetEngine,
22             objParams);
23 
24     //刪除原資料庫檔案
25     System.IO.File.Delete(strMdbName);
26     //重新命名壓縮後的資料庫檔案
27     System.IO.File.Move(TempMdbName, strMdbName);
28     //釋放Com組件
29     System.Runtime.InteropServices.Marshal.ReleaseComObject(objJetEngine);
30     objJetEngine = null;
31 }

為什麼要使用晚綁定呢?可以直接在項目中添加對 JRO.JetEngine 組件的引用來實現的.

在多人協作的開發環境中,添加引用需要簽出專案檔進行修改.如果有組員機器上沒有這個組件,她就會無法編譯改動後程式.

這種方式就很方便,複製過去就能用.不需要對項目進行修改.

雖然晚綁定有小小效能損失,換來的方便性還是划算的. 而且也不是經常會用到這個功能.

對於有密碼的access檔案怎麼處理呢?
很簡單的,就是在輸入連接字串中增加密碼的設定即可.

這樣預設壓縮後的mdb就沒有密碼,如果希望壓縮後的mdb也有密碼,就在輸出的連接字串裡面增加密碼設定即可.

這個方法其實也可以用來修改mdb的密碼,取消mdb密碼,給mdb設定密碼.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.