请问如何用ADO连接设了密码的Access的mdb数据库(50分)

  • 主题发起人 主题发起人 jonson
  • 开始时间 开始时间
J

jonson

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大吓:
我用ADO的Microsoft Jet 4 Ole db Provider连接Access的mdb数据库时没有问题,
但当我用Access设置了mdb数据库密码后,再用ADO连接,系统提示:‘测试连接失败,
因为初始化提供程序时发生错误。无法启动应用程序。工作组信息文件丢失,
或是已被其它用户以独占方式打开’
请问各位怎样解决。
感谢万分
 
给你一个文章吧。

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:Database Password=%s;' //数据库密码
+ 'Jet OLEDB:Engine Type=1;'
+ 'Jet OLEDB:Database 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:Don''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'设为你的工作组信息文件就该够了。
 
刚才的最后一句就该解决你的问题了。
 
给你一个最简单的
你的密码应该写在最后一页的 jet oledb database password 中。也就是“所有”那一页
“连接”那一页的“空白密码”还是选着
 
设置数据库密码,就可以了
 
不要设数据库密码,
设一个管理员密码
 
我试过你们所说的所有的方法,没有一个可行的。
 
youcan的方法很好
 
试试这个:
直接把你的Ado控件的ConnectionString设为:
Provider=Microsoft.Jet.OleDB.4.0;
Data Source=E:/db.mdb;//这里是你的数据库文件的路径及文件名
Jet OLEDB:Engine Type=5;
Locale Identifier=0x0804;
Jet OLEDB:Database Password=YourPassWord//这里是你的密码
 

Similar threads

后退
顶部