程序中
ADOQuery1.SQL.add('SELECT * FROM AddressList WHERE Name='+strName);出现“参数 徐某某 没有默认值”的错误。但是使用
ADOQuery1.SQL.Add('SELECT * FROM AddressList WHERE Name=''徐某某''');
就没有问题!!!大家看看,是为什么???语句有写错了吗?

解决方案 »

  1.   

    这句当然有问题拉!
    'SELECT * FROM AddressList WHERE Name='+strName
    strName='we';的时候SQL语句就是“'SELECT * FROM AddressList WHERE Name=we”
    去运行的时候更本没有"we"这个变量啊,当然要出错拉。
    'SELECT * FROM AddressList WHERE Name=''徐某某'''
    转化成SQL后就是
    SELECT * FROM AddressList WHERE Name='徐某某'
    SELECT * FROM AddressList WHERE Name=徐某某
    你自己看看有什么区别!
    要改成:
    ADOQuery1.SQL.add('SELECT * FROM AddressList WHERE Name='''+strName+'''');
      

  2.   


    改成 ADOQuery1.SQL.add('SELECT * FROM AddressList WHERE Name='+#39+strName+#39);
    就好了
      

  3.   

    你的strname得值要用#39+'徐某某'+#39得到
    你为什么不直接用参数呢?
    adoquery1.sql.add(''SELECT * FROM AddressList WHERE Name=:strName');
    PARAMETERS.PARAMBYNAME('STRNAME').value := '徐某某';
    就可以了
      

  4.   

    ADOQuery1.SQL.add('SELECT * FROM AddressList WHERE Name='''+strName+'''');
      

  5.   

    或者你把你的语句改为
    ADOQuery1.SQL.add('SELECT * FROM AddressList WHERE Name='+QuotedStr(strName));
      

  6.   

    肯定是会出问题的, 最好还是用sailer_shi(笨笨虫)的第一个方法,, 用参数的办法!
      

  7.   

    h_hx() sailer_shi(笨笨虫)都可以,以前我主要用第一种,现在我会用第二种
      

  8.   

    ADOQuery1.SQL.add('SELECT * FROM AddressList WHERE Name='''+strName+'''');
      

  9.   

    adoquery1.sql.add(''SELECT * FROM AddressList WHERE Name=:strName');
    PARAMETERS.PARAMBYNAME('STRNAME').value := '徐某某';
      

  10.   

    ADOQuery1.SQL.add('SELECT * FROM AddressList WHERE Name='''+strName+'''');
      

  11.   

    俺要说的,你们都说光了,服了YOU!
      

  12.   

    ADOQuery1.SQL.add('SELECT * FROM AddressList WHERE Name='''+strName+'''');
      

  13.   

    再次谢谢各位!!!
    以前用的是VB和VC,没有那么麻烦,呵呵。csdn结贴真麻烦,大家都很热情,我想把分平均了,还要一个一个输入分值!!!
    就没有一个按钮点击,把分值平均给各位吗?????