首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 里这个sql语句错在哪里,该如何写。多谢

2013-04-21 
delphi 里这个sql语句错在哪里,该怎么写。谢谢。sql:select xingming,xuehao from banji where xingming lik

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;

[解决办法]
引用:
Delphi(Pascal) code

  with Query1 do begin
    close;
    sql.Text:='select xingming,xuehao from banji where xingming like '
             +QuotedStr('%'+trim(edit1.text)+'% ')
             +com……

恩,这样写对了。我一般都这样写。不喜欢有::a1那种参数形式。
[解决办法]
:a1 的方式(绑定变量)在oracle里效率比较高。
不过也有缺点,当绑定的变量作为字段名称的时候是不能使用group by的。
[解决办法]
like后面应该是 '% %'这样的,SQL里面的'号,可以用chr(39)来代替
[解决办法]
用变量

like :a1 '+combobox1.text+' xuehao
[解决办法]
讨厌使用“:”,看起来不爽。
------解决方案--------------------


lz 你想实现的是在combobox1中选择哪个连接语句,sql就怎么执行。
例如:
combobox1中选择的是and那么sql语句中就是and连接,是or就是or连接对吧。
首先你的思路是错误的,delphi中不连接不能用参数。想实现你的功能,可以用if实现。
例如:
if combobox1.text=and then
begin
…………
end
else
if combobox1.text=or then
begin
……
end;
这样就可以实现你的功能了,虽说有点麻烦。
[解决办法]
不好意思写错了!!!!!汗!!!

if combobox1.Items=0 then
begin
……
end
else
if…………

[解决办法]
if combobox1.itemindex=0 then
begin
^^^^^
end
else
if^^^^^^^^
我日,平常有提示,还真没注意过这些细节!

热点排行