我用的是ado方式:在执行以下这句sql时,发生了错误.select ' "a:b" ' 错误显示:不正确设置参数对象...但是执行这句就没有问题:select ' "ab" '我测试了一下,凡是在sql语句中出现类似 "xx:yy" 的结构就会出错,不知是什么原因.难道是ado的bug?

解决方案 »

  1.   

    select ' "a:b"    :b被delphi认为是参数需要替换值,你没替换当然会出错啦
      

  2.   

    如果改成这样就可以
    select ' "a::b" '显示结果为 "a:b"但是如果把所有的":"都变成“::”,执行结果还是不如意,
    比如执行 
    select ' ::"a::b":: '结果就会变成 ::"a:b"::真是搞不懂! :(
      

  3.   

    select ' "a:b"加空格,不过就变了
    select ' "a: b"
      

  4.   

    select ' "a:b" ' 
    是什么目的
    是要找到 A:B这条记录还是“A:B”这条记录?
      

  5.   

    难道还要在执行sql语句前还要对sql语句进行分析出里啊,那好麻烦呀,而且也容易出错啊。
      

  6.   

    是这样的,原本我是想执行一个更新语句,总是出错,后来问题就归结在上面所说的那个问题了。原本要执行的语句是udpate Table1 set Field1=' run "msgbox:hello" '总是报错:不正确的设置参数对象后来我将其改成 update Table1 set Field1=' run "msgbox hello" '
    就对了问题就出在字符串里不能出现 "xx:yy" 这样的东西,即使你加了空格,或是将它写成'"xx'+':'+'yy"' 都不行。
      

  7.   

    我用的是ado+access2000,如果用bde+odbc+access2000来执行这条语句就没有问题。太奇怪了。
      

  8.   

    to 海天子难道delphi还会检查字符串里有没有变量啊?如果改成 select ' :aa ' 就没问题,看来不是老兄所说的原因吧?
      

  9.   

    好像是双引号引起的,你这样试试
    ADOQuery1.SQL.Text := 'select ''a:b'' from table1';
      

  10.   

    to 风清参数赋值没有问题,我这个程序里面用参数赋值不太方便,我是把他形成一个sql语句,然后提交到网站上去执行.
      

  11.   

    to 海天子你说的没有问题
    但我原本想执行的是update table1 set field1='   "zhangsan:hello" ... 'field1是用户输入的内容,改变内容不太好吧?
      

  12.   

    我好像发现了一点规律
    如果想要把这个字符串
       aaa:bbb "aaa:bbb " aaa:bbb " aaa:bbb " aaa:bbb
    原封不动的保存到数据库
    必须要这样写才行sql.Text:='Insert Into Table1 (Field1)'
            +' Values(''aaa:bbb "aaa::bbb " aaa:bbb " aaa::bbb " aaa:bbb'')'看来还得专门编一个处理字符串中:的函数,将处于"后面的:变成::
    如果大家有更好的方法(除了用参数赋值),请通知小弟一声哈.