JDBC Tutorials - Herong's Tutorial Examples - v3.12, by Dr. Herong Yang
PreparedStatement in Batch Mode
This section describes how to use PreparedStatement objects in batch mode.
If you want to execute a PreparedStatement object multiple times in a single transaction, you can use the batch feature of the PreparedStatement object. Each time the addBatch() method is called, a copy of the embedded SQL statement will be created, but not executed until the execution method call. Here is sample sequence of method calls to execute a PreparedStatement object in batch mode:
ps.setXXX(...); // Set parameters for the first copy ... ps.addBatch(); // Create the first copy of the SQL statement ps.setXXX(...); // Set parameters for the second copy ... ps.addBatch(); // Create the second copy of the SQL statement ps.setXXX(...); // Set parameters for the third copy ... ps.addBatch(); // Create the third copy of the SQL statement ps.executeBatch(); // Execute all copies together as a batch
Here is a sample program that creates a PrepareStatement object and executes it in batch mode to run an INSERT statement 4 times:
/* MySqlPreparedStatementBatch.java * Copyright (c) HerongYang.com. All Rights Reserved. */ import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; public class MySqlPreparedStatementBatch { public static void main(String [] args) { Connection con = null; try { com.mysql.cj.jdbc.MysqlDataSource ds = new com.mysql.cj.jdbc.MysqlDataSource(); // com.mysql.jdbc.jdbc2.optional.MysqlDataSource ds // = new com.mysql.jdbc.jdbc2.optional.MysqlDataSource(); ds.setServerName("localhost"); ds.setPortNumber(3306); ds.setDatabaseName("HerongDB"); ds.setUser("Herong"); ds.setPassword("TopSecret"); con = ds.getConnection(); // PreparedStatement PreparedStatement ps = con.prepareStatement( "INSERT INTO Profile (FirstName, LastName) VALUES (?, ?)"); // Provide values to parameters for copy 1 ps.setString(1,"John"); ps.setString(2,"First"); // Create copy 1 ps.addBatch(); // Provide values to parameters for copy 2 ps.setString(1,"Bill"); ps.setString(2,"Second"); // Create copy 2 ps.addBatch(); // Provide values to parameters for copy 3 ps.setString(1,"Mark"); ps.setString(2,"Third"); // Create copy 3 ps.addBatch(); // Provide values to parameters for copy 4 ps.setString(1,"Jack"); ps.setString(2,"Last"); // Create copy 4 ps.addBatch(); // Execute all 4 copies int[] counts = ps.executeBatch(); int count = 0; for (int i=0; i<counts.length; i++) { count += counts[i]; } System.out.println("Total effected rows: "+count); // Close the PreparedStatement object ps.close(); con.close(); } catch (Exception e) { System.err.println("Exception: "+e.getMessage()); e.printStackTrace(); } } }
Here is the output:
Total effected rows: 4
Table of Contents
JDBC (Java Database Connectivity) Introduction
Installing and Running Java DB - Derby
Derby (Java DB) JDBC DataSource Objects
Java DB (Derby) - DML Statements
Java DB (Derby) - ResultSet Objects of Queries
Java DB (Derby) - PreparedStatement
MySQL JDBC Driver (MySQL Connector/J)
PreparedStatement with Parameters
►PreparedStatement in Batch Mode
Performance of Inserting Rows with a PreparedStatement
InnoDB (MySQL 5.5 Default Engine) Slower on INSERT
Performance of Inserting Rows with a Regular Statement
Performance of Inserting Rows with a ResultSet
MySQL - Reference Implementation of JdbcRowSet
MySQL - JBDC CallableStatement
MySQL CLOB (Character Large Object) - TEXT
MySQL BLOB (Binary Large Object) - BLOB
Oracle Express Edition Installation on Windows
Oracle - Reference Implementation of JdbcRowSet
Oracle - JBDC CallableStatement
Oracle CLOB (Character Large Object) - TEXT
Oracle BLOB (Binary Large Object) - BLOB
Microsoft SQL Server Express Edition
Microsoft JDBC Driver for SQL Server
Microsoft JDBC Driver - Query Statements and Result Sets
Microsoft JDBC Driver - DatabaseMetaData Object
Microsoft JDBC Driver - DDL Statements
Microsoft JDBC Driver - DML Statements
SQL Server - PreparedStatement
SQL Server CLOB (Character Large Object) - TEXT
SQL Server BLOB (Binary Large Object) - BLOB
JDBC-ODBC Bridge Driver - sun.jdbc.odbc.JdbcOdbcDriver
JDBC-ODBC Bridge Driver - Flat Text Files
JDBC-ODBC Bridge Driver - MS Access
JDBC-ODBC Bridge Driver - MS SQL Server
Summary of JDBC Drivers and Database Servers