如何打开加密的access数据库(100分)

  • 主题发起人 主题发起人 silaszhe
  • 开始时间 开始时间
S

silaszhe

Unregistered / Unconfirmed
GUEST, unregistred user!
看到下面这篇文章,但试过提示:
“指定的初始化字符串不符合 OLE DB 规定!”

const
{TADOConnection 连接数据库的参数}
ADOLinkString ='Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'Password=%s;' //用户工作组(*.mdw)密码
+ 'User ID=%s;' //用户工作组(*.mdw)用户名Admin
+ 'Data Source=%s;' //数据库文件(*.mdb)位置
+ 'Persist Security Info=False;'
+ '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(application.ExeName);
mdwPassword :='';
mdwUserID :='Admin';
mdbDataSource :=mainDBPath+'ysxt.mdb';
mdbUserID :='Admin';
mdbPassword :='123';
mdbNewPassword :=''; //---这样设置完后再连接到控件的属性上就可以了!---//
with ADOtable1 do
begin {以上是给变量赋值}
close;
ConnectionString :=Format(ADOLinkString, [mdwPassword,mdwUserId,mdbDataSource, mdbPassword, mdbNewPassword]);{初始连接参数}
open;
end;

就是这个问题了,请各位赐教了。
 
1.放一个ADO ADOQuery1控件
2.将ConnectionString属性设置为
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=数据库名.mdb;Persist Security Info=False;Jet OLEDB:Database Password=密码

就可以了.
 
楼上的兄弟,你这办法不行。
我的这个数据库文件有用户组权限加密
+ 'Password=%s;' //用户工作组(*.mdw)密码
+ 'User ID=%s;' //用户工作组(*.mdw)用户名Admin
就是这个。
 
自己顶,希望能有高手来解救一下.
 
Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=%s;User ID=%s;Data Source=%s/Client.mdb;Persist Security Info=true
试试这个,我用的,一直没有问题。
一般User ID 都是Admin(默认),所以字符串中不用写。这样就行了:
Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=%s;Data Source=%s/Client.mdb;Persist Security Info=true
 
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=DSDB.mdb;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
 
const
AccessStr='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%S;Persist Security Info'+
'=False;Jet OLEDB:Database Password=%s;
function TDM.AccessConnected(DBFile: String): Boolean;
begin
ADObase.Connected:=False;
ADObase.ConnectionString:=Format(AccessStr,[DBFile,pwd??//密码]);
try
ADObase.Connected:=True;
Result:=True;
except
ADObase.Connected:=False;
Result:=False;
Exit;
end;
//-------重新连接ADO
end;
 
to:happycyp
一般UserID是admin,但我这不是啊。
to:apoloone,蓝叶菱
两位的方法还是不行。

另外我用ODBC连接的话,会提示说我帐号密码有误。我密码没问题,但不清楚该用什么用户名,Admin不行。
 
Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=%s;User ID=%s;Data Source=%s/Client.mdb;Persist Security Info=true
我用这个一直没有问题.不明白你的为什么会有问题.
是不是你的其他代码有问题. 另外,发布程序时,记着一定要把ADOConnection 组件的连接字符串从属性中去掉.让它只加载你程序中的.我曾经因为这块出过问题.
 
楼上的兄弟估计没看清楚我说的。。。
Database Password=%s;User ID=%s 这两个得填
但 + 'Password=%s;' //用户工作组(*.mdw)密码
+ 'User ID=%s;' //用户工作组(*.mdw)用户名Admin
这两个也得填,因为有用户组帐号和密码。
而且并不是默认的admin。
 
上面的设置是对的。
如果不会我还可以演示给你看。
技术交流QQ:136293586
 
后退
顶部