按照传统的bde方式连接数据库写的sql语句不能正常执行!
例如:strSQL := 'select * from a where f1="'+value1+'"';  //f1为字符类型的

解决方案 »

  1.   

    如果换成传参
    strSQL := 'select * from a where f1=;p1'却可以执行,WHY???(98+delphi 6 +ms sqlserver)
      

  2.   

    我还没有遇见这样的问题呀。老兄你 应该自己先看看你的SQL语句是否有错呀!
    首先,Value1必须是字符类型的数据;
    还有,就是有关单引号问题,一定要注意:单引号内的两个单引号代表一个单引号。
    所以你的SQL语句是:
      strSQL:= 'select * from a where f1='''+Value1+'''';看出了问题所在了吗?Have a good day.
      

  3.   

    1:保证Adoconnection 链接正确。
    2:Sql.Text := 'select * from a where f1 =''%s''';
      Sql.Text := Format(Sql.Text ,[value]);
      

  4.   

    呵呵。一来就以为是别人的BUG。
      

  5.   

    终于知道了是怎么回事:
    用bde连数据库时,所拼的sql中可以出现双引号,亦可出现单引号
    而在ado连数据库时,所拼的sql只能用单引号!
    引擎不同真是害死人呀!!!
      

  6.   

    你们有谁用adoquery 向数据库中添加数据,
    我的只要有日期型就出错,这是不是bug
      

  7.   

    不写单引号,写CHR(39)就肯定不会错啦
      

  8.   

    如果你一定要在多线程里面处理,要注意以下几点:1、每个线程的Create方法里面建立一个连接,而且一定要在Create方法里面做,不能在Execute方法里面做,会蓝屏
    2、其余的就可以放到Execute里面了,我做过的没问题。
    3、要注意多线程比较麻烦,而且同步问题要考虑,最好还是按照我开始所说的异步提交比较好一点
      

  9.   

    如果你一定要在多线程里面处理,要注意以下几点:1、每个线程的Create方法里面建立一个连接,而且一定要在Create方法里面做,不能在Execute方法里面做,会蓝屏
    2、其余的就可以放到Execute里面了,我做过的没问题。
    3、要注意多线程比较麻烦,而且同步问题要考虑,最好还是按照我开始所说的异步提交比较好一点