首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

批量实施 DDL 和 DML

2013-10-18 
批量执行 DDL 和DMLpackage com.enhance.jdbcimport java.io.FileInputStreamimport java.sql.Connectio

批量执行 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 和 CallableStatementbt.executeBatch(sqls);}}

热点排行