给你一个文章吧。
ADO控件组一般都用来连接ACCESS数据库的。在数据库没有设密码的时候,用CONNECTSTRING就可以实现连接,但是如果有密码的,这时这个属性就不能用了,无论你怎么设置都无法连接!
该怎么解决呢?我问了一下朋友,对有密码的ACCESS数据库如果用ADO只能动态设定,而且这里面的参数很复杂,其实并不是设的东西负责而是这个语句很繁琐!
下面我把代码贴出,以供参考!
Const
{TADOConnection 连接数据库的参数}
ADOLinkString ='Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'Password=%s;' //用户工作组(*.mdw)密码
+ 'User ID=%s;' //用户工作组(*.mdw)用户名Admin
+ 'Data Source=%s;' //数据库文件(*.mdb)位置
+ 'Persist Security Info=True;'
+ 'Mode=ReadWrite;' // 数据库打开方式
+ 'Extended Properties=""' //默认值为空
+ 'Jet OLEDB:System Database=""' //用户工作组文件
+ 'Jet OLEDB:Registry Path=""' //注册路径
+ 'Jet OLEDB
atabase Password=%s;' //数据库密码
+ 'Jet OLEDB:Engine Type=1;'
+ 'Jet OLEDB
atabase Locking Mode=1;'
+ 'Jet OLEDB:Global Partial Bulk Ops=2;'
+ 'Jet OLEDB:Global Bulk Transactions=1;'
+ 'Jet OLEDB:New Database Password=%s;' //?密码
+ 'Jet OLEDB:Create System Database=False;'
+ 'Jet OLEDB:Encrypt Database=False;'
+ 'Jet OLEDB
on''t Copy Locale on Compact=False;'
+ 'Jet OLEDB:Compact Without Replica Repair=False;'
+ 'Jet OLEDB:SFP=False';
var mainDBPath,
mdwPassword,
mdwUserID,
mdbDataSource,
mdbUserID,
mdbPassword,
mdbNewPassword:string;
begin
mainDBPath :=ExtractFilePath(ParamStr(0));
mdwPassword :='';
mdwUserID :='Admin';
mdbDataSource :=mainDBPath+'data/hongyu.mdb';
mdbUserID :='Admin';
mdbPassword :='123456';
mdbNewPassword :='';
//---这样设置完后再连接到控件的属性上就可以了!---//
with ADOQry_User do
begin
{以上是给变量赋值}
Active :=False;
ConnectionString :=Format(ADOLinkString, [mdwPassword,dwUserId, mdbDataSource, mdbPassword,
dbNewPassword]);{初始连接参数}
end;
end;
其实把连接对话筐里的all页里的'system database'设为你的工作组信息文件就该够了。