客户端调用服务器方法 ( 积分: 100 )

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

sskitxpgf

Unregistered / Unconfirmed
GUEST, unregistred user!
服务器端定义一个方法(含参数):<br>如procudure&nbsp;login(const&nbsp;name:widestring);<br>var&nbsp;str:string;<br>begin<br>&nbsp;&nbsp;str:='select&nbsp;*&nbsp;from&nbsp;jy&nbsp;where&nbsp;ua='+strpas(name);<br>&nbsp;&nbsp;with&nbsp;adoquery1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql.clear;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql.add(str);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>end;<br>然后在客户端调用该方法:dcom.appserver.login(trim(edit1.txt));提示方法出现错误.<br>请教一下,应该怎样处理?是不是要在什么地方先注册或者什么的.<br><br>另参照了Demos/Midas/AdHoc的例子,好象它的做法也一样,只是它没有用带参数的sql,但它的能行,而我的不能.
 
这提问题也太..也不说提示什么!谁知道你什么地方出错.
 
str:='select&nbsp;*&nbsp;from&nbsp;jy&nbsp;where&nbsp;ua=&quot;'+strpas(name)+'&quot;';<br>不过,最好还是用参数引入name变量更安全
 
不过,最好还是用参数引入name变量更安全<br><br><br>具体怎样做?
 
with&nbsp;adoquery1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql.clear;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql.add('select&nbsp;*&nbsp;from&nbsp;jy&nbsp;where&nbsp;ua=:name');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Parameters.ParamByName('name').Value&nbsp;:=&nbsp;strpas(name);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>end;
 
为什么要这样写,是不是第一次学写。
 
抓狂<br>&nbsp;&nbsp;str:='select&nbsp;*&nbsp;from&nbsp;jy&nbsp;where&nbsp;ua='+strpas(name);&nbsp;//字符类型sql语句不能没有''<br>//针对&nbsp;ms&nbsp;系列&nbsp;,正确的<br>&nbsp;&nbsp;str:='select&nbsp;*&nbsp;from&nbsp;jy&nbsp;where&nbsp;ua='''+strpas(name)&nbsp;+&nbsp;'''';//连续两个'表示一个'<br>//或楼上的楼上的写法
 
后退
顶部