JDBC——批处理

        进行JDBC的操作的时候,都是一条SQL语句执行。当sql语句有上万条甚至更多时,就需要进行批处理。现在如果使用批处理,可以将一批SQL语句一起执行。

需要在properties文件中的url后面加上批处理参数:  ?rewriteBatchedStatements=true。

主要用到的方法:

pstmt = conn.prepareStatement(sql);
pstmt.setString(int parameterIndex, String x);//将指定参数设置为给定 Java String 值。pstmt.addBatch();//加入需要进行的sql语句
pstmt.executeBatch();//执行
pstmt.clearBatch();//清空

package demo;

import java.sql.Connection;
import java.sql.PreparedStatement;

import org.junit.Test;

public class 批处理 {
	@Test
	/*
	 * 批量插入记录:
	 * 默认情况下mysql批处理是没有开启的,需要在url后拼接一个参数即可
	 * 这个就是批处理的参数:rewriteBatchedStatements=true
	 */	
	public void test() {
		long start = System.currentTimeMillis();
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
			//获得连接
			conn = JDBCUtils.getConnection();
			//编写sql语句:
			String sql = "use xscj";
			String sql1 = "create table user(id int primary key auto_increment,name varchar(20))";
			pstmt = conn.prepareStatement(sql);
			pstmt.addBatch(sql1);
			pstmt.executeBatch();
			pstmt.clearBatch();
			String sql2 = "insert user value (null,?)";
			//这里要重新给pstmt创一个对象
			//因为上面有语句了,所以不能直接写成pstmt.addBatch(sql2);
			pstmt = conn.prepareStatement(sql2);
			for(int i = 1;i<= 1000;i++) {
				pstmt.setString(1, "name"+i);
				pstmt.addBatch();
				//注意问题:
				//执行批量处理
				if(i%1000==0) {
					//执行批处理 每一千条执行一次并清空
					pstmt.executeBatch();
					pstmt.clearBatch();
				}
			}
			
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			JDBCUtils.release(pstmt, conn);
		}
		long end = System.currentTimeMillis();
		System.out.println(end-start);
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值