三层的客户端与服务器端具体是怎么联系的?(50分)

  • 主题发起人 主题发起人 talent002
  • 开始时间 开始时间
T

talent002

Unregistered / Unconfirmed
GUEST, unregistred user!
多层的应用中,客服的用一个clinetdataset与服务器的datasetprovider相连通信的。
一般服务器都不可能把所以的记录都传给客户端。但是客户端又不可能对服务器端的dataset的sql作修改。
那是不是服务器端就要用到很多的dataset来执得不同的sql语句啊?
比如说:我可以用把服务器端的dataset的commandtext设成select * from 表 where [name]=:name然后在服务器端修改clientdataset1.params[0]:='asdf'来查找这个人。可是如果我的SQL语句改动很大的话(如:select * form 表 where x>1000)这样的话服务器端是不是要用别一个dataset或datasetprovider呢?是不是有主法直接发一条完整的sql给服务端运行呢?如果真的可以。这样的改动会不会给其它客户端上的数据集带来映响?
 
clientdataset1.close;
clientdataset1.commandtext:='select * from 表';
clientdataset1.open;
就这样可以了。
 
这样会不会成了把所有记录传达室到了客户端然后才过滤啊?
 
比如服务器端的commandtext=SELECT * from 表 WHERE pid=1
而客户端的clientdataset1.commandtext=SELECT * from 表 WHERE pid=2
这样做得到的数据会不会成了。SELECT * frOm 表 WHERE pid=1 AND pid=2啊?
 
同意楼上的,一个连接就行了。可以执行不同的语句
 
这样做的话就会产生错我不希望的结果的啊。你还同意啊?
而且也改不了。
显示:commandtext changes are not allowed
 
服务器端dataprovider的allowedcommandtext设置为true
clientdataset1.close;
clientdataset1.commandtext:='select * from 表 where pid=:pid';
clientdataset1.params[0].value:='1';//动态给参数赋值就可以了
clientdataset1.open;
 
不回产生你不希望的结果。我有个例子在:
http://www.playicq.com/dispdocnew.php?id=10802
 
我下载不了。
 
如果用hongxing_dl, 的方法,会不会对其它客户端的操作有映响?
 
没有影响啦!
试过了就知道了嘛,老兄
 
接受答案了.
 
后退
顶部