qson 发表于 2013-2-3 10:36:12

JDBC-SQL的输出

前几天,有个朋友问我,怎么输出JDBC对DB的SQL?当时没明白,他的意思,一样以为是在PreparedStatement类,上封装字符串的SQL传递给它。虽然可以达到效果,当是,当使用Hibernate,ibatis,spring等等,对DB进行了封装就没则了。所以在网上找了一些方法,说起来也复杂,无意中,在网上找到一个 P6Spy.jar ,这个工具可以监控对数据库的所有操作情况,包括SQL的输出,输出引用的是 log4j 的配置。操作简单,也好使。废话说完,直接上码


1、加载 P6Spy 封装的 Driver

public static void main(String[] args) throws Exception {// TODO Auto-generated method stubClass.forName("com.p6spy.engine.spy.P6SpyDriver");String url = "jdbc:mysql://localhost:3306/db";String user = "root";String password = "123";Connection conn = DriverManager.getConnection(url, user, assword);PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM t_wap_adv WHERE id = ?");pstmt.setInt(1, 4221);ResultSet rs = pstmt.executeQuery();while(rs.next()){System.out.print(rs.getString(1));}}

2、在spy.properties里配置访问的数据的Driver
realdriver=com.mysql.jdbc.Driver

完成。就这么简单
注意:1、spy.properties 应放置于/WEB-INF/classses/目录下。
2、打印的日志生成默认应该是在本工程的目录下,一个叫spy.log的日志文件。
页: [1]
查看完整版本: JDBC-SQL的输出