【问题标题】:How to get query string from connection in Java?如何从Java中的连接中获取查询字符串?
【发布时间】:2016-10-05 21:01:24
【问题描述】:

我正在编写一个方法来尝试记录数据库调用,形成连接到它,在查询之后,有很多地方调用方法 connect() 开始和 cleanUp() 方法结束,我可以't也不想修改每个地方。所以顺序是这样的:

  Connection con = ...
  connect();
  s = con.createStatement();
  ResultSet rs = s.executeQuery(" select * from xyz ");
  rs.next();
  cleanUp();

有很多方法使用这个序列,那么我如何以某种方式在 cleanUp() 中,从所有运行查询的方法中获取 sql 查询字符串 [ 在这种情况下:select * from xyz ],是否有从“con”获取该信息的方法,con 对象是否知道它刚刚运行了什么查询?

【问题讨论】:

  • 你能使用合适的 JDBC 日志框架吗?
  • This article 给出了一些如何通过数据源代理监控语句的示例。如果你碰巧用的是Oracle,驱动也有一些built-in diagnostic capabilities
  • 我最喜欢这个答案,如何选择它作为我的选择^_^?!

标签: java jdbc database-connection


【解决方案1】:

我建议你使用一个方面,AspectJ 非常适合这种情况。 使用方面,一旦执行了监视的方法,您就可以触发行为。 以下是您可以查看的几个示例:http://www.yegor256.com/2014/06/01/aop-aspectj-java-method-logging.htmlhttps://mathewjhall.wordpress.com/2011/03/31/tracing-java-method-execution-with-aspectj/

【讨论】:

    【解决方案2】:

    您可以从Statement.toString() 在 MySQL 中获取它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 2012-12-24
      • 2021-06-20
      • 2011-11-11
      相关资源
      最近更新 更多