如何在Java中从连接中获取查询字符串?

如何在Java中从连接中获取查询字符串?,java,jdbc,database-connection,Java,Jdbc,Database Connection,我正在编写一个方法,尝试记录数据库调用,表单连接到它,在查询之后,有很多地方调用方法connect()开始,cleanUp()结束,我不能也不想修改每个地方。所以顺序是这样的: Connection con = ... connect(); s = con.createStatement(); ResultSet rs = s.executeQuery(" select * from xyz "); rs.next(); cleanUp(); 有很多方法都使用这个序列,

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

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

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

我建议您使用一个方面,AspectJ非常适合这种情况。 使用方面,您可以在执行受监视的方法后触发行为。
下面是几个您可以检查的示例:您可以在MySQL中从
语句中获取它。toString()

您可以使用适当的JDBC日志框架吗?给出了一些如何通过数据源代理监视语句的示例。如果您碰巧使用Oracle,驱动程序也有一些。我最喜欢这个答案,如何选择它作为我的选择^ ^?!