欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#使用晚綁定來(lái)實(shí)現(xiàn)壓縮Access數(shù)據(jù)庫(kù)的方法

 更新時(shí)間:2014年08月07日 15:14:04   投稿:shichen2014  
這篇文章主要介紹了C#使用晚綁定來(lái)實(shí)現(xiàn)壓縮Access數(shù)據(jù)庫(kù)的方法,項(xiàng)目開發(fā)中有一定的實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了C#使用晚綁定來(lái)實(shí)現(xiàn)壓縮Access數(shù)據(jù)庫(kù)的方法,通常來(lái)說(shuō)VB對(duì)Com后期綁定支持得很好,在C#中可以使用反射來(lái)實(shí)現(xiàn)。具體方法如下:

函數(shù)實(shí)現(xiàn)代碼如下:

public static void CompactAccessDB(string strMdbName)
{
   string TempMdbName = Application.StartupPath + @"\Temp.mdb";
 
   //創(chuàng)建 Jet 引擎對(duì)象
   object objJetEngine = Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine"));
 
   //設(shè)置參數(shù)數(shù)組
   //根據(jù)你所使用的Access版本修改 "Jet OLEDB:Engine Type=5" 中的數(shù)字.
   //5 對(duì)應(yīng) JET4X 格式 (access 2000,2002)
 
   object[] objParams = new object[] {
     String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}",strMdbName), //輸入連接字符串
     String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Jet OLEDB:Engine Type=5",TempMdbName) //輸出連接字符串
     };
 
   //通過(guò)反射調(diào)用 CompactDatabase 方法
   objJetEngine.GetType().InvokeMember("CompactDatabase",
       System.Reflection.BindingFlags.InvokeMethod,
       null,
       objJetEngine,
       objParams);
 
   //刪除原數(shù)據(jù)庫(kù)文件
   System.IO.File.Delete(strMdbName);
   //重命名壓縮后的數(shù)據(jù)庫(kù)文件
   System.IO.File.Move(TempMdbName, strMdbName);
   //釋放Com組件
   System.Runtime.InteropServices.Marshal.ReleaseComObject(objJetEngine);
   objJetEngine = null;
}

那么為什么要使用晚綁定呢?可以直接在項(xiàng)目中添加對(duì) JRO.JetEngine 組件的引用來(lái)實(shí)現(xiàn)。

在多人協(xié)作的開發(fā)環(huán)境中,添加引用需要簽出項(xiàng)目文件進(jìn)行修改.如果有組員機(jī)器上沒有這個(gè)組件,她就會(huì)無(wú)法編譯改動(dòng)后程序.
而采用這種方式就很方便,復(fù)制過(guò)去就能用.不需要對(duì)項(xiàng)目進(jìn)行修改.
雖然晚綁定有小小性能損失,換來(lái)的方便性還是劃算的. 而且也不是經(jīng)常會(huì)用到這個(gè)功能.

對(duì)于有密碼的access文件怎么處理呢?

很簡(jiǎn)單的,就是在輸入連接字符串中增加密碼的設(shè)置即可。
這樣默認(rèn)壓縮后的mdb就沒有密碼,如果希望壓縮后的mdb也有密碼,就在輸出的連接字符串里面增加密碼設(shè)置即可.
這個(gè)方法其實(shí)也可以用來(lái)修改mdb的密碼,取消mdb密碼,給mdb設(shè)置密碼.

相關(guān)文章

最新評(píng)論