with query1 do
begin
    close;
    sql.clear;
    sql.add('insert into tab1 values(''al'',:str)');
    parambyname('str').asstring:=str;
    execsql;
end;

解决方案 »

  1.   

    你试试showmessage('i don''t know');
      

  2.   

    那你可以先查一遍str,把单引号改成双引号
      

  3.   

    对不起,大家的这样做法我清楚,但是我想做成:无论str是的内容是什么样的,里面可能含有多少个’号,也不用去进行相关处理就能写入到相关表中的,可以吗?请大家指教!
      

  4.   

    先查一遍str,把单引号改成双引先写个函数转换一下str
    java中可以用下面那个转换一下
      public static String escapeSQLTags(String s){
        if(s==null||s.length()==0){
          return s;
        }
        StringBuffer buf =new StringBuffer();
        char ch=' ';
        for(int i=0;i<s.length();i++){
          ch=s.charAt(i);
          if(ch=='\''){
            buf.append("\'\'");
          }
          else{
            buf.append(ch);
          }
        }
        return buf.toString();
      }
    delphi也可以类似处理吧
      

  5.   

    Edit1中你可以乱写引号str:=Edit1.Text;
    with query1 do
    begin
        close;
        sql.clear;
        sql.add('insert into tab1 values(:str)');
        parambyname('str').asstring:=str;
        execsql;
    end;
      

  6.   

    to  johnsonrao(johnson):不行的,这样的表达中如果有‘号就会报错,不信你可以试一下,注意编码!
      

  7.   

    netlib说得很对,为什么不试一下?
      

  8.   

    可用如下方法:
      str:='i don'+"'"+'t knot';
    用"'"即可表示 '
      

  9.   

    可用如下方法:
      str:='i don'+''''+'t knot';
    用''''(连续四个')即可表示 '