DDLとDMLの一括実行



package com.enhance.jdbc;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Properties;

public class BatchTest {
	private String driver;
	private String url;
	private String user;
	private String pass;
	private Connection conn;
	private Statement stmt;
	public void initParam(String paramFile) throws Exception{
		Properties prop=new Properties();
		prop.load(new FileInputStream(paramFile));
		driver=prop.getProperty("driver");
		url=prop.getProperty("url");
		user=prop.getProperty("user");
		pass=prop.getProperty("pass");
	}
	
	//  DDL   DML    select 
	public void executeBatch(String[] sqls)throws Exception{
		try{
			Class.forName(driver);
			conn=DriverManager.getConnection(url,user,pass);
			
			//  , 	
			conn.setAutoCommit(false);
			System.out.println(" !");
			stmt=conn.createStatement();
			for (String sql : sqls) {
				stmt.addBatch(sql);
			}
			int[] nums=stmt.executeBatch();  //  DDL   DML    select 
			for (int i = 0; i < nums.length; i++) {
				System.out.println((i+1)+" sql :"+nums[i]);
			}
			conn.commit();
			System.out.println(" !");
			conn.setAutoCommit(true); //  ,    , ,    conn
		}finally{
			if(stmt!=null)
				stmt.close();
			if(conn!=null)
				conn.close();
		}
		
	}
	
	
	public static void main(String[] args) throws Exception {
		BatchTest bt=new BatchTest();
		bt.initParam("src/mysql.ini");
		String[]sqls={
				"insert into my_test values(null,' ')"
				,"insert into my_test values(null,' ')"
				,"update my_test set test_name='comme on!!' where test_id=4"
				,"{call add_proc(4,5,null)}"};//     PreparedStatement   CallableStatement
		bt.executeBatch(sqls);
	}

}