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

JDBC底子教程之PreparedStatement[Java编程]

赞助商链接



  本文“JDBC底子教程之PreparedStatement[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

概述

该 PreparedStatement 接口担当 Statement,并与之在两方面有所差别:

PreparedStatement 实例包含已编译的 SQL 语句.这就是使语句“预备好”.包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数.IN参数的值在 SQL 语句成立时未被指定.相反的,该语句为每个 IN 参数保存一个问号(“?”)作为占位符.每个问号的值必须在该语句履行之前,通过得当的setXXX 办法来供应.

由于 PreparedStatement 对象已预编译过,所以其履行速度要快于 Statement 对象.因此,多次履行的 SQL 语句常常成立为 PreparedStatement 对象,以提高效率.

作为 Statement 的子类,PreparedStatement 担当了 Statement 的全部功效.别的它还增添了一整套办法,用于设置发送给数据库以代替 IN 参数占位符的值.同时,三种办法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需求参数.这些办法的 Statement 情势(承受 SQL 语句参数的情势)不该该用于 PreparedStatement 对象.

1、成立 PreparedStatement 对象

以下的代码段(此中 con 是 Connection 对象)成立包含带两个 IN 参数占位符的 SQL 语句的 PreparedStatement 对象:

PreparedStatement pstmt = con.prepareStatement("UPDATE table4 SET m = ? WHERE x = ?");

pstmt 对象包含语句 "UPDATE table4 SET m = ? WHERE x = ?",它已发送给DBMS,并为履行作好了预备.

2、传送 IN 参数

在履行 PreparedStatement 对象之前,必须设置每个 ? 参数的值.这可通过调用 setXXX 办法来完成,此中 XXX 是与该参数呼应的范例.比方,假如参数具有Java 范例 long,则利用的办法就是 setLong.setXXX 办法的第一个参数是要设置的参数的序数位置,第二个参数是设置给该参数的值.比方,以下代码将第一个参数设为 123456789,第二个参数设为 100000000:

pstmt.setLong(1, 123456789);
pstmt.setLong(2, 100000000);

一旦设置了给定语句的参数值,便可用它多次履行该语句,直到调用clearParameters 办法排除它为止.在衔接的缺省情势下(启用自动提交),当语句完成时将自动提交或复原该语句.

假如基本数据库和驱动程序在语句提交之后仍保持这些语句的翻开状况,则同一个 PreparedStatement 可履行多次.假如这一点不成立,那么试图通过利用PreparedStatement 对象替换 Statement 对象来提高性能是没有意义的.

操纵 pstmt(前面成立的 PreparedStatement 对象),以下代码例示了若何设置两个参数占位符的值并履行 pstmt 10 次.如上所述,为做到这一点,数据库不能关闭 pstmt.在该示例中,第一个参数被设置为 "Hi"并保持为常数.在 for 循环中,每次都将第二个参数设置为差别的值:从 0 开始,到 9 完毕.

pstmt.setString(1, "Hi");
for (int i = 0; i < 10; i++) {
 pstmt.setInt(2, i);
 int rowCount = pstmt.executeUpdate();
}

3、IN 参数中数据范例的一致性

setXXX 办法中的 XXX 是 Java 范例.它是一种隐含的 JDBC 范例(普通 SQL 范例),因为驱动程序将把 Java 范例映射为呼应的 JDBC 范例(遵守该 JDBCGuide中§8.6.2 “映射 Java 和 JDBC 范例”表中所指定的映射),并将该 JDBC 范例发送给数据库.比方,以下代码段将 PreparedStatement 对象 pstmt 的第二个参数设置为 44,Java 范例为 short:

pstmt.setShort(2, 44);

驱动程序将 44 作为 JDBC SMALLINT 发送给数据库,它是 Java short 范例的尺度映射.

程序员的责任是确保将每个 IN 参数的 Java 范例映射为与数据库所需的 JDBC 数据范例兼容的 JDBC 范例.无妨考虑数据库需求 JDBC SMALLINT 的情形.假如利用办法 setByte ,则驱动程序将 JDBC TINYINT 发送给数据库.这是可行的,因为许大都据库可从一种相关的范例转换为另一种范例,并且普通 TINYINT 可用于SMALLINT 实用的任何地方


  以上是“JDBC底子教程之PreparedStatement[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 用JDBC衔接数据库
  • 得到JDBC学习示例
  • <b>JDBC API为什么若何复杂</b>
  • 配置BEA WebLogic 8.1 JDBC衔接
  • 操作easymock测试jdbc解析
  • 安置cas服务器实现定制JDBC考据
  • <b>简单的JDBC操纵程序for Java DB</b>
  • JDBC衔接数据库经验本领集萃
  • <b>JDBC衔接数据库之十大本领</b>
  • 掌握器组件JDBC数据库操作的JAVABEAN
  • SQLiteJDBC 100%纯JAVA的sqlite扩大
  • 浅析数据源在JDBC中的操纵
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

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

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