JDBC 批量提交

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

/**
 * JDBC的批量操作三种方式
 * @author wxp
 *
 */
public class BatchExeSQLTest {

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

 /**
  * 批量执行预定义模式的SQL
  */
 public static void exeBatchParparedSQL() {
  Connection conn = null;
  try {
   conn = DBToolkit.getConnection();
   String sql = "insert into JDBCTEST ( name) values (?)";
   PreparedStatement pstmt = conn.prepareStatement(sql);
   pstmt.setString(1, "jjjj");
   pstmt.addBatch(); // 添加一次预定义参数
   pstmt.setString(1, "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 JDBCTEST (name) values (?)";
   PreparedStatement pstmt = conn.prepareStatement(sql);
   pstmt.setString(1, "2222");
   pstmt.addBatch(); // 添加一次预定义参数
   pstmt.setString(1, "3333");
   pstmt.addBatch(); // 再添加一次预定义参数
   // 添加一次静态SQL
   pstmt.addBatch("update JDBCTEST set name = 'JAVA' where id='3'");
   // 批量执行预定义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 JDBCTEST (id, name) values ('99', 'java in aciton')");
   stmt.addBatch("insert into JDBCTEST (id, name) values ('333', 'c in aciton')");
   stmt.addBatch("delete from JDBCTEST where id ='C#'");
   stmt.addBatch("update JDBCTEST set name = '!@#' where id='4'");
   // stmt.addBatch("select count(*) from testdb.book");
   // //批量执行不支持Select语句
   // 执行批量执行
   stmt.executeBatch();
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   DBToolkit.closeConnection(conn);
  }
 }

}

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

 

public class DBToolkit {
 
    public static Connection getConnection(){
     Connection conn = null;
     try {
   Class.forName("com.mysql.jdbc.Driver");
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
  try {
   conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/TESTJDBC", "root","123456");
  } catch (SQLException e) {
   e.printStackTrace();
  }
     return conn;
    }
   
   public static void closeConnection(Connection conn){
     try {
   conn.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }
    }

}

你可能感兴趣的:(jdbc,批量提交)