如何用ADO控件打开有密码的Access数据库? Access版本不一样,请注意是Access2000还是Access97?如果还有问题,请重新装Access! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据库是 Access97 数据库,用 Access97 和 Access2000 打开时提示输入密码,输入正确密码后即可打开,都没问题。程序中的 Ado 使用的是 Jet 4.0,打开不带密码的数据库时无论是 Access97 还是 Access2000 的都没问题。 Delphi不支持Access2000(带密码),Ado 其实可以通过odbc,不要通过Jet 4.0就可以! 假设你的数据库是 行情.mdb密码是 1234567则connectstring为:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\WINDOWS\Desktop\行情.mdb;Persist Security Info=False;Jet OLEDB:Database Password=1234567 密码别填在密码框中,填在所有选项卡的database password里有问题在联系:[email protected] 请参照我用BDE纺的程序Function Tfmcenter.Getaccpass(var path:string):string;const xorString:array[0..12]of byte= ( $86, $FB, $EC, $37, $5D, $44, $9C, $FA, $C6, $5E, $28, $E6,$13 ); //SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_SCREENSAVE,0);var passBuf:array[0..14]of byte; pass:array[0..14]of char; B:Byte; F:TFileStream; I:integer;begin F:=TFileStream.Create(path,fmShareDenyNone); try F.Seek($42,soFromBeginning); F.Read(passBuf,14); for I:=0 to 13 do begin B := passBuf[i] xor xorString[i]; pass[i]:=char(B); end; pass[sizeof(pass) - 1] := #0; result:=StrPas(Pass); finally F.Free; end; end; To fontain: 你说的非常正确,非常感谢. 我的机子不知怎么回事,老是不能显示加分的编辑框.等过一段再试试. 怎么给RichEdit赋颜色? maskedit的异常捕捉 关于读取文件问题 DLL问题,高分送上!!(在线等回答) 在线等待:一个带返回值的函数,请高手指正! 散分,老子等了10个月了,才加了第一条裤衩!!! 急死了:ReportBuilder 打印报表怎么是空白啊? sakemail如何通过SMTP验证? 一个数据库的问题,高手来帮帮忙! tstrings如何用? 如何确定鼠标是在拖动还是单击? 奇怪ADO错误“字段太小而不能接受所要添加的数据的数量。试着插入或粘贴较少的数据.”
程序中的 Ado 使用的是 Jet 4.0,打开不带密码的数据库时无论是 Access97 还是 Access2000 的都没问题。
密码是 1234567
则
connectstring为:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\WINDOWS\Desktop\行情.mdb;Persist Security Info=False;Jet OLEDB:Database Password=1234567
有问题在联系:[email protected]
const
xorString:array[0..12]of byte=
( $86, $FB, $EC, $37,
$5D, $44, $9C, $FA,
$C6, $5E, $28, $E6,$13 ); //SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_SCREENSAVE,0);
var
passBuf:array[0..14]of byte;
pass:array[0..14]of char;
B:Byte;
F:TFileStream;
I:integer;
begin
F:=TFileStream.Create(path,fmShareDenyNone);
try
F.Seek($42,soFromBeginning);
F.Read(passBuf,14);
for I:=0 to 13 do
begin
B := passBuf[i] xor xorString[i];
pass[i]:=char(B);
end;
pass[sizeof(pass) - 1] := #0;
result:=StrPas(Pass);
finally
F.Free;
end;
end;
你说的非常正确,非常感谢. 我的机子不知怎么回事,老是不能显示加分的编辑框.等过一段再试试.