JDBC 查询日志变得简单:使用增强型PreparedStatement向JDBC代码增加日志功能
2009-11-19 00:00:00 来源:WEB开发网定制解决方案
我们的 PreparedStatement 定制实施将做为围绕JDBC驱动器提供的“真实语句(real statement)”的封装器(Wrapper)。封装器语句将转发所有方法调用(例如 setLong(int, long) 和 setString(int,String) ) 到“真实语句”。在这样做之前它将保存相关的参数值,从而它们可以用于生成日志输出结果。
表3介绍了 LoggableStatement 类如何实现 java.sql.PreparedStatement ,以及它如何使用JDBC连接和SQL模板作为输入来构建。
表3:LoggableStatement实现java.sql.PreparedStatement public class LoggableStatement implements java.sql.PreparedStatement {
// used for storing parameter values needed
// for producing log
private ArrayList parameterValues;
// the query string with question marks as
// parameter placeholders
private String sqlTemplate;
// a statement created from a real database
// connection
private PreparedStatement wrappedStatement;
public LoggableStatement(Connection connection, String sql)
throws SQLException {
// use connection to make a prepared statement
wrappedStatement = connection.prepareStatement(sql);
sqlTemplate = sql;
parameterValues = new ArrayList();
}
}
更多精彩
赞助商链接