如果我要以编辑框的内容作为参数,该怎么写?
ADOQuery1.SQL.add('selet * from tableName where columnName = '''+ Edit1.Text + '''');
这样对吗?其实就算对我也看不懂,恳请各位高手帮忙,谢谢。

解决方案 »

  1.   

    sql:= format('selet * from tableName where columnName = ''%s''',[Edit1.Text]);
      

  2.   


    你也可以这么写
    ADOQuery1.SQL.add('selet * from tableName where columnName ='+quotedstr(Edit1.Text));
    这样看比较清楚
      

  3.   

    //--记住:在delphi开发环境中编写代码时,两个单引号('')表示你在
    //--字符串中输入了一个单引号字符;
    //--如:
     var
        s:string;
    begin
    s:='abcd';
    s:=s+' '' ';
    showmessage(s);
    s:='delphi7:'' '+'string  test''';
    showmessage(s);
    s:='';
    s:='test3'+' '' '+s+' '' ';
    showmessage(s);
    end;
      

  4.   

    columnName 是字符类型:
    ADOQuery1.SQL.add('selet * from tableName where columnName = '''+ Edit1.Text + '''');
    columnName 是数值类型:
    ADOQuery1.SQL.add('selet * from tableName where columnName = ''+ Edit1.Text + ''');
      

  5.   

    首先看输出结果(假设Edit1.text='Edit1'):
    selet * from tableName where columnName ='Edit1'
    'selet * from tableName where columnName = '''+ Edit1.Text + ''''
                                               | |               |
                                               | |               这是一个字符串,它的内容是一个单引号,对应Edit1后面的单引号
                                               | 两个单引号,对应输出后的Edit1前面的单引号
                                               第一个引号的结束
      

  6.   

    显示的有点乱了,整理整理,不知道楼主能不能看明白
    'selet * from tableName where columnName = '''+ Edit1.Text + ''''
                              第一个引号的结束 | |               |
        两个单引号,对应输出后的Edit1前面的单引号|               这是一个字符串,它的内容是一个单引号,对应Edit1后面的单引号
                                                
      

  7.   

    有好的方法何必自己写,用传参数的方式,delphi已经为我们处理好:
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('selet * from tableName where columnName = :columnName');
      ADOQuery1.Parameters.ParamByName('columnName').Value := Edit1.Text这样不用管columnName 是什么类型,也不用管这个Edit1中的内容 的是不是单引号。如果用楼上的方法,楼主可以试验一下在edit1中输入英文的单引号看是什么结果。
      

  8.   

    对,楼上的动态的SQL语句,不用那个引号,常出错还麻烦呀;
      

  9.   

    请问这个具体问题怎么解决,不要说得太多:ADOQuery1.SQL.add('selet * from tableName where columnName = '''+ Edit1.Text + '''');
    而 Edit1.Text 中包含一个单引号,各位测试一下运行时会不会报错!!!我想提问者是想问这个问题吧,不要拿着一个简单东西说一万遍
      

  10.   

    是对的,顺便解释一下单引号'的用法
    'selet * from tableName where columnName = '(第一个引号的结束)  ''(两个单引号,对应输出后的Edit1前面的单引号)+ Edit1.Text + ''''( 这是一个字符串,它的内容是一个单引号,对应Edit1后面的单引号)楼主这下该明白了吧
                                             
                       
      

  11.   

    ADOQuery1.SQL.add('selet * from tableName where columnName = ' + QuotedStr(Edit1.Text));
      

  12.   

    如果我要以编辑框的内容作为参数,该怎么写?
    很简单啊.
    两种方法;
    一、
    ADOQuery1.SQL.add('selet * from tableName where columnName = '''+ Edit1.Text + '''');
    对啊,就是这样啊.但是只能录入非引导符号的内容。
       但是你有可能会是模糊查询,编辑框录入的内容不会是严格匹配的,那就改成这样:
       ADOQuery1.SQL.add('selet * from tableName where columnName Like '''% + Edit1.Text + '%''');
     
    二、
    用参数
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('selet * from tableName where columnName = :columnName');
      ADOQuery1.Parameters.ParamByName('columnName').Value := Edit1.Text
      这样模糊查询我还没有试,不敢胡说。
      

  13.   

    ADOQuery1.SQL.Add('selet * from tableName where columnName ='+#39+Edit1.Text+#39)
    #39是'的键值,这种方法不会太头晕哦!
      

  14.   

    FSQL := 'selet * from tableName where columnName = %s';
    FSQL := Format(FSQL, [QuotedStr(Edit1.Text)]);
    很清爽的阿,
      

  15.   

    To lejun1984(快乐的军队): 
     
      
    是对的,顺便解释一下单引号'的用法'selet * from tableName where columnName = '(第一个引号的结束)  ''(两个单引号,对应输出后的Edit1前面的单引号)+ Edit1.Text + ''''( 这是一个字符串,它的内容是一个单引号,对应Edit1后面的单引号)楼主这下该明白了吧
    你的解释是不对的,自相矛盾。
    ''(两个单引号,对应输出后的Edit1前面的单引号),那么''''为何来理解为两个单引号呢?
    正确的解释应该是:
    'selet * from tableName where columnName = ''' + Edit1.Text + ''''分解开:
    'selet * from tableName where columnName = '''  最后的三个单引号, 前面连续的两个是Pascal语法中约定的用来表示字符串常数中的一个单引号的,后面的一个是与最左边的单引号共同组成字符串常数两数的语法定界符了。+ ''''    按上面的解释, 第一个和最后一个是字符串常数定界符, 中间的两个是用来表示一个单引号。
      

  16.   

    ADOQuery1.SQL.add('selet * from tableName where columnName = '''+trim(Edit1.Text)+ '''');