C 中使用晚繫結實現壓縮Access資料庫

2021-04-15 00:38:08 字數 1232 閱讀 9010

c#中使用晚繫結實現壓縮access資料庫.

vb對com後期繫結支援得很好,在c#中可以使用反射來實現.

函式實現**如下:

public

static

void

compactaccessdb(

string

strmdbname)

..."

,strmdbname), 

//輸入連線字串

string.format(

"provider=microsoft.jet.oledb.4.0;data source=;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設定密碼.

C 中使用晚繫結實現壓縮Access資料庫

c 中使用晚繫結實現壓縮access資料庫.vb對com後期繫結支援得很好,在c 中可以使用反射來實現.函式實現 如下 static void compactaccessdb string strmdbname strmdbname 輸入連線字串 string.format provider mic...

C 中使用晚繫結實現壓縮Access資料庫

c 中使用晚繫結實現壓縮access資料庫.vb對com後期繫結支援得很好,在c 中可以使用反射來實現.函式實現 如下 1public static void compactaccessdb string strmdbname 2 strmdbname 輸入連線字串 14string.format ...

C 中使用 實現唯讀屬性

今天在閱讀unity的fps microgame原始碼時,發現了以下奇怪的語句 public gameobject knowndetectedtarget m detectionmodule.knowndetectedtarget public bool istargetinattackrange ...