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 ...