pb中壓縮整理access資料庫檔案 mdb

2021-06-05 10:42:38 字數 1580 閱讀 6651

分享到: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...