一个程序中有可能用到多种数据库,现在要将所有对数据库的操作存储起来,所有操作均用参数操作,要如何在程序中实现提取这些SQL语句?
操作语句类似于
adoquery1.sql.add('insert Tab1 (bookname,user) values (:p1,:p2)');
adoquery1.parameters.parametersbyname['p1'].value:=edit1.text;
adoquery1.parameters.parametersbyname['p2'].value:=edit2.text;
adoquery1.execsql;

解决方案 »

  1.   

    没有现成的函数可以调用,楼主考虑自己组装函数。
    showmessage(adoquery1.text): 只能得到 'insert Tab1 (bookname,user) values (:p1,:p2)'
    自己写个函数,遍历一遍parameters参数,把以上的SQL语句中的,如:p1给替换掉。使用替换函数stringreplace。
      

  2.   

    关键是这些SQL语句的2次使用,如果不是参数形式,可能会出问题
      

  3.   

    我一般会用showmessage 好像没有其他好的办法
      

  4.   

    变量还是会涉及到符号问题,还有数据库改变的话程序代码里的SQL语句就要作修改
      

  5.   

    还是用变量吧!QuotedStr()包起来还是比较方便点的
      

  6.   

    我一般都是运行的时候 开个SQL跟踪器
    看起来直接些
      

  7.   

    adoquery1.sql.savetoflle('c:\\1.txt');
      

  8.   

    单步跟踪时在adoquery1.execsql前 按ctrl+F7,然后在小窗口中输入adoquery1.sql.txt回车即可。
      

  9.   

    用参数形式再怎么取adoquery.sql.text都是'insert Tab1 (bookname,user) values (:p1,:p2)'
    谢谢HapBegin的提醒用QuotedStr(),再把变量里的':'替换成':'就没问题了,不然两个"中间有:的话access不能执行