当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

操纵加强型PreparedStatement向JDBC代码增添日记过效[Java编程]

赞助商链接



  本文“操纵加强型PreparedStatement向JDBC代码增添日记过效[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在大大都情形下,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中一个好的查询日记条目看起来应与下面有几分近似:

Executing query: select foo,bar from foobar where foo < 99 and
bar='christmas'

下面是查询的日记代码的一个例子.注意:表1中的问号已经被每个参数的值替换.

System.out.println("Executing query: select foo, bar from foobar where foo
< "+fooValue+" and bar = '+barValue+"'")

一种更好的办法是成立办法,我们称之为 replaceFirstQuestionMark ,它读取查询字符串并用参数值替换问号,如表2所示.这类办法的利用无需成立复制的字符串来描写SQL语句.

表 2:利用replaceFirstQuestionMark来举行字符串替换

// listing 1 goes here
    sql = replaceFirstQuestionMark(sql, fooValue);
    sql = replaceFirstQuestionMark(sql, barValue);
    System.out.println("Executing query: "+sql);

固然这些办理筹划都易于实施,但没有一种是完善的.问题是在更改SQL模板的同时也必须更改日记代码.您将在某一点上出错几近是不可避免的.查询将更改但您忘掉了更新日记代码,您将完毕与将发送到数据库的查询不匹配的日记条目 -- 调试恶梦.

我们真正需求的是一种使我们可以一次性利用每个参数变量(在我们的实例中为 fooValue 和 barValue )的计划筹划.我们但愿有一种办法,它使我们可以得到查询字符串,并用实际的参数值替换参数占位符.由于 java.sql.PreparedStatement 没有此类办法,我们必须自己实现.


  以上是“操纵加强型PreparedStatement向JDBC代码增添日记过效[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 操纵加强型PreparedStatement向JDBC代码增添日记过效
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .