本人使用ACCESS数据库,在 SQL 查询语句中有一个字段值是用户输入的:
var 
  name:string; //这个变量的值由用户输入。
//  
MainForm.adoDataSet.commandtext:='select * from filetable where name='+name;如果name值包含SQL的特殊字符就出错,例: name='(xxx)';
如何屏蔽这种特殊字符?
我也试过双引号,中括号等,不行。
对于预先对字符串处理我也试过,就是麻烦得很。
有没有简单的方法?

解决方案 »

  1.   

    应该这样
    MainForm.adoDataSet.commandtext:='select * from filetable where name='+''''+name+'''';
    试试
      

  2.   

    name='+''''+name+'''';
    多此一举

    name='''+name+'''';
    是一样的
      

  3.   

    不是这个原因,我用更简单的MainForm.adoDataSet.commandtext:='select * from filetable where name='+#39+name+#39;还是不行,不是引号的问题,如果NAME里包含括事情,这句语就通不过,比如name='第(2)个',以上语名就是:select * from filetable where name='第(2)个'这个提示出错,因为有括号。