WEB开发网
开发学院软件开发Java JDBC 查询日志变得简单:使用增强型PreparedState... 阅读

JDBC 查询日志变得简单:使用增强型PreparedStatement向JDBC代码增加日志功能

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示:在大多数情况下,JDBC PreparedStatements 使执行数据库查询更简便并可以显著提升您整体应用程序的性能,JDBC 查询日志变得简单:使用增强型PreparedStatement向JDBC代码增加日志功能,当谈到日志查询语句时 PreparedStatement 接口就显得有些不足了, Prepared

在大多数情况下,JDBC PreparedStatements 使执行数据库查询更简便并可以显著提升您整体应用程序的性能。当谈到日志查询语句时 PreparedStatement 接口就显得有些不足了。 PreparedStatement 的优势在于其可变性,但是一个好的日志条目必须正确描述如何将SQL发送到数据库,它将密切关注用实际的参数值来替换所有参数占位符。虽然有多种方法可以解决这一难题,但没有任何一种易于大规模实施并且大部分将扰乱您的程序代码。

在本文中,您将了解到如何扩展JDBC PreparedStatement 接口来进行查询日志。 LoggableStatement 类实现 PreparedStatement 接口,但添加用于获得查询字符串的方法,使用一种适用于记录的格式。使用 LoggableStatement 类可以减少日志代码中发生错误的几率,生成简单且易于管理的代码。

注意:本文假设您有丰富的JDBC和 PreparedStatement 类经验。

典型日志解决方案

表1介绍了数据库查询时通常是如何使用 PreparedStatement (虽然忽略了初始化和错误处理)。在本文中,我们将使用SQL query SELECT 做为例子,但讨论使用其它类型的SQL语句,如 DELETE 、 UPDATE 和 INSERT 。


表1:一个典型的SQL数据库查询

String sql = "select foo, bar from foobar where foo < ? and bar = ?"; 
  String fooValue = new Long(99); 
  String barValue = "christmas"; 
  Connection conn = dataSource.getConnection(); 
  PreparedStatement pstmt = conn.prepareStatement(sql); 
  pstmt.setLong(1,fooValue); 
  pstmt.setString(2,barValue); 
  ResultSet rs = pstmt.executeQuery(); 
  // parse result... 

1 2 3 4 5  下一页

Tags:JDBC 查询 日志

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接