请问为什么ADOQuery连接ACCESS数据库时无法连接!(100分)

  • 主题发起人 主题发起人 hizying
  • 开始时间 开始时间
H

hizying

Unregistered / Unconfirmed
GUEST, unregistred user!
首先声明:我是初学者,此问题如果太菜,请勿怪,谢谢!

我要做一个用户登陆的窗体,所以用ADOQuery控件,(我数据库是ACCESS)
现在的问题是:在设置connectionstring时,我用
1.use connection string
2.提供者:MS JET 4.0 OLE DB provider
3.连接:g:/temp/database/database.mdb
用户名称是admin 并选择空白密码
4.访问权限我选择:readWrite和share deny read

于是测试连接时出现一个错误:“初始化提供者时发生错误,测试连接失败。0x80040e21”

请问为什么会这样,我哪里错了吗,为什么连接不到数据库,谢谢了!
 
请帮帮忙,真得是搞不定才敢上来打扰各位大侠,请指教了!
 
哦,,我的数据库没设用户名和密码的,
 
1 首先配置ODBC,,设数据源为dbTemp
2 组装连接字符串:
adoConnection.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=dbTemp;DBQ=g:/temp/database/database.mdb;DriverId=25;FIL=Ms Access;MaxBufferSize=512;PageTimeout=10;UID=admin;"';
3 打开数据库:
adoConnection.Open('','')

 
to:hizying你的方法应该没错的,我就是这样做的,刚才试了试还是可以的,是不是你的ado有问题,装上ado2.7试试吧!
楼上的方法不好吧,用ado再配置数据源太麻烦了吧!
 
对不起,因为比较菜,能不能说详细一点,,麻烦你了,,
我建了一个ACCESS数据库,里面有一张表,名为:logon,主要存放三个字段:user_ID,user_Name,user_Password
然后我做了一个窗体,一个combobox,两个edit,两个button,一个adoquery(我听说这样比较好用)
我想在combobox中选择用户ID,然后显示用户名在edit1,在edit2输入密码
可我第一步,连接数据库时不知道怎么做(够菜了吧),请问这数据库连接要怎么做,不是直接在属性里设置connectionstring就可以吗??
 
jsongy,ado怎么装啊,对不起,我真的没装过,请指教,谢谢!
 
数据库是不是打开着??





 
Ado安装:
直接运行安装Mdac_Typ.exe
 
1、在窗体上放一个TAdoConnection控件
2、双击之,弹出connection对话框
3、选择microsoft jet 4.0 ole db provider
4、选择数据库
5、用户名为默认admin,空白密码,允许保存密码!
6、测试连接成功就行了!
7、在窗体上放一个TAdoquery控件,connection属性选择刚才添加的connection控件

然后就可以通过sql语句控制了!

ado可以到微软上去下一个,最新的是2.7,直接可以安装的!
 
在数据连接属性的高级页面里,访问权限要选择什么,

我如果选择:ReadWrite和Share Deny None,测试连接可以通过,但运行时会出现一个我无权限访问数据库logon

如果选择:readwrite和Share Deny read,测试连接无法通过,出现:“初始化提供者时发生错误,测试连接失败。0x80040e21”这个错误,

请问我要如何解决啊,唉,,

 
数据库是不是在别的地方打开着?
 
没有啊,,数据库没打开啊,,我去找个ADO来装装看,,,我现在用的是delphi5
 
高级属性页不用设置的,默认是share deny none
把loginprompt属性设为false就不会出现提示输入密码的框了!
 
jsongy,如你所说,但我运行程序时会出现一个错误“不能读取记录;在logon上没有读取的权限,
 
我这里怎么好好的?你的程序运行到哪出错?贴出来看看!
 
这段哪里错了,,,只要加上这段代码就会出错,说我没有访问logon的权限
我是想从数据库database中的表logon中取出所有用户ID(user_id),然后赋给combobox
这段代码我放在procedure Tform_logon.FormCreate中,,
with form_logon.ADOQuery1 do
begin
adoquery1.Close;
SQL.Clear;
sql.Add('select User_ID from LOGON');
open;
while not eof do
begin
combox_UserId.Items.Add(FieldByName('User_ID').AsVariant);
next;
end;
end;
 
也没有什么问题呀?是不是别的程序用独占模式打开了数据库
 
哦,,不然我重启一下机子看看,,
 
hizying,:
用ADO连接ACESS数据时,如果数据库没有设置密码,可以通过AdoConnection的连接直接连接数据库,但是当数据库设置为有密码时,就只能通过手工连接数据库,即

with ADOConnection1 do begin
close;
loginprompt:=false;
connectionstring:=
'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'password="";' //这是用户工作组(*.mdw)密码
+ 'User ID=Admin;' //这是用户工作组(*.mdw)用户名
+ 'Data Source=C:/JCWZ/data/jcwz.xyw;' +'Persist Security Info=True;'
+ 'Mode=Share Deny None;Extended Properties="";'
+ 'Jet OLEDB:System database="";' //这是用户工作组文件
+ 'Jet OLEDB:Registry Path="";'
+ 'Jet OLEDB:Database Password=xyw05158398050;' //这里才是数据库密码
+ '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';
connected:=true;
end;

 
后退
顶部