批量执行 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);
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值