为何登陆MSSQLServer数据库失败???(50分)

  • 主题发起人 主题发起人 qj_chen
  • 开始时间 开始时间
Q

qj_chen

Unregistered / Unconfirmed
GUEST, unregistred user!
我用如下一段代码登陆MSSQLServer数据库失败(其中ServerName,DatabaseName,
UserName和PassName是字符串变量)。
with MainDatabase do
begin
connected:=false;
params.Clear;
params.add('server name='+ServerName);
params.add('Database name='+DatabaseName);
params.add('User name='+UserName);
params.add('Password='+PassName);
connected:=true;
end;
如果将上述四个变量代之以Edit_ServerName.Text,Edit_DatabaseName.Text,
Edit_UserName.Text和Edit_PassName.Text则登陆成功。请教原因何在?
 
关注!对了,你看一下Edit的text属性和String有什么差别。
这是TEdit的Text属性
type TCaption = string;
property Text: TCaption
想想应该行啊,怎么会不行呢?

 
debug一下,你就能发现问题。
 
会不会是MainDatabase控件或者其他控件有ServerName,DatabaseName,
UserName或者PassName的属性啊?
要跟踪一下!
 
没有这样用过。
我是动态生成Connection String的,将所有参数都按照原来的组合动态组合起来,这样没有问题。
不管是使用Edit还是直接字符串赋值。
Connection:='server name='+ServerName+';'+...
 
问题在你用了with MainDatabase do ,根据变量作用范围准则,你先前的关于DataBaseName
的声明变量在这里失去作用,而被MainDatabase自身的DataBaseName代替。
 
是不是少了几个引号?
params.add('server name='''+ServerName+'''');
 
看看这个行不行?
with MainDatabase do
begin
connected:=false;
params.Clear;
params.add('server name='+quotedstr(ServerName));
params.add('Database name='+quotedstr(DatabaseName));
params.add('User name='+quotedstr(UserName));
params.add('Password='+quotedstr(PassName));
connected:=true;
end;
 
接受only you的答案。谢谢各位的关注!!!
 
后退
顶部