请问大家如何对jdbc执行的每条sql语句进行检测?
例如:PrepareStatement pstmt = conn.prepareStatement(LOAD_ALLSURVEY);
rs = pstmt.executeQuery();如何在执行rs = pstmt.executeQuery();时将执行的 sql语句 和 参数 打印出来?
我试过的方法有:
1.找到classes12.jar的源代码,并对其进行修改,然后再打包,但是没有找到对应的源代码?
2.对其进行反编译,但是效果不怎么理想。
请问大家有什么好的办法没有?
例如:PrepareStatement pstmt = conn.prepareStatement(LOAD_ALLSURVEY);
rs = pstmt.executeQuery();如何在执行rs = pstmt.executeQuery();时将执行的 sql语句 和 参数 打印出来?
我试过的方法有:
1.找到classes12.jar的源代码,并对其进行修改,然后再打包,但是没有找到对应的源代码?
2.对其进行反编译,但是效果不怎么理想。
请问大家有什么好的办法没有?
解决方案 »
- struts2连接数据库时报错,Detected AnnotationActionValidatorManager, initializing it...
- for循环中与最大值比较大小
- tomcat 集群, tomcat启动问题
- 在myeclipse中编写tag文件怎么使用tagdir指定tag文件路径
- Java多线程 消息队列
- 请问可不可以在程序中设置连接池和数据源?
- 在HP-Unix下的weblogic81 发布EJB出错!
- J2EE tutorial问题
- 我想看weblogic.jar下的类,都是.class的,谁有办法??
- 怎样用Hibernate进行模糊的查询搜索???
- 关于java中使用jacob调用c++写的ocx时参数传递的问题
- java解析xlsx
PreparedStatement pstm = conn.prepareStatement(sql);
pstm.setString(1, "X");
ResultSet rs2 = pstm.executeQuery();
他的原理应该是通过PreparedStatement pstm = conn.prepareStatement(sql);存入了sql语句通过下面的set 进行?的替换我认为里面应该有个private String sql; 这个变量 来存放sql要打印 就要提供方法还有就是单调用set方法是 把变他的值 和 =前面的值 赋值到一个数组中, 通过方法返回里面的值所以 现在的问题是调出PreparedStatement的源码 但是我也没有找到 只是晓得理论上做法!
private PreparedStatement ps; public MyPreparedStatement(PreparedStatement ps) {
this.ps = ps;
}
//
public ResultSet executeQuery(String sql) throws SQLException {
System.out.println(sql);
ps.executeQuery(sql);
} //其他方法,都委托给ps处理
}
Connection conn = ...PreparedStatement pstmt = new MyPreparedStatement(conn.prepareStatement(...));接下来就用这个pstmt来执行sql语句