预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共40页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

江苏大学计算机学院Version2.0使用PreparedStatement对象创建应用程序管理数据库事务执行批量更新在JDBC中创建并调用存储过程在JDBC中使用元数据PreparedStatement接口是从Statement接口派生的,并且在java.sql包中。PreparedStatement对象:使您能够将运行时参数传递给SQL语句以查询和修改表中的数据。由JDBC编译并准备一次。以后调用PreparedStatement对象不会重新编译SQL语句。帮助减少数据库服务器上的负载,因此提高了应用程序的性能。Connection对象的prepareStatement()方法用于将参数化的查询提交给数据库。SQL语句能够使用‘?’符号作为占位符,在运行时由输入参数来替代。例如:stat=con.prepareStatement("SELECT*FROMscoreWHEREnumber=?");以下代码段使用PreparedStatement对象从标题表检索作者编写的书籍:Stringstr="SELECT*FROMtitlesWHEREau_id=?";PreparedStatementps=con.prepareStatement(str);ps.setString(1,"1001");ResultSetrs=ps.executeQuery();以下代码段使用PreparedStatement对象将state修改成CA,在authors表中,CA的city是Oakland:Stringstr="UPDATEauthorsSETstate=?WHEREcity=?";PreparedStatementps=con.prepareStatement(str);ps.setString(1,"CA");ps.setString(2,"Oakland");intrt=ps.executeUpdate();事务:是一组一条或多条SQL语句,它们作为一个单元执行。仅当事务中的所有SQL语句成功执行后才完成。维护数据库中数据的一致性。提交事务:mit()方法用来反映数据库中事务所作的更改。rollback()方法用于撤销最后一次提交操作之后数据库中所作的更改。您需要显式调用mit()和rollback()方法。在JDBC中执行批量更新:Statement或PreparedStatement接口提供了以下方法来创建和执行批量的SQL语句:voidaddBatch():将SQL语句添加到一个批量。intexecuteBatch():将批量的SQL语句发送到数据库以进行处理并返回已更新的行的总数。.voidclearBatch():从批量中除去SQL语句。以下代码段创建批量的SQL语句:con.setAutoCommit(false);Statementstmt=con.createStatement();stmt.addBatch("INSERTINTOproduct(p_id,p_desc)VALUES(1001,'Printer')");stmt.addBatch("INSERTINTOproduct(p_id,p_desc)VALUES(1002,'Scanner')");批量中的SQL语句按照这些语句在批量中出现的顺序执行。执行批量SQL语句的方法调用是:int[]updcount=state.executeBatch();访问数据库时如果发生了问题,则JDBCAPI方法addBatch()或executeBatch()会抛出SQLException。当批量中的SQL语句由于以下原因不能执行时,会抛出BatchUpdateException异常:SQL语句中有非法变量。不存在您要从中检索数据的数据库表。BatchUpdateException使用更新计数数组来识别抛出异常的SQL语句。一个参数化的存储过程可以接受一个或多个参数。存储过程的参数可以是以下任何一种形式:IN:使用该参数可以将自变量传递给存储过程OUT:使用该参数可以传递存储过程的返回值。INOUT:组合了IN和OUT参数的功能。INOUT参数使您能够将自变量传递给存储过程,也可以使用该参数来存储存储过程的返回值。不使用任何参数调用存储过程:Connection接口提供prepareCall()方法,使用该方法创建CallableStatement对象来调用存储过程。prepareCall()具有以下三种格式:CallableStatementprepareCall(Stringstr)CallableStatementprepareCall(Stringstr,intresSetType,intresSetConcurrency)CallableStatementp