在往数据库中写文本时,有时会碰到DELPHI中的一些特殊字符比如说'/等等,如用ADO的COMMAND对象写时需要设置COMMANDTEXT,但如果文本中包含了这些特殊字符或特殊字符的组合,在写入时将会报错,请问如何解决。

解决方案 »

  1.   

    如果是这样你可以用QuotedStr函数来给这些特殊字符加上引号!
      

  2.   

    ADOCommand1.CommandText := 'INSERT INTO table1(id, st) VALUES(:idv, :stv)';
        ADOCommand1.Parameters.ParamByName('idv').Value := 1;
        ADOCommand1.Parameters.ParamByName('stv').Value := 'I''m HCH';这样就不会有' /等问题出现SQL语法错误。
      

  3.   

    晕。不是混分。难道用参数不行吗?
    ADOComm.ComandText:='insert into t(a) values(:a)';
    ADOComm.Pameters[0].Value:=Edit1.Text;//Edit1.Text里加'
    ADOComm.Execute;
      

  4.   

    回贴的人去试试这段话吧,我都没话说了。把下面的存入数据库,就用你们说的QuotedStr函数  uses
      sysutils;
      
      begin
      writeln('HTTP/1.0 200 OK');
      writeln('CONTENT-TYPE: TEXT/HTML');
      writeln;
      writeln('<html> <head>');
      writeln(' <title>Time</title>');
      writeln('</head><body>');
      writeln('<h1>Time at this site</h1>');
      writeln('<hr>');
      writeln('<h3>');
      writeln(formatdatatime('"Today is " dddd,mmmm d,yyyy,' + '"<br> and the time is "hh:mm:ss AM/PM',now));
      writeln('<h3>');
      writeln('<hr>');
      writeln('</body></html>');
      end;
      

  5.   

    我原来也碰到过这种问题,记得是用重新构件字符串的方式实现的,虽然笨了点,但是好理解。例如:CommandText:=''',这样就是一个'号了。同样的'/'就是一个/号了,把这个单独提
    出来,然后再与其他的地方用+号加在一起,就拼凑成一个正常的语句了:D
      

  6.   

    to: kiwa(慕容无渊) 如果文本有几万字,用你的方法不是要累死。
      

  7.   

    把'号改为''
    begin
      result := AnsiReplaceStr(sqlcom, '''', '''''');
    end;
      

  8.   

    呵呵,楼上的是正解,时间太久,忘记了要两个'' :)to: Gemini(Gemini)你什么时候用的上几万字的COMMANDTEXT?
    太BT了吧?