[原创]用Delphi创建、压缩、修复Access数据库及修改密码

上一篇 / 下一篇  2008-03-08 12:34:48 / 个人分类:Delphi程序设计

以下是借鉴网上诸多网友的代码经过整理和修改而来。ITPUB个人空间AMfe%WPd'L"nl
下面是示例代码,注意压缩数据库的代码同时可以用于修改密码。
`9i@]~/M,_ u0ITPUB个人空间@^Q^&s
unit DataProc;
sc F4f;J)oMCA0ITPUB个人空间Sh4{ }(L/y7Gu4e#G/Ea
interface
gZ!NnG+O0
8|] ^'nD0uses Windows, SysUtils, ADODB, Variants, ComObj;
4`:H X7cr&G0
1ojKWW0constITPUB个人空间/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]*I
function BuildConnectionString: String;
e&`0w Q5J,}0function CompactDatabase(DB: String; OldPass: String='';ITPUB个人空间9~9e@,x%i{j,R*Tob
  NewPass: String=''): Boolean;ITPUB个人空间s6}:xf9@-Nj
function CreateAccess(pAccess: String; Pass: String=''): Boolean;ITPUB个人空间pg.HX@,P]^C1\]'j
function RepairDatabase(pDBFile: String; Pass: String=''): Boolean;
Uf2Z Q `#|3P@0ITPUB个人空间'kC NgSA9z/q f ?n
implementation
6E+dbM9x"A0ITPUB个人空间_)qN$O X3j
function GetTmpFile: String;ITPUB个人空间h&\;ziYc
varITPUB个人空间3A4PN*~%gY-u{.O&Z
  LPath: String;ITPUB个人空间(r T6jp d#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  beginITPUB个人空间!iUI1x tF)|8NFO L
    DeleteFile(LFile);
TW*ta[0    Result := LFile;
c3yn Gp*Z0  end;
x oR-Qp by5sm5O0end;ITPUB个人空间 jv piw;lP
ITPUB个人空间-AtQ Z3[:~
function BuildConnectionString: String;
jS*c@%x:g(GR(\U ba0beginITPUB个人空间Ne+zNs'\1J/Gg
  Result := PromptDataSource(0, '');
? R"A2T5Y/JH0end;ITPUB个人空间 u-Tx%A-D

!~Vn([Xk k'R0function CompactDatabase(DB, OldPass, NewPass: String): Boolean;ITPUB个人空间$~R&vR;nBT6T/B
varITPUB个人空间%sNQ~d/BZ5hK
  dao: OleVariant;ITPUB个人空间b d7Ypt m @h I
  TmpDB: String;
P ?:VU!h(U's6`0begin
d)ld wvP0  TmpDB := GetTmpFile;ITPUB个人空间%Le(JWJbf)\
  tryITPUB个人空间#|: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  exceptITPUB个人空间nZM I*P
    Result := False;
aDo1G?a0  end;ITPUB个人空间n$M2PtC oc$g x
end;ITPUB个人空间K/x:R*W\\

V!] a xyIr|2S7d0function CreateAccess(pAccess: String; Pass: String=''): Boolean;ITPUB个人空间{P_Yxr Z%y
varITPUB个人空间9EqCv KE*S9nUe
  cat: OleVariant;ITPUB个人空间 i6\6aM5a7f E
beginITPUB个人空间D6h#l!T3{
  tryITPUB个人空间7S-w1z/^)?LC&DY
    cat := CreateOleObject('ADOX.Catalog');
(m D)H(u$d0    cat.Create(Format(ConStr, [pAccess, Pass]));
$q&U3r;K5c.T0    Result := True;
w#U u ykJr|%d0  except
J2\3Y ex)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+pdo
var
5D ^(Y:s/S `H0  dao: OleVariant;ITPUB个人空间;o`!b6I L%t
begin
bhiT"|?(xh0  tryITPUB个人空间7AZ'l(s"]jU)DX
    dao := CreateOleObject('JRO.JetEngine');
4F.~CS'EJ0    dao.RepairDatabase(Format(ConStr, [pDBFile, Pass]));ITPUB个人空间O\fl#jA
    Result := True;
xA5nuI D0  exceptITPUB个人空间R!\,X RjsrY
    Result := False;
-~%r'M;y6x]0  end;ITPUB个人空间t0nn#cL[]6n
end;
P R,MZ3w in.yehu0ITPUB个人空间1u'\N-i} [~
end.
G1s+EXypV+{Z0
Qi GL ie5Z0

TAG:

碧海鑫波 引用 删除 hawkx   /   2008-06-07 22:49:51
我晕,这么简单的Delphi代码你还要注释啊?
引用 删除 Guest   /   2008-06-03 18:33:15
见鬼,一点注释也没有,叫谁看啊
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-07  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 1732
  • 日志数: 23
  • 建立时间: 2008-01-17
  • 更新时间: 2008-07-03

RSS订阅

Open Toolbar