以下是借鉴网上诸多网友的代码经过整理和修改而来。
ITPUB个人空间AMfe%WPd'L"nl下面是示例代码,注意压缩
数据库的代码同时可以用于修改密码。
`9i@] ~/M,_u0ITPUB个人空间@^Q^&sunit DataProc;
sc
F4f;J)oMCA0ITPUB个人空间Sh4{
}(L/y7Gu4e#G/EainterfacegZ!NnG+O08|]
^'nD0uses Windows, SysUtils, ADODB, Variants, ComObj;
4`:HX7cr&G01ojKWW0const
ITPUB个人空间/Cno~1J:Q ConStr = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
(c6h[&_kW7M)yB0 + 'Jet OLEDB:Database Password=%s';
8eV[K*v$q,A_B(s0ITPUB个人空间&AF:ZP'V#Q]*Ifunction BuildConnectionString: String;
e&`0w
Q5J,}0function CompactDatabase(DB: String; OldPass: String='';
ITPUB个人空间9~9e@,x%i {j,R*To b NewPass: String=''): Boolean;
ITPUB个人空间s6}:xf9@-Njfunction CreateAccess(pAccess: String; Pass: String=''): Boolean;
ITPUB个人空间pg.HX@,P]^C1\]'jfunction RepairDatabase(pDBFile: String; Pass: String=''): Boolean;
Uf2Z
Q `#|3P@0ITPUB个人空间'kCNgSA9z/q f
?nimplementation
6E+db M9x"A0ITPUB个人空间_)qN$O
X3jfunction GetTmpFile: String;
ITPUB个人空间h&\;ziYcvar
ITPUB个人空间3A4PN*~%gY-u{.O&Z LPath: String;
ITPUB个人空间(rT6jpd#D%v LFile: array[0..MAX_PATH] of Char;
ZMq4Tr,p7W0begin
0S!H'^1SmE
X`S.z0 LPath := ExtractFilePath(ParamStr(0));
.C8Sw Q$k4ZP:?hd0 if (GetTempFileName(PChar(LPath), '~data', 0, LFile) <> 0) then
upKZfs{4v0 begin
ITPUB个人空间!iUI1xtF)|8NFO L DeleteFile(LFile);
TW*ta[0 Result := LFile;
c3ynGp*Z0 end;
xoR-Qpby5sm5O0end;
ITPUB个人空间jvpiw;lPITPUB个人空间-AtQ
Z3[:~function BuildConnectionString: String;
jS*c@%x:g(GR(\U ba0begin
ITPUB个人空间Ne+zNs'\1J/Gg Result := PromptDataSource(0, '');
?
R"A2T5Y/JH0end;
ITPUB个人空间
u-Tx%A-D!~Vn([Xkk'R0function CompactDatabase(DB, OldPass, NewPass: String): Boolean;
ITPUB个人空间$~R&vR;nBT6T/Bvar
ITPUB个人空间%sNQ~d/BZ5hK dao: OleVariant;
ITPUB个人空间bd7Yptm
@h
I TmpDB: String;
P
?:VU!h(U's6`0begin
d)ld w vP0 TmpDB := GetTmpFile;
ITPUB个人空间%Le(JWJbf)\ try
ITPUB个人空间#|:R2es4q dao := CreateOleObject('JRO.JetEngine');
y"Yw3X;SY`~0 dao.CompactDatabase(Format(ConStr, [DB, OldPass]),
3J
z$OIa2O2Z0 Format(ConStr, [DB, NewPass]));
ITPUB个人空间0mNfdaJ Result := CopyFile(PChar(TmpDB), PChar(DB), False);
ITPUB个人空间&@'~H4fU DeleteFile(TmpDB);
6g&nhDb:\8p0 except
ITPUB个人空间nZM
I*P Result := False;
aDo1G?a0 end;
ITPUB个人空间n$M2PtC oc$g xend;
ITPUB个人空间K/x:R*W\\V!] axyIr|2S7d0function CreateAccess(pAccess: String; Pass: String=''): Boolean;
ITPUB个人空间{P_Yxr
Z%yvar
ITPUB个人空间9E qCvKE*S9nUe cat: OleVariant;
ITPUB个人空间 i6\6aM5a7f Ebegin
ITPUB个人空间D6h#l!T3{ try
ITPUB个人空间7S-w1z/^)?LC&DY cat := CreateOleObject('ADOX.Catalog');
(mD)H(u$d0 cat.Create(Format(ConStr, [pAccess, Pass]));
$q&U3r;K5c.T0 Result := True;
w#Uu ykJ r|%d0 except
J2\3Yex)gy
_0 Result := False;
ITPUB个人空间 z;Ab"G|y` k{ end;
(\
My
q4`A0jC0end;
ITPUB个人空间z v+f0cm8~t.z!^.D*v9[3F[C&M+B0function RepairDatabase(pDBFile: String; Pass: String=''): Boolean;
ITPUB个人空间 `/ZZ+p dovar
5D^(Y:s/S `H0 dao: OleVariant;
ITPUB个人空间;o`!b6I
L%tbegin
bhiT"|?(xh0 try
ITPUB个人空间7AZ'l(s"]jU)DX dao := CreateOleObject('JRO.JetEngine');
4F.~CS'EJ0 dao.RepairDatabase(Format(ConStr, [pDBFile, Pass]));
ITPUB个人空间O\fl#jA Result := True;
xA5nuID0 except
ITPUB个人空间R!\,X
RjsrY Result := False;
-~%r'M;y6x]0 end;
ITPUB个人空间t0nn#cL[]6nend;
P
R,MZ3w in.yehu0ITPUB个人空间1u'\N-i} [~end.
G1s+EXypV+{Z0Qi GLie5Z0