DDLとDMLの一括実行
2208 ワード
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);
}
}