C#應用晚綁定來完成緊縮Access數據庫的辦法。本站提示廣大學習愛好者:(C#應用晚綁定來完成緊縮Access數據庫的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#應用晚綁定來完成緊縮Access數據庫的辦法正文
本文實例講述了C#應用晚綁定來完成緊縮Access數據庫的辦法,平日來講VB對Com前期綁定支撐得很好,在C#中可使用反射來完成。詳細辦法以下:
函數完成代碼以下:
public static void CompactAccessDB(string strMdbName)
{
string TempMdbName = Application.StartupPath + @"\Temp.mdb";
//創立 Jet 引擎對象
object objJetEngine = Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine"));
//設置參數數組
//依據你所應用的Access版本修正 "Jet OLEDB:Engine Type=5" 中的數字.
//5 對應 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) //輸入銜接字符串
};
//經由過程反射挪用 CompactDatabase 辦法
objJetEngine.GetType().InvokeMember("CompactDatabase",
System.Reflection.BindingFlags.InvokeMethod,
null,
objJetEngine,
objParams);
//刪除原數據庫文件
System.IO.File.Delete(strMdbName);
//重定名緊縮後的數據庫文件
System.IO.File.Move(TempMdbName, strMdbName);
//釋放Com組件
System.Runtime.InteropServices.Marshal.ReleaseComObject(objJetEngine);
objJetEngine = null;
}
那末為何要應用晚綁定呢?可以直接在項目中添加對 JRO.JetEngine 組件的援用來完成。
在多人協作的開辟情況中,添加援用須要簽進項目文件停止修正.假如有組員機械上沒有這個組件,她就會沒法編譯修改後法式.
而采取這類方法就很便利,復制曩昔就可以用.不須要對項目停止修正.
固然晚綁定有小小機能喪失,換來的便利性照樣劃算的. 並且也不是常常會用到這個功效.
關於有暗碼的access文件怎樣處置呢?
很簡略的,就是在輸出銜接字符串中增長暗碼的設置便可。
如許默許緊縮後的mdb就沒有暗碼,假如願望緊縮後的mdb也有暗碼,就在輸入的銜接字符串外面增長暗碼設置便可.
這個辦法其實也能夠用來修正mdb的暗碼,撤消mdb暗碼,給mdb設置暗碼.