`
zjx2388
  • 浏览: 1325013 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JDBC的批处理操作三种方式 pstmt.addBatch();

阅读更多
JDBC的批处理操作三种方式
 
 
SQL批处理是JDBC性能优化的重要武器,经本人研究总结,批处理的用法有三种。
 
package lavasoft.jdbctest;

import lavasoft.common.DBToolkit;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

/**
* JDBC的批量操作三种方式
*/

public class BatchExeSQLTest {

        public static void main(String[] args) {
                exeBatchStaticSQL();
        }

        /**
         * 批量执行预定义模式的SQL
         */

        public static void exeBatchParparedSQL() {
                Connection conn = null;
                try {
                        conn = DBToolkit.getConnection();
                        String sql = "insert into testdb.book (kind, name) values (?,?)";
                        PreparedStatement pstmt = conn.prepareStatement(sql);
                        pstmt.setString(1, "java");
                        pstmt.setString(2, "jjjj");
                        pstmt.addBatch();                     //添加一次预定义参数
                        pstmt.setString(1, "ccc");
                        pstmt.setString(2, "dddd");
                        pstmt.addBatch();                     //再添加一次预定义参数
                        //批量执行预定义SQL
                        pstmt.executeBatch();
                } catch (SQLException e) {
                        e.printStackTrace();
                } finally {
                        DBToolkit.closeConnection(conn);
                }
        }

        /**
         * 批量执行混合模式的SQL、有预定义的,还有静态的
         */

        public static void exeBatchMixedSQL() {
                Connection conn = null;
                try {
                        conn = DBToolkit.getConnection();
                        String sql = "insert into testdb.book (kind, name) values (?,?)";
                        PreparedStatement pstmt = conn.prepareStatement(sql);
                        pstmt.setString(1, "java");
                        pstmt.setString(2, "jjjj");
                        pstmt.addBatch();    //添加一次预定义参数
                        pstmt.setString(1, "ccc");
                        pstmt.setString(2, "dddd");
                        pstmt.addBatch();    //再添加一次预定义参数
                        //添加一次静态SQL
                        pstmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'");
                        //批量执行预定义SQL
                        pstmt.executeBatch();
                } catch (SQLException e) {
                        e.printStackTrace();
                } finally {
                        DBToolkit.closeConnection(conn);
                }
        }

        /**
         * 执行批量静态的SQL
         */

        public static void exeBatchStaticSQL() {
                Connection conn = null;
                try {
                        conn = DBToolkit.getConnection();
                        Statement stmt = conn.createStatement();
                        //连续添加多条静态SQL
                        stmt.addBatch("insert into testdb.book (kind, name) values ('java', 'java in aciton')");
                        stmt.addBatch("insert into testdb.book (kind, name) values ('c', 'c in aciton')");
                        stmt.addBatch("delete from testdb.book where kind ='C#'");
                        stmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'");
//                        stmt.addBatch("select count(*) from testdb.book");                //批量执行不支持Select语句
                        //执行批量执行
                        stmt.executeBatch();
                } catch (SQLException e) {
                        e.printStackTrace();
                } finally {
                        DBToolkit.closeConnection(conn);
                }
        }
}
 
注意:JDBC的批处理不能加入select语句,否则会抛异常:
java.sql.BatchUpdateException: Can not issue SELECT via executeUpdate().
  at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:1007)
 

转载自:http://lavasoft.blog.51cto.com/62575/238651

分享到:
评论

相关推荐

    使用JDBC的批处理功能

    本文将详细阐述JDBC批处理的基本概念、优势以及如何在实际应用中使用。 一、批处理的概念 批处理是指一次性提交多个SQL语句到数据库进行执行,而不是逐个发送和执行。在JDBC中,批处理主要通过Statement或...

    jdbc 增删改查事物处理, 批处理,以及预编译示例代码

    在Java数据库连接(JDBC)中,增删改查(CRUD)操作是与数据库交互的基础,事务处理、批处理和预编译SQL语句则是提高效率和保证数据一致性的关键技术。以下是对这些概念的详细说明: 1. **JDBC增删改查(CRUD)**:...

    JDBC高级批处理

    JDBC批处理的实现依赖于数据库驱动的实现,不同数据库的驱动可能会有不同的优化策略。深入研究JDBC源码,可以帮助我们理解批处理在底层是如何工作的,以及如何针对特定数据库优化性能。 ### 8. 工具支持 很多...

    JDBC操作步骤以及数据库连接操作.doc

    以下是JDBC操作步骤的详细解释: 1. **加载数据库驱动程序**: 在进行数据库操作之前,首先需要在Java环境中加载对应的数据库驱动。这通常涉及到将JDBC驱动的JAR文件添加到项目的类路径(classpath)中。对于MySQL...

    MySQL_4_JDBC高级操作和事务1

    **JDBC批处理操作** 批处理是提高数据库操作性能的一种方式,通过一次性提交多条SQL语句,减少了网络通信和数据库处理的开销。以下是使用Statement和PreparedStatement对象进行批处理的基本步骤: 1. **使用...

    JDBC使用MySQL处理大数据+事务控制管理.txt

    #### 三、事务与批处理混合使用 在实际应用中,通常会结合使用事务管理和批处理技术,以进一步提高性能并保证数据的一致性。 ```java Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager....

    【IT十八掌徐培成】Java基础第23天-03.ppst-addBatch-executeBatch.zip

    【IT十八掌徐培成】Java基础第23天的课程主要聚焦在JDBC操作数据库时的批量处理技术,特别是`addBatch`和`executeBatch`这两个关键方法。在Java中,当我们需要对数据库进行大量数据的插入、更新或删除操作时,传统的...

    sql server jdbc 驱动包

    6. **批处理**:JDBC支持批处理,可以一次提交多个SQL语句,提高效率: ```java PreparedStatement pstmt = conn.prepareStatement("INSERT INTO myTable VALUES (?, ?)"); pstmt.setInt(1, 1); pstmt.setString...

    JDBC基础知识1_保存大文本_分页_批处理

    保存大文本_分页_批处理”揭示了本文将要讨论的是Java数据库连接(Java Database Connectivity, JDBC)的基础知识,主要包括如何在数据库中处理大文本数据、实现分页查询以及利用批处理提高数据库操作效率这三个核心...

    JDBC课件及源码.zip

    - 使用批处理:`pstmt.addBatch();`和`pstmt.executeBatch();` - 使用PreparedStatement代替Statement,减少解析SQL的时间。 - 关闭资源:`rs.close(); pstmt.close(); conn.close();`以释放数据库连接。 **7. ...

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

    PrepareStatement是JDBC提供的一种预编译的SQL语句,它可以提高数据库操作的效率和安全性。本资源主要涵盖了使用JDBC PrepareStatement进行MySQL数据库操作的各种场景,包括基本的查询、更新以及批量处理。 首先,...

    JDBC实用技术(连接Oracle数据库)

    本篇将详细讲解如何使用JDBC来连接Oracle数据库,包括必备的环境配置、连接步骤、SQL操作以及异常处理。 ### 1. 环境配置 首先,确保你的开发环境中已经安装了以下组件: - Java Development Kit (JDK):JDBC是...

    JavaMySQL-JDBC-第1章上机练习.zip

    9. **批处理**:对于大量相似的SQL操作,JDBC提供了批处理功能,可以提高效率。通过`addBatch()`添加SQL语句,然后调用`executeBatch()`执行。 10. **元数据获取**:JDBC提供`DatabaseMetaData`接口,用于获取关于...

    jdbc知识带注释

    对于大量相似的SQL操作,JDBC支持批处理,可以提高性能。使用`addBatch()`添加SQL语句到批处理队列,然后用`executeBatch()`执行: ```java PreparedStatement pstmt = conn.prepareStatement("INSERT INTO ...

    批处理导入SQL文件

    批处理导入SQL文件是数据库管理中的一个重要操作,它主要用于高效地执行大量SQL语句,比如在数据迁移、数据库初始化或更新时。批处理通过合并多个SQL命令为一个单一的处理单元,可以显著提高数据处理速度,减少网络...

    JDBC学习笔记(下)

    JDBC提供了一种标准的方式来与各种关系型数据库交互。在JDBC中,可以通过`Statement`或`PreparedStatement`对象来执行SQL命令。 ##### 1.1 增加数据 增加数据通常涉及使用`INSERT` SQL语句。在JDBC中,可以通过以下...

    JDBC编程实例.rar

    - **JDBC驱动类型**:JDBC驱动分为四种类型,分别是Type 1、Type 2、Type 3和Type 4。其中,Type 4驱动是纯Java实现,无需依赖数据库厂商的本地库,性能最优,如Oracle的 Thin Driver。 - **JDBC连接流程**:加载...

    精通jdbc,jdbc自学文档,jdbc帮助文档

    JDBC提供了一种标准的API,使得开发者能够用Java编写数据库应用程序,无论数据库是哪种类型,如MySQL、Oracle、SQL Server等。本自学文档将带你深入理解和掌握JDBC的核心概念和操作。 **1. JDBC基础知识** JDBC的...

    jdbc(java的数据库连接方式总汇)

    - 使用批处理提高性能:`pstmt.addBatch()` 和 `pstmt.executeBatch();` - 使用连接池管理数据库连接,例如C3P0、Apache DBCP或HikariCP,以提高性能和资源利用率。 - 设置合理的超时和最大连接数,防止资源耗尽...

    批量插入或更新.zip

    在Java中,通过使用JDBC的批处理功能,开发者可以有效地管理大量数据的导入和更新,从而提高应用的开发效率和运行效率。如果你正在处理这样的问题,这个“批量插入或更新.zip”文件可能包含有价值的示例和指导,帮助...

Global site tag (gtag.js) - Google Analytics