关于利用可变参数执行SQL动态查询的问题.(100分)

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

txfzr

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么我根据编辑框输入上的可变参数执行SQL动态查询总是通不过,我已经设置好了QUERY,
DATASOURCE及编辑框,在执行按钮的程序中我是这样写的:
QUERY1.CLOSE;
QUERY1.CLEAR;
QUERY1.SQL.ADD('SELECT NAME,SEX FORM :NUM1);
QUERY1.PAMRA[0].ASSTRING:=EDIT1.TEXT;
QUERY1.PREPARE;
QUERY1.OPEN;
语法上全都通过并能编译,但执行过程中报错,请帮忙给我解释一下原因及操作要点.
 
表名与字段名,最好不用作参数吧?
QUERY1.CLOSE;
QUERY1.SQL.Clear;
QUERY1.SQL.ADD('SELECT NAME,SEX FORM '+edit1.text);
QUERY1.PREPARE;
QUERY1.OPEN;
 
var s:string;
begin
s:='SELECT NAME,SEX FORM '+trim(edit1.text);
query1.sql.clear;
query1.sql.add(s);
query1.open;
end;
 
表名最好不要用参数,字段没有问题,好像sql语句不支持表名使用参数
 
各位,不好意思,好长时间没来了,但是我看到好几本书上都有关于在DELPHI中使用SQL
参数的例子,是不是真的SQL语句不支持表名使用参数.
 
表名应该不行吧。
QUERY1.ACTIVE:=False;
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD('SELECT NAME,SEX FORM '+''''+Edit1.Text+'''');
QUERY1.OPEN;
QUERY1.ACTIVE:=True;


 
我想你应该写成
QUERY1.SQL.ADD('SELECT NAME,SEX FORM '+ Edit1.Text);
 
str := ''SELECT NAME,SEX FORM %s';
Str := Format(str,[Edit1.Text]);
QUERY1.Close;
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD(str);
QUERY1.OPEN;
 
呵呵,写习惯写错了.应该是
QUERY1.SQL.ADD('SELECT NAME,SEX FORM '+Edit1.Text);才对.
不过,starbzj倒是一个好方法.
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部