我自己在做一個自己用的個人理財系統時,由於想方便程序,所以使用了Acess數據庫,使用方便。本是沒什麼事,做完了之後就突然想到我之前做的一些使用SQL數據庫的程序時,偶爾刪除大量數據時要收縮下數據庫,我就自己沒事收縮下Acess數據庫,沒想到居然小了一半,這還只是我測試時使用的數據,如果長此以往那空間不是浪費太大了。
之後我就去找了好多的用命令收縮數據庫的方法,但是找了好多,大體都是兩種,一種是CompactDatabase(原數據庫文件,新數據庫文件,原密碼,新密碼,還有一個參數不太懂)。但是這種一直提示無效的參數數目。
另一種就是我今天剛測試成功的。
var
strS:string;//原數據庫
strT:string;//收縮完的數據庫
jro:OleVariant;
begin
jro:=createoleobject( 'jro.jetengine');
strS:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/11.mdb';
strT:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/22.mdb';
jro.CompactDatabase(strS,strT);
end;
不過在這之前我也有測試過類似的方法,但是卻提示‘找不到可安裝的ISAM’。後來找下類似的問題才知道是由於空格的原因,因爲是在網上覆制的,所以裏面的空格會有問題,主要是像Data Source這種本身單詞有空格的,必須保證他們蹭的空格只有一個英文下的空格。
還有的網上的strT裏寫的是:strT:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/22.mdb;Jet OLEDB:Engine Type=4';,但是這卻會提示版本不符的提示,可能是我的版本太低了,所以我把後面那版本的去掉。另外的數據庫的連接問題和數據庫文件的覆蓋網上有很多可以參考,我就不在多這提了。
希望能給讀者方便