delphi 5 用ado 怎么访问加密的access数据库?(200分)

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

jxq

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi 5中 用ado 操纵一个access 数据库(通过microsoft jet ole db provider)
本来工作的很好可是当我用把数据库加密之后就没办法再用了,当我连接时总是告诉我
"初始化提供者中发生错误,测试连接失败,无法启动应用程序。工作组信息
文件丢失,或已被其它用户以独占方式打开"
请问如何解决,我明明没用其他程序打开它啊?

谢谢
 
检查Access的设置或用户权限
 
错误提示没错,一个‘或’字。
加密,是不是设置口令了,登录时自己加上。
delphi对access2000不是太好。
 
在设置connectionstring时可以设置用户名和密码呀。
 
如果你仅仅是对access加密码123,则:
with adoc_main do begin
close;
loginprompt:=false;
connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=admin;'+
'Data Source=data/jc.mdb;Persist Security Info=True;'+
'Jet OLEDB:Database Password=123';
connected:=true;
end;
 
试着把数据库转换到Access 97.
 
对呀!用Access比较好!方便一些!
 
呜呜,都不行啊
我的连接字串时这么写的:不知是怎么回事,我把连接换做通过odbc就可以,去掉密码也可以
不知为什么这样就不行(不想通过odbc 是因为它要设置的东东太多了)
我再加500分求解,请各位高手指教
'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'password="feng";'
+ 'User ID=Admin;'
+ 'Data Source=c:/db.mdb;' +'Persist Security Info=True;'
+ 'Mode=Share Deny None;Extended Properties="";'
+ 'Jet OLEDB:System database="";'
+ 'Jet OLEDB:Registry Path="";'
+ 'Jet OLEDB:Database Password="";'
+ 'Jet OLEDB:Engine Type=5;'
+ 'Jet OLEDB:Database Locking Mode=1;'
+ 'Jet OLEDB:Global Partial Bulk Ops=2;'
+ 'Jet OLEDB:Global Bulk Transactions=1;'
+ 'Jet OLEDB:New Database Password="";'
+ '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';
 
你是“设置数据库密码”吗?还是“用户帐号”的密码?
 
password="feng";
改为:password=feng;
 
我认为你先升级一下delphi的ado套件,
然后就可以按照yangkee的方法就可以了。
我就是用这个方法的。
 
在设置AdoConnection:Connectionstring时
在All页中设置Database Password为你的密码就可以了,然后在测试.
我是在Access97中通过的..
 
我在TAOQuery中可以,在TADOConnection不行
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:/My Documents/db1.mdb;Mode=Share Deny Read|Share Deny Write;Persist Security Info=False;Jet OLEDB:Database Password=test
 
在TADOConnection中也行了(Access2000)
关键是Jet OLEDB:Engine Type=1(原来是0)和Database Password,不要设password

Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:/TICKET/db1.mdb;Mode=Share Deny Read|Share Deny Write;Persist Security Info=False;Jet OLEDB:Database Password=test;Jet OLEDB:Engine Type=1
 
你的改为:
'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'password="feng";' //delete it pqx
+ 'User ID=Admin;'
+ 'Data Source=c:/db.mdb;' +'Persist Security Info=True;'
+ 'Mode=Share Deny None;Extended Properties="";'
+ 'Jet OLEDB:System database="";'
+ 'Jet OLEDB:Registry Path="";'
+ 'Jet OLEDB:Database Password=feng;' //chg by pqx
+ 'Jet OLEDB:Engine Type=1;' //chg by pqx
+ 'Jet OLEDB:Database Locking Mode=1;'
+ 'Jet OLEDB:Global Partial Bulk Ops=2;'
+ 'Jet OLEDB:Global Bulk Transactions=1;'
+ 'Jet OLEDB:New Database Password="";'
+ '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';
 
HE,HE。
我前天正好碰到这个问题,不过解决了。
你用connectionstring设置连接时,采用‘jet 4.0’,第二项是选择数据库,然后再
PASSWORD中设置密码,是不是不管USER设置成什么,测试连接老是不行?
如果是这样,那么你的问题和我一样,问题出在此‘PASSWORD’非彼‘PASSWORD’,
真正要设置的PASSWORD 是在最后一页中的'Jet OLEDB:Database Password=你的密码’
第二项的‘PASSWORD’是指数据库管理的权限设置密码,而'Jet OLEDB:Database Password
’才是数据库打开的密码。
有分给吗?
 
我有一点疑问:你的 DataSourcec=:/db.mdb,不需要在ODBC当中配置驱动器吗?
 
你的改为:
'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'password="";' //这是用户工作组(*.mdw)密码
+ 'User ID=Admin;' //这是用户工作组(*.mdw)用户名
+ 'Data Source=c:/db.mdb;' +'Persist Security Info=True;'
+ 'Mode=Share Deny None;Extended Properties="";'
+ 'Jet OLEDB:System database="";' //这是用户工作组文件
+ 'Jet OLEDB:Registry Path="";'
+ 'Jet OLEDB:Database Password=feng;' //这里才是数据库密码
+ '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="";'
+ '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';
 
多人接受答案了。
 
后退
顶部