论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
批量处理JDBC语句提高处理数据速度
 作者:佚名     2007-3-14 17:29:08        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

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

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

  使用批量处理功能涉及下面的两个方法:
  · addBatch(String) 方法
  · executeBatch方法

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

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

  Statement stmt = conn.createStatement();
  stmt.insert("DELETE FROM Users");
  stmt.insert("INSERT INTO Users VALUES("rod", 37, "circle")");
  stmt.insert("INSERT INTO Users VALUES("jane", 33, "triangle")");
  stmt.insert("INSERT INTO Users VALUES("freddy", 29, "square")");
  int[] counts = stmt.executeBatch();

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

  // 注意这里没有DELETE语句
  PreparedStatement stmt = conn.prepareStatement("INSERT INTO Users VALUES(?,?,?)");

  User[ ] users = ...;
  for(int i=0; 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个用户,那么性能就有影响,如果某个人写了一个脚本添加一万个用户,程序可能变得很糟糕。添加批处理功能就可以帮助提高性能,而且在后面的那种情况下代码的可读性也更好。


责任编辑:lss
  相关新闻
一段VFP错误处理代码
在Exchange服务器中处理不能发送的信息(图)
让DIYer们再次谈起处理器超频的过去和现在
EasyJWeb 关于中文件上传的处理实例
使用Spring更好地处理Struts动作
处理外部邮件的Exchange server设置
EJB最佳实践:构建更好的异常处理框架
一个用于J2EE应用程序的异常处理框架
应用JDOM处理数据库到XML转换的JSP实现
Spring事务处理及其AOP框架的内幕
让DIYer们再次谈起处理器超频的过去和现在
使用Spring更好地处理Struts动作
EasyJWeb 关于中文件上传的处理实例
Spring事务处理及其AOP框架的内幕
如何使用Spring更好地处理Struts动作
Java图像处理技巧四则
关于oracle中大对象处理的一些方法和实例
Hibernate下数据批量处理解决方案
Spring事务处理及其AOP框架的内幕
AJAX技术之如何处理书签和翻页按扭
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号