自定义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程序员看的前端系列教程(视频版)
在幵发过程中经常需要连续执行多条SQL语句,如果逐条执行这些SQL语句,那么效率会很低。为此,JDBC提供了批处理机制,用于执行多条SQL语句。
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);
}
}
}
较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);
}
}
}