分享到:0
下面直接給出方法函式:
1、申明外部函式,用來取系統的臨時路徑。 function ulong gettemppath(ulong nbufferlength,ref string lpbuffer) library "kernel32.dll" alias for "gettemppatha"
2、核心方法:
global type gf_compactandrepairaccessdb from function_object
end type
forward prototypes
global function integer gf_compactandrepairaccessdb (string as_mdb)
end prototypes
global function integer gf_compactandrepairaccessdb (string as_mdb);
//檢查資料庫檔案是否存在
if not fileexists(as_mdb) then return -1
//建立臨時檔名
string ls_tmpfile
ls_tmpfile =space(255)
gettemppath(255,ls_tmpfile)
ls_tmpfile+="temp.mdb"
//建立dbengine
integer result
oleobject ole_dbengine
ole_dbengine = create oleobject
result =ole_dbengine.connecttonewobject("jro.jetengine")
//建立失敗
if result<>0 then return result
//通過dbengine 壓縮資料庫檔案
string sprovider = 'provider=microsoft.jet.oledb.4.0;'
string soldmdb,snewmdb
soldmdb = sprovider + 'data source= ' + as_mdb
snewmdb = sprovider + 'data source= ' + ls_tmpfile
ole_dbengine.compactdatabase(soldmdb, snewmdb)
destroy ole_dbengine
//拷貝剛剛壓縮過臨時資料庫檔案至原來位置
filecopy(ls_tmpfile,as_mdb,true)
//刪除臨時檔案
filedelete(ls_tmpfile)
return 0
end function
3、呼叫方法
gf_compactandrepairaccessdb("e:\eno\collect.mdb")
應注意的是,在壓縮和修復資料庫的過程中,不能有其它的操作開啟該資料庫,否則操作會失敗,因此請先關閉掉該資料庫的連線,否則執行會報錯。
此外這個函式經過修改後,可實現備份資料庫的功能,相比較更簡單一些,這裡就不提供了。
壓縮access資料庫
遇到乙個問題,使用的是accesss資料庫,在載入資料庫中的資訊的時候,速度特別慢,有時候一次查詢最終會卡15秒左右,然後才能得到結果,跟蹤發現卡的地方在sqlexecdirect中,已經是odbc api了。開啟資料庫看也沒發現啥問題,後來點了access上邊的 壓縮和修復資料庫 工具,資料庫從原...
在ASP中壓縮ACCESS資料庫
用access資料庫開發的 當隨著 資料量的不斷增長。資料庫的容量也是不斷加大。這讓asp程式速度直線下降。如果才能讓access資料庫容量盡可能小。我們要對它進行壓縮處理。下面是我整理後的源 複製另存為compact.asp並上傳到資料庫所在目錄即可正常使用。以下為引用的內容 本程式其實是通過fs...
C 壓縮Access資料庫
壓縮資料庫 資料庫鏈結 要壓縮的mdb檔案的全名 static void compactaccessdb string dbfilename objjro.gettype invokemember compactdatabase system.reflection.bindingflags.invo...