java.sql.Statement及子接口: PreparedStatement:
来源:互联网 发布:沉迷网络的危害事例 编辑:程序博客网 时间:2024/05/01 02:46
java.sql
接口 PreparedStatement
所有超级接口:
Statement, Wrapper
所有已知子接口:
CallableStatement
public interface PreparedStatement
extends Statement
表示预编译的 SQL 语句的对象。
SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。
注:用于设置 IN 参数值的设置方法(setShort、setString 等等)必须指定与输入参数的已定义 SQL 类型兼容的类型。例如,如果 IN 参数具有 SQL 类型 INTEGER,那么应该使用 setInt 方法。
如果需要任意参数类型转换,使用 setObject 方法时应该将目标 SQL 类型作为其参数。
在以下设置参数的示例中,con 表示一个活动连接:
PreparedStatement pstmt = con.prepareStatement
("UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?");//生成一个prepareStatement对象,并把SQL语句预编译存储在 PreparedStatement 对象中。
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
其中重要方法:
addBatch() :将一组参数添加到此 PreparedStatement 对象的批处理命令中。
executeBatch :是父类接口 Statement的方法。
将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。返回数组的 int 元素的排序对应于批中的命令,批中的命令根据被添加到批中的顺序排序。方法 executeBatch 返回的数组中的元素可能为以下元素之一:
1. 大于或等于零的数 - 指示成功处理了命令,是给出执行命令所影响数据库中行数的更新计数
2. SUCCESS_NO_INFO 的值 - 指示成功执行了命令,但受影响的行数是未知的
如果批量更新中的命令之一无法正确执行,则此方法抛出 BatchUpdateException,并且 JDBC 驱动程序可能继续处理批处理中的剩余命令,也可能不执行。无论如何,驱动程序的行为必须与特定的 DBMS 一致,要么始终继续处理命令,要么永远不继续处理命令。如果驱动程序在某一次失败后继续进行处理,则 BatchUpdateException.getUpdateCounts 方法返回的数组将包含的元素与批中存在的命令一样多,并且其中至少有一个元素将为:
3. EXECUTE_FAILED 的值 - 指示未能成功执行命令,仅当命令失败后驱动程序继续处理命令时出现
驱动程序不需要实现此方法。在 Java 2 SDK, Standard Edition, 1.3 版中已经修改了可能的实现和返回值,以适应抛出 BatchUpdateException 对象后在批量更新中继续处理命令的选项。
返回:
包含批中每个命令的一个元素的更新计数所组成的数组。数组的元素根据将命令添加到批中的顺序排序。
抛出:
SQLException - 如果发生数据库访问错误,或者驱动程序不支持批量语句。如果未能正确执行发送到数据库的命令之一或者尝试返回结果集合,则抛出 BatchUpdateException(SQLException 的子类)。
接口 PreparedStatement
所有超级接口:
Statement, Wrapper
所有已知子接口:
CallableStatement
public interface PreparedStatement
extends Statement
表示预编译的 SQL 语句的对象。
SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。
注:用于设置 IN 参数值的设置方法(setShort、setString 等等)必须指定与输入参数的已定义 SQL 类型兼容的类型。例如,如果 IN 参数具有 SQL 类型 INTEGER,那么应该使用 setInt 方法。
如果需要任意参数类型转换,使用 setObject 方法时应该将目标 SQL 类型作为其参数。
在以下设置参数的示例中,con 表示一个活动连接:
PreparedStatement pstmt = con.prepareStatement
("UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?");//生成一个prepareStatement对象,并把SQL语句预编译存储在 PreparedStatement 对象中。
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
其中重要方法:
addBatch() :将一组参数添加到此 PreparedStatement 对象的批处理命令中。
executeBatch :是父类接口 Statement的方法。
将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。返回数组的 int 元素的排序对应于批中的命令,批中的命令根据被添加到批中的顺序排序。方法 executeBatch 返回的数组中的元素可能为以下元素之一:
1. 大于或等于零的数 - 指示成功处理了命令,是给出执行命令所影响数据库中行数的更新计数
2. SUCCESS_NO_INFO 的值 - 指示成功执行了命令,但受影响的行数是未知的
如果批量更新中的命令之一无法正确执行,则此方法抛出 BatchUpdateException,并且 JDBC 驱动程序可能继续处理批处理中的剩余命令,也可能不执行。无论如何,驱动程序的行为必须与特定的 DBMS 一致,要么始终继续处理命令,要么永远不继续处理命令。如果驱动程序在某一次失败后继续进行处理,则 BatchUpdateException.getUpdateCounts 方法返回的数组将包含的元素与批中存在的命令一样多,并且其中至少有一个元素将为:
3. EXECUTE_FAILED 的值 - 指示未能成功执行命令,仅当命令失败后驱动程序继续处理命令时出现
驱动程序不需要实现此方法。在 Java 2 SDK, Standard Edition, 1.3 版中已经修改了可能的实现和返回值,以适应抛出 BatchUpdateException 对象后在批量更新中继续处理命令的选项。
返回:
包含批中每个命令的一个元素的更新计数所组成的数组。数组的元素根据将命令添加到批中的顺序排序。
抛出:
SQLException - 如果发生数据库访问错误,或者驱动程序不支持批量语句。如果未能正确执行发送到数据库的命令之一或者尝试返回结果集合,则抛出 BatchUpdateException(SQLException 的子类)。
- java.sql.Statement及子接口: PreparedStatement:
- 3、Statement陈述接口的子接口提前准备sql语句PreparedStatement中的方法来执行SQL语句
- 接口 java.sql.Statement
- Statement、PreparedStatement执行SQL
- java.sql.PreparedStatement 和 java.sql.Statement区别
- Statement常用方法 PreparedStatement接口
- Java JDBC:Statement/PreparedStatement/CallableStatement区别及性能
- java.sql 接口 PreparedStatement ResultSet DriverManager
- Java中使用Statement接口SQL语句
- jdbc中的Statement和PreparedStatement接口对象
- MySql MyEclipse 中PreparedStatement接口继承Statement,主要是PreparedStatement
- SQL语句(statement)预处理(preparedStatement)
- PreparedStatement对象替代Statement解决sql注入
- JDBC之SQL注入,PreparedStatement和Statement
- java jdbc(二)各接口介绍--Connection,Statement,ResultSet,PreparedStatement,ResultSetMetaData,DatabaseMetaDa
- 【数据库】PreparedStatement和Statement区别及用法
- PreparedStatement与Statement的区别及优势
- PreparedStatement Statement
- 一个sql语句执行计划的分析
- 什么是SaaS
- Oracle 10g PL/SQL 和 MSSQL 在编程方面有哪些异同?
- JULI
- 如何架设流媒体服务器
- java.sql.Statement及子接口: PreparedStatement:
- 挖掘发现新技术的十个习惯
- 幸福公寓(仿爱情公寓同居交友) 源码免费发布
- SQL查询重复数据和清除重复数据
- 5.12我在成都
- tomcat下的静态资源文件压缩
- uclinux-2008R1-RC8(bf561)到VDSP5的移植(37):_cplb_mgr
- 与论坛整合实现一站通
- js刷新页面代码!