小妹:请问在三层结构中怎样动态传递SQL参数?(30分)

  • 主题发起人 主题发起人 gywlily
  • 开始时间 开始时间
G

gywlily

Unregistered / Unconfirmed
GUEST, unregistred user!
在三层结构中,若server端的Tquery中SQL:select * from :table
我把参数传给client端的ClientDataSet.params:
ClientDataSet1.Close;
ClientDataSet1.Params.ParamByName('table').AsString := Trim(Edit1.Text);
ClientDataSet1.Open;
//****************************
但执行到************句时异常:
Invalid use of Keyword
Token from
Line Number 1
请问怎样把参数从client端传到server端执行?
最好详细说明,小妹总分太少,大家就将就将就吧,谢谢谢谢!
我用delphi6
 
table参数类型不能设成string,应改为
ftVarBytes
同时:
ClientDataSet1.Params.ParamByName('table').text := Trim(Edit1.Text);
即可
 
同意scorpious的
 
同意scorpious的
 
to scorpious:
我照你说的这样也不行,问题和以前一样。
 
这么做3层?3层的意义好像不大了
呵呵,不过就问题而言,可以找一个办法解决,就是在服务器上天加一个方法,为Query组织SQL语句,然后在客户端的连接的AppServer中调用,然后再ClientDataset.Open
 
呵呵,我在看李维的《5.x分布式开发》,书上有这么个例子,但我在机器上跑不通,为什么?
To wisenow :
你说的方法可以,我早就试过了,我是想问问如果只传SQL的参数行不行?
我在服务器上添加了一个方法,专门用来传递SQL的参数,但是也不行!!唉~~~
郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷!~~!~!~!~!~!~!
 
provider控件的allowcommandtext要是true;
 
server端只要连的数据库就行了,具体的参数应该在client端完成
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=425874
看看这个,很早以前的贴子,不管谁的观点正确,只要仔细阅读一定受益匪浅,我觉得比看李维的书强
 
还有这个
http://www.delphibbs.com/delphibbs/dispq.asp?lid=226555
正如第一句所写“耐心看下去,多少有点启发......”,虽然大家的理解有些误会Delphi的意思(我自己这么认为的)
 
To wisenow:
你说的帖子我已经收藏了,看了一些,还没看完,写的不错。先谢谢你了:)
但我的问题还得解决阿。
To vmao,:
我的provider控件的allowcommandtext已经是true了;不行阿,^<>^
 
错了!没看清楚问题!
tablename 不能作为参数来传递的!
参数只能是where 条件部分!
如‘select :param from tablename’ 'select * from :tablename' 'select * from tablename where :aa=''123'''之类的写法都是错误的!
只能是'select * from tablename where aa=:aa'类!
如果你实在要传递表名的话就用存储过程storedprocedure好了
 
你可以用这个方法来实现
provider控件的allowcommandtext true
然后
clientdataset1.active := false;
clientdataset1.commandtext := 'select * from '+QuotedStr(Trim(Edit1.Text))+'where .....'
clientdataset1.active := true
 
后退
顶部