如何去掉database登陆提示窗口?(论坛很多这样的问题,我了很多,没有一个可以解决问题) (100分)

E

echoljb

Unregistered / Unconfirmed
GUEST, unregistred user!
在大富翁上找了很多文章,不外乎是动态设置用户名和密码,或者
在设计时设定好database的params属性,双击TDatabase,然后写入
user name=test //用户名
password=password //密码
然后LoginPrompt设置为false,但是我的一直跳出对话框让我输入
用户名和密码。

在Tdatabase的OnLogin事件中写入如下代码也是一样的:
loginparams.Add('username=test');
loginparams.add('password=password');

用TdataBase连接sybase或者MS的SQL Server都一样。
我已在本机设置好了ODBC,如LocalServer连接到本机的SQL Server 2000,
则databse1的AliasName=LocalServer,database起一个叫做localtest或者
不写名字或者也叫localserver都试过了。
一个query1.sql.add('select * from 某表');
query1.execsql;
然后就弹出窗口让我输入用户名和密码。

这个问题到底如何解决?最好能给一个详细的,从ODBC设置到别名设置,我
想我应该是在某一个细节上没做对。期望这你的回答。谢谢。
还有一点不明白的是:我的SQL Server 2000有很多的数据库,如tempdb,pubs等等,
那如何制定TDataBase连接的那个数据库?是不是在ODBC设置时设定默认的数据库?
 
在ODBC设置时可以改变默认的Master为其它的数据库。
 
你不什么产用ado呢,它可是比odbc快多了,微软一致提倡的连接
 
请问你是driver name中选的是什么?
如果你用ACCESS的话选MSACCESS
如果用SQL SERVER的话选MSSQL
然后 双击TDatabase,然后写入
user name=test //用户名
password=password //密码
然后LoginPrompt设置为false
就可以了,我一直这样连接的
 
这是你设置的问题,我用BDE时一直很好。
loginprompt:=false;
再在database里设置四个参数:
server name,user name ,password,Database name
driver也要设置一下,可以在设计时定好,也可以在create事件里写入.
然后connected:=true;
连接成功的话,不可能出现登录提示!
 
DATABASE NAME=
SERVER NAME=
指定了么
 
感谢楼上几位!我没将问题说全:
我说的情况是一个form一个datamodule的情况,不是database、query、table组件放在
同一个form的情况,这种情况是没问题,只是如果将database组件全部放在一个单独的
datamodule时,在form上再放Tquery等组件,我怎么设置它都会有密码框跳出来。
我的设置如下:
双击TDatabase组件,在AliasName里选择ODBC已经设置好的系统DSN,
名为SQlServer61,
databasename属性为echoljb,params里输入(分两行)
user name=sa
password=
LoginPromt设置为false,keepConnection:=True。设置完了吧?至于任豆豆说的
DATABASE NAME=
SERVER NAME=
我是没有设置,请赐教(最好能以SQL Server自带的数据库举一个例子)。
query1组件的databasename就是echoljb,这时问题来了,我一运行,总说alias echoljb
不存在,如果databasename选为sqlserver61,则要求我输入密码和用户名了。
 
我也想用ADO,方便,但是我最后也要连接sybase的数据库,sybase没有ado的驱动,
所以只好用bde了。
 
阁下这种情况我也遇到过:
首先:用BDEadministrator下验证数据库是否能连接上:(servername要设为sa)
其次: databasename属性为echoljb,params属性设置为:key中输入password,value字段中
分别输入连接数据库的sa和密码。
你看行不行:)
 
Bde 的设置
With Bde do
Try
Close;
Params.Clear;
AliasName := '';
DriverName := 'MSSQL';
Params.Add('DATABASE NAME=' + strDataBaseName);
Params.Add('SERVER NAME=' + StrServerName);
Params.Add('User Name=' + StrUsername);
Params.Add('PASSWORD=' + StrPassWord);
LoginPrompt := False;
Connected := True;
Result:=True;
except
Showmessage('数据库打开失败');
end;
 
好象有项login的属性,书不在旁边哈,把他改为false就可以了
 
在datamodule中加一个:database.
把它的:loginprompt设为flase;
 
哈!
你一定是执行查询时datamodule还没有创建!
看一下Project-options->forms 中auto create form次序保证datamodule在前
或手工控制首先创建datamodule,可怜的孩子 :)

sqlserver61是ODBC 的DSN ,当然要密码
 
不幸给李大嘴兄言中!问题已解决,在project里,将
Application.CreateForm(TDataModule1, DataModule1);
放在
Application.CreateForm(TForm1, Form1);一切问题解决了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
933
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部