批处理sql语句的学习笔记
2018-03-30 09:42
274 查看
转载请注明出处。 https://blog.csdn.net/Mr_wang__/article/details/52504520
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();//自己写的工具类不要误解
String sql1 = "insert into person values (1,'aaa')";
String sql2 = "insert into person values (2,'bbb')";
String sql3 = "delete from person where id = 2";
stmt = conn.createStatement();//这种方式,如果sql语句有上百条以上,那就要有很多次addBatch。很麻烦
stmt.addBatch(sql1);
stmt.addBatch(sql2);
stmt.addBatch(sql3);
int[] i = stmt.executeBatch();// 获得三条语句每条执行后影响的行数。形成一个数组
for (int j : i) {
System.out.println(j);// 结果是三个1
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.release(rs, stmt, conn);//工具类,释放连接
}
[java] view
plain copy
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
String sql = "insert into person values (?,?)";
stmt = conn.prepareStatement(sql);
for(int i=0;i<100;i++){
stmt.setInt(1, i+1);
stmt.setString(2, "aaa");//参数数据,实际应用时,可以通过别的方式进行赋值。
stmt.addBatch();
}
stmt.executeBatch();
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.release(rs, stmt, conn);
}
[java] view
plain copy
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
String sql = "insert into person values (?,?)";
stmt = conn.prepareStatement(sql);
for(int i=0;i<1000000;i++){//mysql一般需要40分钟才会存完
stmt.setInt(1, i+1);
stmt.setString(2, "aaa");
<span style="white-space:pre"> </span> stmt.addBatch();
if((i+1)%1000==0){
stmt.executeBatch();//每执行一次<span style="font-family: Arial, Helvetica, sans-serif;">就清一次sql缓存。</span>
stmt.clearBatch(); //否则每一次是执行1000,2000,3000...条sql语句而不是每一次执行1000条
}
}
stmt.executeBatch();//最后少于1000条sql语句也要执行。
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.release(rs, stmt, conn);
}
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();//自己写的工具类不要误解
String sql1 = "insert into person values (1,'aaa')";
String sql2 = "insert into person values (2,'bbb')";
String sql3 = "delete from person where id = 2";
stmt = conn.createStatement();//这种方式,如果sql语句有上百条以上,那就要有很多次addBatch。很麻烦
stmt.addBatch(sql1);
stmt.addBatch(sql2);
stmt.addBatch(sql3);
int[] i = stmt.executeBatch();// 获得三条语句每条执行后影响的行数。形成一个数组
for (int j : i) {
System.out.println(j);// 结果是三个1
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.release(rs, stmt, conn);//工具类,释放连接
}
方式二:用PreparedStatment批处理,只能处理sql语句相同,而参数不同。
[java] viewplain copy
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
String sql = "insert into person values (?,?)";
stmt = conn.prepareStatement(sql);
for(int i=0;i<100;i++){
stmt.setInt(1, i+1);
stmt.setString(2, "aaa");//参数数据,实际应用时,可以通过别的方式进行赋值。
stmt.addBatch();
}
stmt.executeBatch();
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.release(rs, stmt, conn);
}
注意:对mysql进行存储,如果批处理有1000万条,需要40分钟左右!而且此时方式二要注意,prepareStatement在缓存sql时的溢出。
[java] viewplain copy
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
String sql = "insert into person values (?,?)";
stmt = conn.prepareStatement(sql);
for(int i=0;i<1000000;i++){//mysql一般需要40分钟才会存完
stmt.setInt(1, i+1);
stmt.setString(2, "aaa");
<span style="white-space:pre"> </span> stmt.addBatch();
if((i+1)%1000==0){
stmt.executeBatch();//每执行一次<span style="font-family: Arial, Helvetica, sans-serif;">就清一次sql缓存。</span>
stmt.clearBatch(); //否则每一次是执行1000,2000,3000...条sql语句而不是每一次执行1000条
}
}
stmt.executeBatch();//最后少于1000条sql语句也要执行。
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.release(rs, stmt, conn);
}
相关文章推荐
- OAF学习笔记-8-在AM中直接调用sql 语句(PLSQL函数)
- php学习笔记(10):MYSQL数据库中的常用SQL语句
- PHP学习笔记 第九讲 数据库中的常用SQL语句
- SQL学习笔记三select语句的各种形式
- MySql学习笔记—数据库简介及SQL语句的分类
- MySql学习笔记(4)--SQL(DML)语句语法
- Sql语句学习笔记(7)-常用日期函数
- OAF学习笔记-8-在AM中直接调用sql 语句(PLSQL函数)
- 【学习笔记】SQL语句处理分组合并
- sql语句学习笔记(9)-使用top查询指定行数(从30行至40行)
- 黑马程序员之SQL 学习笔记:T-SQL语句的使用和编写
- Java学习笔记33:mybatis动态SQL语句
- java学习笔记之sql常用语句
- [学习笔记]MySql之SQL语句优化
- CUBRID学习笔记 18 sql语句的预处理(类似存储过程)
- 我的Php学习笔记(六)Mysql简介和创建新的数据库 常用的SQL语句
- 工作学习笔记——用SQL语句新建SQL SERVER数据库、数据库用户以及登录名
- SQL语句学习笔记(持续更新)
- 反射的学习笔记--sql语句生成
- OAF学习笔记-8-在AM中直接调用sql 语句(PLSQL函数)