`
fanta123
  • 浏览: 6806 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

批量处理JDBC语句提高处理速度

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


ps:原文来自:http://info.mysql.cn/jsp/2006/0323/5189.html[/size][/size][/size]
分享到:
评论

相关推荐

    JDBC的批量处理语句

    "JDBC批量处理语句" JDBC 批量处理语句是指使用 JDBC 连接...使用 JDBC 批量处理语句可以提高应用程序的性能,减少数据库访问次数,并提高执行效率。但是,需要根据实际情况选择合适的方法,避免出现异常或错误。

    JDBC批量插入 更新 删除等操作

    一、JDBC的批量插入 一、JDBC的批量更新 一、JDBC的批量删除 一、JDBC的批量修改

    P6SPY JDBC拦截打印sql语句 非常好的调试工具

    P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...

    JdbcTemplate的批量方法使用

    jdbc批量方法。多个sql语句可以一起执行

    jdbc编程[归纳].pdf

    本文档是关于 JDBC 编程的总结,涵盖了 JDBC 的基础知识、JDBC API 介绍、JDBC 驱动程序的类型、JDBC 连接到 Oracle、JDBC 程序优化、JDBC 分页、JDBC 封装、JDBC 与 Swing 的集成开发等内容。 作为一名软件开发者...

    JDBC API教程与参考手册part3

    然后,本书转向更高级的主题,集中介绍JDBC 3.0API的一些高级功能,如可滚动和可更新的结果集、批量更新、SQL99数据类型、定制映射、保存点、语句池以及自动生成键等。 除了深入介绍JDBC元数据API之外,本书还给出了...

    JDBC API教程与参考手册part4

    然后,本书转向更高级的主题,集中介绍JDBC 3.0API的一些高级功能,如可滚动和可更新的结果集、批量更新、SQL99数据类型、定制映射、保存点、语句池以及自动生成键等。 除了深入介绍JDBC元数据API之外,本书还给出了...

    JDBC API教程与参考手册part2

    然后,本书转向更高级的主题,集中介绍JDBC 3.0API的一些高级功能,如可滚动和可更新的结果集、批量更新、SQL99数据类型、定制映射、保存点、语句池以及自动生成键等。 除了深入介绍JDBC元数据API之外,本书还给出了...

    基于SpringJDBC的轻量级ORM框架sborm.zip

    3、QueryBuilder:单表查询基本上都可以实现零Sql(除非查询条件特别复杂的),更新、删除等操作也可以通过QueryBuilder进行批量处理,不局限于根据主键来处理。 4、分表操作的支持:对于分表操作和常规的使用...

    hql批量删除

    批量删除数据批量插入数据 9.4.4 直接通过JDBC API来进行批量操作 当通过JDBC API来执行SQL insert、update和delete语句时,SQL语句中涉及到的数据不会被加载...以下程序直接通过JDBC API来执行用于批量更新的SQL语句:

    JDBC PrepareStatement 使用(附各种场景 demo)

    该资源中包含 JDBC 连接 MySQL 完整代码、常规 select、update 语句完整代码,以及 JDBC 批量处理数据的几种不同方式完整代码,且附带 使用说明!

    JSP+Servlet+JDBC实现MYSQL增删改查

    用JSP+SERVLET实现的简单的数据库增删改查。本方法适用小型项目。SQL语句和代码没有分离。不方便数据库工程师维护项目。不能有效防止SQL注入。

    用java程序怎么实现200ms往数据库中插入10000条数据

    我们可以使用 `addBatch()` 方法将多个插入语句添加到批量中,然后使用 `executeBatch()` 方法执行批量插入操作。 优化插入性能 为了提高插入性能,我们可以使用以下优化方法: * 使用批量插入方式 * 使用...

    利用JDBC的PrepareStatement打印真实SQL的方法详解

    PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程,下面这篇文章主要给大家介绍了关于利用JDBC的PrepareStatement打印真实SQL的方法,需要的朋友可以参考借鉴,下面来一起看看吧。

    让hibernate输出sql语句参数配置.doc

    Hibernate 配置参数详解 Hibernate 是一个流行的 ...hibernate.jdbc.batch_size 参数用于指定 JDBC 批量抓取数量的大小。 通过合理配置这些参数,可以提高 Hibernate 框架下的对象效率,从而实现对 J2EE 应用的优化。

    MySQL_4_JDBC高级操作和事务1

    第十二章 JDBC批处理操作批量处理允许您将相关的SQL语句分组到批处理中,并通过对数据库的一次调用提交它们。当您一次向数据库发送多个SQL语句时,可以减少连接

    每天十道面试题(五)——JDBC数据库编程部分

    3、在使用JDBC操作数据库时如何实现批量添加数据?4、简述JDBC中的常用的类和接口5、JDBC事务的特性及常用方法6、简述JDBC原理 1、PreparedStatement接口与Statement接口相比,有哪些优势? 1)性能方面,...

    Mybatis批量插入的四种方式.docx

    BatchExecutor 是一种高效的批量插入方式,它可以将多个 SQL 语句合并到一个批量计划中,减少了数据库的交互次数。 下面是一个示例代码: ```java public void insertBatch(List&lt;User&gt; userList) { List...

    使用JDBC在MySQL数据库中如何快速批量插入数据

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: void addBatch() throws SQLException Adds a set of ...

Global site tag (gtag.js) - Google Analytics