sql.Add('select * from tb_cl where '+p+'='+''''+s+'''');这句中的+号和单引号怎么理解?
tb_cl 是数据库的名称.

解决方案 »

  1.   

    就是字符串不断相加啊,加成这个字符串:select * from tb_cl where p = " s "还要把p和s换成你的字符串。
      

  2.   


    应该是select * from tb_cl where p = ' s ' 吧
    在delphi里字符串是在''里的,但如果要在字符串里表示'号,就得用转意字符,也就是'加上要表示的符号,也就是'',这样加起来就是''''了. 
      

  3.   

    因为在sql的语法中字符串也必须要用引号引起来,而delphi里用'来做转义.所以如果想c++一样用\来转义的话应该是
    sql.Add('select * from tb_cl where '+p+'='+'\''+s+'\'');
    换回delphi的语法,把转义符号替换回',这样你就明白为什么要这么多个引号了。
      

  4.   


    sql.Add('select * from tb_cl where '+p+'='+''''+s+''''); {简化为:}
    sql.Add('select * from tb_cl where '+p+'='''+s+'''');{再化为:}
    sql.Add('select * from tb_cl where '+p+'='+ QuotedStr(s));
    清晰多了,是吧?
      

  5.   

    利用参数形式就会清晰多了
    sql.Add('select * from tb_cl where '+p+'=:s');
    parameters.parambyname('s').value := s;
      

  6.   

    使用 sql.Add(Format('select * from tb_cl where %s=%s',[值,值])); 使用這種方式是最好,的直觀,不過要注字符 要加上 ''''+'abcd'+''''
      

  7.   

    顶楼上的,用format格式写,但是我写format还是发晕,鄙视自己一下~!
    sql.Add('select * from tb_cl where '+p+'='''+s+'''');
    我还是这么写的时候多一些。
      

  8.   

    建议用参数,
    如果用ado可以这样写 sql.Add("select * from tb_cl where "+p+"='"'+s+'"'); 这样也好看些
      

  9.   

    可以用Quotedstr 避开混淆.
    sql.Add('select * from tb_cl where '+p+'='+''''+s+''''); 
    更改为:
    sql.Add('select * from tb_cl where ' + p + '=' +  quotedstr(s));最外面的两个单引号为完整的SQL语句
    第二,三个单引号为 字段名(表里面的字段) 连接用
    第四个单引号 把等号 连接起来 形成入: 'Select * from 表 where 字段='这种形式
    后面当然形成字段值 '''' 最后形成 这种 类似的语句 'Select * from 表 where 字段=''字段值''';
    上面只不过用''''作为变量 s的连接字符串.
    建议最好避开字符串混淆:sql.Add('select * from tb_cl where '+p+'='+''''+s+'''');