项目中的sql语句都是拼接成的,怎么样捕捉跟踪程序所有sql,效果跟事件探查器差不多,最主要就是把每一次数据库操作时的sql写到一个文件里.

解决方案 »

  1.   

    这个你应该使用sqlhelper类似的类,让系统所有操作数据库的方法都调用这个类中的几个方法。然后在这个类中把执行的SQL语句想记录日志一样在执行前记录下来就好了!!!
      

  2.   

    现在项目用了MS的DAAB,有什么方法解决呢
      

  3.   

    DAAB
    ----------
    没用过,不知道什么东东!!!
      

  4.   

    不论用什么组件和技术 
    你调用DAL 访问数据库的方法应该是只有一个的
    在这个类里面做一个纪录操作就ok了例如所有的类都是调用SqlHelper访问数据库
      

  5.   

    DAAB
    MS企业库中数据访问程序块Data Access Application Block,开源
    它把SqlHelper的东西都封装好了,当时觉得调用时方便,就用了它.
      

  6.   

    哦,那你可以直接修改他的SqlHelper啊,Data Access Application Block是开源的啊。
      

  7.   

    扩展 SqlHelper如,// 这里
    // WriteSqlToLog(Command.CommandText); // WriteSqlToLog 是自己定义方法
    DataReader = Command.ExecuteReader();
    // WriteSqlToLog(Command.CommandText);
    rowsAffected = Command.ExecuteNonQuery();
      

  8.   

    今天有空试了一下,基本上实现想要效果了...搞掂,给分
    打开DAAB源码的工程项目,找到Database.cs文件,找到PrepareCommand方法
    PrepareCommand函数有两个重载方法,
    protected static void PrepareCommand(DbCommand command, DbConnection connection)
    protected static void PrepareCommand(DbCommand command, DbTransaction transaction)
    后一个也调用到前一个,所以在前一个方法加上把command.CommandText写到一个文件或系统事件日志都可以.
    如果是存储过程,或者带有参数的SQL,参考MS Sql Server事件探查器中的格式,把对应的参数拼连起来.
    如果写到系统事件日志,就要为aspnet用户添加权限