JavaWeb学习心得之JDBC批处理
来源:互联网 发布:冯大辉 知乎 期权 编辑:程序博客网 时间:2024/06/05 10:37
一、Statement批处理
步骤
- statement.addBatch(sql)
- statement.executeBatch()
- statement.clearBatch()
范例
1.创建表
create table testbatch ( id int primary key, name varchar(20) );
2.测试代码
import java.sql.Connection;import java.sql.Statement;public class JDBCDemo01 {public static void main(String[] args) {Connection conn = null;Statement st = null;try{conn = JdbcUtils.getConnection();st = conn.createStatement();String sql1 = "insert into testbatch(id,name) values(1,'aaa')";String sql2 = "insert into testbatch(id,name) values(2,'bbb')";String sql3 = "insert into testbatch(id,name) values(3,'ccc')";String sql4 = "insert into testbatch(id,name) values(4,'ddd')";String sql5 = "insert into testbatch(id,name) values(5,'eee')";//添加比处理语句st.addBatch(sql1);st.addBatch(sql2);st.addBatch(sql3);st.addBatch(sql4);st.addBatch(sql5);//返回处理结果数组int[] result = st.executeBatch();int count = 0;for(int i=0;i<result.length;i++){if(result[i]>0){count++;}}System.out.println("插入"+count+"条数据");//清空批处理语句st.clearBatch();}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, null);}}}statment可以向数据库发送不同的SQL语句,但是没有预编译,效率较低。
二、PreparedStatement批处理
范例
import java.sql.Connection;import java.sql.PreparedStatement;public class JDBCDemo02 {public static void main(String[] args) {long start = System.currentTimeMillis();Connection conn = null;PreparedStatement st = null;try{conn = JdbcUtils.getConnection();String sql = "insert into testbatch(id,name) values(?,?)";st = conn.prepareStatement(sql);for(int i=0;i<100000;i++){st.setInt(1, i);st.setString(2, "hanxin"+i);st.addBatch();if(i%1000==0){st.executeBatch();st.clearBatch();}}st.executeBatch();st.clearBatch();}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, null);}long end = System.currentTimeMillis();System.out.println("程序花费时间:"+(end-start));}}
preparedStatment发送预编译后的SQL代码,效率高,但是只能发送相同语句不同参数的SQL。
三、MySql自动生成主键
数据库:
create table test1( id int primary key auto_increment, name varchar(20) );测试代码:
import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import com.mysql.jdbc.Statement;public class JDBCDemo03 {public static void main(String[] args) {Connection conn = null;PreparedStatement st = null;ResultSet rs = null;try{conn = JdbcUtils.getConnection();String sql1 = "insert into test1(name) values(?)";//添加Statement.RETURN_GENERATED_KEYS,否则报错st = conn.prepareStatement(sql1,Statement.RETURN_GENERATED_KEYS);st.setString(1, "阿里");st.executeUpdate();rs = st.getGeneratedKeys();if(rs.next()){System.out.println(rs.getInt(1));}}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, rs);}}}
阅读全文
0 0
- JavaWeb学习心得之JDBC批处理
- JavaWeb学习心得之JDBC入门
- JavaWeb学习心得之JDBC事务
- JavaWeb学习心得之JDBC对数据库CRUD
- JavaWeb学习心得之JDBC处理MySQL大数据
- JavaWeb学习心得之JDBC处理Oracle大数据
- JavaWeb学习心得之Cookie
- JavaWeb学习心得之session
- JavaWeb-JDBC处理大数据、批处理、事物
- JavaWeb学习心得之Web简介
- JavaWeb学习心得之Http协议
- JavaWeb学习心得之HttpServletResponse对象
- JavaWeb学习心得之HttpServletRequest对象
- JavaWeb学习心得之JSP原理
- JavaWeb学习心得之JSP指令
- JavaWeb学习心得之JSP标签
- JavaWeb学习心得之EL表达式
- JavaWeb学习心得之数据库连接池
- 人脸检测--SSH: Single Stage Headless Face Detector
- 分享 AFNetwork Post方式请求不通的问题。
- TensorFlow 优化实践
- 数据库查询语句,追加条件的写法。
- 设置手机号隐藏中间number小demo
- JavaWeb学习心得之JDBC批处理
- java main方法参数传递
- 提取docx中图片,文字,表格元素
- [递推] BZOJ2173:整数的lqp拆分
- socket阻塞与非阻塞,同步与异步、I/O模型
- Linux 下三种方式设置环境变量
- 从跑步中想到的·一
- spring声明式事务管理代码示例(五种写法)
- recv函数返回值说明