奇怪的问题:在delphi6中,为什么连接Access数据库时必须空密码才能连接成功???(50分)

  • 主题发起人 主题发起人 tranke
  • 开始时间 开始时间
T

tranke

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中用ADO控件连接本地Access数据库时,如果Access本身有密码的话,同时我输入的密码是正确的(我

试了许多次了),ADO根本就连接不上,系统提示Access数据库文件没有独占使用或者被其它应用程序调用。反

而,如果我连接一个空密码的Access数据库时,则连接成功。本来我以为是该Access数据库文件坏了,于是我

用Access程序重新建立一个新的(有密码)的Access文件,但是连接时还是出现该问题,而如果是空密码时却

连接成功!!!
同时,我在代码中用原生ADO代码来连接也出现相同的问题,必须空密码才能成功!!!

为什么会出现这种情况,在此请有经验的大富翁指点!!!
请不要跟我说重装系统,我只想看看有没有其他人也碰到过相同的情况和改问题的解决方法。


注:Access文件是2000版本;Delphi6已打过SP2补丁,系统Win2000 Server也打过SP2补丁。
 
建立一个新的(有密码)的Access文件
和Access数据库的密码不一样。
你在User and Group Accouts设置的密码才是你登陆的密码。
即UserName and Password
 
你是在哪里设置密码的呢。在Delphi5中,要在ADO连接向导的ALL页面中的PASSWORD部分
输入其密码,而CONNECTION部分的密码是不必理会的。Delphi6的我还没试过。
 
我的登录密码就是在数据引擎连接窗口的“连接”标签的 UserName and Password 里设置
数据引擎用 MSJET 4.0 ,难道有错吗。

To zyx1122:
>建立一个新的(有密码)的Access文件
>和Access数据库的密码不一样。

不了解以上的意思,难道两者的密码不同,我只知道Access只可以设置一个密码!!!
 
错了,呵呵。
在所有里面的Jet OLEDB:Database Password里面填写。
 
To yzhshi:
既然如此,那 UserName and Password 是干什么的?记得在 UserName and Password 输入密码后,
查看连接字符串发现密码是显示在Jet OLEDB:Database Password 中的

我刚才试了一下,还是一样的错误!!!同时发现输入的密码出现在Password文本框
 
连接语句有没有错误呵!

ADOConn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'data.mdb;Persist Security Info=False;Jet OLEDB:Database Password=pass';
 
To vine:
你的连接语句没有错,但是,我是指在数据引擎连接窗口中连接Access时就算密码是正确也提示错误。
错误为:“初始化提供者时发生错误,测试连接失败。无法启动程序。工作组信息文件丢失,或是已被其它用户以独占方式打开”
根本就没有其它程序在调用!!!
 
你是不是在ODBC里设置错了用户名??
 
应该不存在ODBC这个问题,用户名是:Admin 的!
 
加了密码的ACCESS数据库,在用ADOCONNECTION连接时,在提供程序项选
JET,在所有项中有“Jet OLEDB:Database Password”,这里写数据库的密码
 
你数据库用的是用户/组的密码,并不是数据库本身的密码,密码是在system.mdw中
你可以试试把数据库拷贝到其他机上,就变成没有密码了。
 
到http://vip.6to23.com/cooldba/faq.htm
 
To SuperLeo:
既然如此,那应该怎么做呢?
我照Door2000方法作问题依旧。

TO alaclp:你提供的连接不存在!!!
 
你把位置设错了。
 
什么位置错了!!!
 
这是access在不同级别的安全保护 . 你设置的是数据库级的保护, 应该填在
Jet OLEDB:Database Password中, username and password 是用户级的安全保护, 是在
数据库中的 工具->安全-> 用户与组的帐号 中设置管理员密码
再加入到username and password中.
如果加入了username and password,必须设置Jet OLEDB:System database 为
C:/Program Files/Microsoft Office/Office/system.mdw(即system.mdw的路径)
 
在ADOConnection 的 ConnectionString 填入
Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=D:/Quake/Db/maindb.mdb;
Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry
Path="";Jet OLEDB:Database Password="password";Jet OLEDB:Engine Ty
然后再把 ADOConnection 的 Connected 设置 True 就可以打开有密码的 Access 数据库
 
我支持yongqiang的说法。
 
好,接受答案!谢谢大家
 
后退
顶部