手机
当前位置:查字典教程网 >编程开发 >JSP教程 >批量处理JDBC语句提高处理速度
批量处理JDBC语句提高处理速度
摘要:有时候JDBC运行得不够快,这使得有些程序员使用数据库相关的存储过程。作为一个替代方案,可以试试使用Statement的批量处理特性看看能否...

有时候JDBC运行得不够快,这使得有些程序员使用数据库相关的存储过程。作为一个替代方案,可以试试使用Statement的批量处理特性看看能否同时执行所有的SQL以提高速度。

存储过程的最简单的形式就是包含一系列SQL语句的过程,将这些语句放在一起便于在同一个地方管理也可以提高速度。Statement类可以包含一系列SQL语句,因此允许在同一个数据库事务执行所有的那些语句而不是执行对数据库的一系列调用。

使用批量处理功能涉及下面的两个方法:

·addBatch(String)方法

·executeBatch方法

如果你正在使用Statement那么addBatch方法可以接受一个通常的SQL语句,或者如果你在使用PreparedStatement,那么也可以什么都不向它增加。executeBatch方法执行那些SQL语句并返回一个int值的数组,这个数组包含每个语句影响的数据的行数。如果将一个SELECT语句或者其他返回一个ResultSet的SQL语句放入批量处理中就会导致一个SQLException异常。

关于java.sql.Statement的简单范例可以是:

Statementstmt=conn.createStatement();

stmt.insert("DELETEFROMUsers");

stmt.insert("INSERTINTOUsersVALUES("rod",37,"circle")");

stmt.insert("INSERTINTOUsersVALUES("jane",33,"triangle")");

stmt.insert("INSERTINTOUsersVALUES("freddy",29,"square")");

int[]counts=stmt.executeBatch();

PreparedStatement有些不同,它只能处理一部分SQL语法,但是可以有很多参数,因此重写上面的范例的一部分就可以得到下面的结果:

//注意这里没有DELETE语句

PreparedStatementstmt=conn.prepareStatement(

"INSERTINTOUsersVALUES(?,?,?)"

);

User[]users=...;

for(inti=0;i<users.length;i++){

stmt.setInt(1,users[i].getName());

stmt.setInt(2,users[i].getAge());

stmt.setInt(3,users[i].getShape());

stmt.addBatch();

}

int[]counts=stmt.executeBatch();

如果你不知道你的语句要运行多少次,那么这是一个很好的处理SQL代码的方法。在不使用批量处理的情况下,如果添加50个用户,那么性能就有影响,如果某个人写了一个脚本添加一万个用户,程序可能变得很糟糕。添加批处理功能就可以帮助提高性能,而且在后面的那种情况下代码的可读性也更好。

【批量处理JDBC语句提高处理速度】相关文章:

在JSP中处理虚拟路径

jsp 文件上传浏览,支持ie6,ie7,ie8

用jsp页面生成随机的验证数字码示例

JSP 获取真实IP地址的代码

Apache+Servlet+Jsp环境设置(中)

JSP开发工具的选择

加快JDBC中JSP数据库的访问速度

浅析Java中Data类的应用

Java编程中更新XML文档的常用方法

基于JSP 自定义标签使用实例介绍

上一篇: JSP中使用JavaMail
精品推荐
分类导航