`
liuzm
  • 浏览: 98411 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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

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

本篇文章来源于 :刘志猛博客 原文链接:http://www.liuzm.com/article/mysql/9614c.htm
分享到:
评论

相关推荐

    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 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注入。

    MySQL_4_JDBC高级操作和事务1

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

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

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

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

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

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

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

    dbswitch工具提供源端数据库向目的端数据库的批量迁移同步功能,支持数据的全量和增量方式同步

    dbswitch工具提供源端数据库向目的端数据库的批量迁移同步功能,支持数据的全量和增量方式同步。包括:结构迁移:支持字段类型、主键信息、建表语句等的转换,并生成建表SQL语句。支持基于正则表达式转换的表名与...

    异构数据库数据与结构同步工具 dbswitch工具提供源端数据库向目的端数据库的批量迁移同步功能,支持数据的全量和增量方式同步

    一句话,dbswitch工具提供源端数据库向目的端数据库的批量迁移同步功能,支持数据的全量和增量方式同步。包括:结构迁移:支持字段类型、主键信息、建表语句等的转换,并生成建表SQL语句。支持基于正则表达式转换的...

    Spring 中jdbcTemplate 实现执行多条sql语句示例

    本篇文章主要介绍了Spring 中jdbcTemplate 实现执行多条sql语句示例,可以对多个表执行多个sql语句,有兴趣的可以了解一下。

    关于java数据库基本操作

    1、java数据库操作基本流程2、几个常用的重要技巧:·可滚动、更新的记录集·批量更新·事务处理java数据库操作基本流程:取得数据库连接-执行sql语句-处理执行结果-释放数据库连接l、取得数据库连接1)用DriverManager...

Global site tag (gtag.js) - Google Analytics