MySQL数据库实操教程(30)——JDBC批处理

自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理


探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制


Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南


Android程序员C语言自学完备手册
讲给Android程序员看的前端系列教程(图文版)
讲给Android程序员看的前端系列教程(视频版)


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

JDBC批处理概述

在幵发过程中经常需要连续执行多条SQL语句,如果逐条执行这些SQL语句,那么效率会很低。为此,JDBC提供了批处理机制,用于执行多条SQL语句。

利用Statement实现批处理

Statement中批处理相关操作如下:

Statement.addBatch( )
添加SQL语句
Statement.executeBatch( )
执行批处理
Statement.clearBatch( )
清除批处理

示例如下:

package cn.com.demo6;
import java.sql.Connection;
import java.sql.Statement;
/**
 * 原创作者:谷哥的小弟
 * 博客地址:http://blog.csdn.net/lfdfhl
 * 
 * 利用Statement实现批处理
 */
public class TestStatementBatch {
     
	public static void main(String[] args) {
     
		Connection connection = null;
		Statement statement = null;
		try {
     
			connection = JDBCUtils.getConnection();
			statement = connection.createStatement();
			String sql1 = "DROP TABLE IF EXISTS worker";
			String sql2 = "CREATE TABLE worker (id int,name varchar(20))";
			String sql3 = "INSERT INTO worker VALUES(1,'dodo')";
			String sql4 = "INSERT INTO worker VALUES(2,'xixi')";
			statement.addBatch(sql1);
			statement.addBatch(sql2);
			statement.addBatch(sql3);
			statement.addBatch(sql4);
			statement.executeBatch();
		} catch (Exception e) {
     
			e.printStackTrace();
		} finally {
     
			JDBCUtils.release(null, statement, connection);
		}
	}
}

利用PreparedStatement实现批处理

较Statement而言,使用PreparedStatement实现批处理不仅安全而且效率更高。

先创建一张表,代码如下:

-- 创建表
DROP TABLE IF EXISTS worker;
CREATE TABLE worker(
   id INT,
   name VARCHAR(20)
);

接下来使用PreparedStatement进行批量插入数据,代码如下:

package cn.com.demo6;

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

/**
 * 原创作者:谷哥的小弟 
 * 博客地址:http://blog.csdn.net/lfdfhl
 * 
 * 利用PrepareStatement实现批处理
 */
public class TestPreparedStatementBatch {
     
	public static void main(String[] args) {
     
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		try {
     
			connection = JDBCUtils.getConnection();
			String sql = "INSERT INTO worker VALUES(?,?)";
			preparedStatement = connection.prepareStatement(sql);
			for (int i = 0; i < 123; i++) {
     
				preparedStatement.setInt(1, i);
				preparedStatement.setString(2, "name" + i);
				preparedStatement.addBatch();
				// 为防止内存溢出每20条执行一次批处理
				if (i % 20 == 0) {
     
					preparedStatement.executeBatch();
					preparedStatement.clearBatch();
				}
			}
			//将剩下的未处理SQL执行批处理
			preparedStatement.executeBatch();
			preparedStatement.clearBatch();
		} catch (Exception e) {
     
			e.printStackTrace();
		} finally {
     
			JDBCUtils.release(null, preparedStatement, connection);
		}
	}
}

你可能感兴趣的:(MySQL数据库实操教程,MySQL数据库,JDBC批处理)