delphi 里这个sql语句错在哪里,该怎么写。谢谢。
sql:
select xingming,xuehao from banji where xingming like ('%王%') and xuehao like ('%21%')
delphi:
with Query1 do
begin
close;
sql.Clear ;
sql.add('select xingming,xuehao from banji where xingming like :a1 :a2 xuehao like :a3 ');
parambyname('a1').asstring :='%'+trim(edit1.text)+'%';
parambyname('a2').asstring :=combobox1.text;
parambyname('a3').asstring :='%'+trim(edit2.text)+'%';
open ;
end;
变量 a1 是输入的姓名,a3 是输入的学号,a2 是输入的连接符 可以使and 或者 or
执行时提示出错在:a2这里。xingming like :a1 是没有错的。
请问这个怎么写。谢谢。
[解决办法]
你这样输入的SQL语句变成了:
select xingming,xuehao from banji where xingming like '%某某%' 'and' xuehao like '%xx%'
这样就错了。连接符不能用参数的形式。你这个可以用IF语句判断,或者拼接字符串的形式。
[解决办法]
显然%的旁边并无like所必须的引号。
parambyname('a1').asstring :=quotedstr('%'+trim(edit1.text)+'%');
依次类推
[解决办法]
with Query1 do begin
close;
sql.Text:='select xingming,xuehao from banji where xingming like '
+QuotedStr('%'+trim(edit1.text)+'% ')
+combobox1.text
+' xuehao like '
+QuotedStr(' %'+trim(edit2.text)+'%');
open ;
end;