1 unit UAccessOperate;
2
3 interface
4
5 uses Windows, Sysutils, ComObj, Dialogs, ActiveX;
6
7 //修改ACCESS数据库密码
8 function ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;
9
10 //压缩与修复数据库,覆盖源文件
11 function CompactDatabase(AFileName,APassWord:string):boolean;
12
13 //建立Access文件,如果文件存在则失败
14 function CreateAccessFile(FileName:String;PassWord:string=''):boolean;
15
16
17 </pre>
18 <!--more-->
19 <pre name="code" class="delphi">
20 implementation
21
22 //声明连接字符串
23 Const
24 SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
25
26 +'Jet OLEDB:Database Password=%s;';
27
28 //=============================================================================
29
30 // Procedure: GetTempPathFileName
31
32 // Author : ysai
33
34 // Date : 2003-01-27
35
36 // Arguments: (None)
37
38 // Result : string
39
40 //=============================================================================
41
42 function GetTempPathFileName():string;
43
44 //取得临时文件名
45 var
46 SPath,SFile:array [0..254] of char;
47 begin
48 GetTempPath(254,SPath);
49 GetTempFileName(SPath,'~SM',0,SFile);
50 result:=SFile;
51 DeleteFile(PChar(result));
52 end;
53
54 //=============================================================================
55
56 // Procedure: CreateAccessFile
57
58 // Author : ysai
59
60 // Date : 2003-01-27
61
62 // Arguments: FileName:String;PassWord:string=''
63
64 // Result : boolean
65
66 //=============================================================================
67 //建立Access文件,如果文件存在则失败
68 function CreateAccessFile(FileName:String;PassWord:string=''):boolean;
69 var
70 STempFileName:string;
71 vCatalog:OleVariant;
72 begin
73 STempFileName:=GetTempPathFileName;
74 try
75 vCatalog:=CreateOleObject('ADOX.Catalog');
76 vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
77 result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
78 DeleteFile(STempFileName);
79 except
80 result:=false;
81 end;
82 end;
83
84 //=============================================================================
85
86 // Procedure: CompactDatabase
87
88 // Author : ysai
89
90 // Date : 2003-01-27
91
92 // Arguments: AFileName,APassWord:string
93
94 // Result : boolean
95
96 //=============================================================================
97
98 function CompactDatabase(AFileName,APassWord:string):boolean;
99 //压缩与修复数据库,覆盖源文件
100 var
101 STempFileName:string;
102 vJE:OleVariant;
103 begin
104 STempFileName:=GetTempPathFileName;
105 try
106 vJE:=CreateOleObject('JRO.JetEngine');
107 vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]),
108 format(SConnectionString,[STempFileName,APassWord]));
109 result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
110 DeleteFile(STempFileName);
111 except
112 result:=false;
113 end;
114 end;
115
116 //=============================================================================
117 // Procedure: ChangeDatabasePassword
118 // Author : ysai
119 // Date : 2003-01-27
120 // Arguments: AFileName,AOldPassWord,ANewPassWord:string
121 // Result : boolean
122 //=============================================================================
123 //修改ACCESS数据库密码
124 function ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;
125 var
126 STempFileName:string;
127 vJE:OleVariant;
128 begin
129 STempFileName:=GetTempPathFileName;
130 try
131 vJE:=CreateOleObject('JRO.JetEngine');
132 vJE.CompactDatabase(format(SConnectionString,[AFileName,AOldPassWord]),
133 format(SConnectionString,[STempFileName,ANewPassWord]));
134 result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
135 DeleteFile(STempFileName);
136 except
137 result:=false;
138 end;
139 end;
140
141 end.

  

posted on 2011-07-21 22:47  solokey  阅读(801)  评论(0)    收藏  举报