JDBC操作数据库的批处理
2016-10-22 09:31
260 查看
在JDBC开发中,操作数据库需要与数据库建立连接,然后将要执行的SQL语句传送到数据库服务器,最后关闭数据库连接,都是按照这样一个流程进行操作的。如果按照该流程执行多条SQL语句,那么就需要建立多个数据库连接,这样会将时间浪费在数据库连接上。针对这一问题,JDBC的批处理提供了很好的解决方案。
JDBC中批处理的原理是将批量的SQL语句一次性发送到数据库中进行执行,从而解决多次与数据库连接所产生的速度瓶颈。
(1)创建学生信息表tb_student_batch,其结构如下所示:
(2)创建名称为Batch的类,该类用于实现对学生信息的批量添加操作。首先在Batch类中编写getConnection()方法,用于获取数据库连接Connection对象,其关键代码如下:
然后编写saveBatch()方法,实现批量添加学生信息功能,实例中主要通过PreparedStatement对象批量添加学生信息。关键代码如下:
注意:PreparedStatement对象的批处理操作调用的是executeBatch()方法,而不是execute()方法或者executeUpdate()方法。
(3)创建程序中的首页面index.jsp,在该页面中通过<jsp:useBean>实例化Batch对象,并执行批量添加数据操作。关键代码如下:
实例运行后,程序向数据库批量添加了10条学生信息数据,其运行结果如下图所示:
运行成功后,可以打开数据表tb_student_batch进行查看,其效果如下:
JDBC中批处理的原理是将批量的SQL语句一次性发送到数据库中进行执行,从而解决多次与数据库连接所产生的速度瓶颈。
例1.1 创建学生信息表,通过JDBC的批处理操作,一次性将多个学生信息写入到数据库中。
(1)创建学生信息表tb_student_batch,其结构如下所示:(2)创建名称为Batch的类,该类用于实现对学生信息的批量添加操作。首先在Batch类中编写getConnection()方法,用于获取数据库连接Connection对象,其关键代码如下:
/** * 获取数据库连接 * @return Connection 对象 */ public Connection getConnection(){ Connection conn=null; try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/stu"; String user = "root"; String password = "1234"; conn=DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; }
然后编写saveBatch()方法,实现批量添加学生信息功能,实例中主要通过PreparedStatement对象批量添加学生信息。关键代码如下:
/** * 批量添加数据 * @return 所影响的行数 */ public int saveBatch(){ int row=0; Connection conn=getConnection(); try { String sql = "insert into tb_student_batch(id,name,sex,age) values(?,?,?,?)"; PreparedStatement ps = conn.prepareStatement(sql); Random random = new Random(); for(int i=0;i<10;i++){ ps.setInt(1, i+1); ps.setString(2, "学生"+i); ps.setBoolean(3, i%2==0?true:false); ps.setInt(4, random.nextInt(5)+10); ps.addBatch(); //添加批处理命令 } int[] rows = ps.executeBatch(); //执行批处理操作并返回计数组成的数组 row = rows.length; ps c288 .close(); conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return row; //返回添加的行数 }
注意:PreparedStatement对象的批处理操作调用的是executeBatch()方法,而不是execute()方法或者executeUpdate()方法。
(3)创建程序中的首页面index.jsp,在该页面中通过<jsp:useBean>实例化Batch对象,并执行批量添加数据操作。关键代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <jsp:useBean id="batch" class="com.cn.gao.Batch"></jsp:useBean> <% //执行批量插入操作 int row = batch.saveBatch(); out.print("批量插入了【"+row+"】条数据"); %> </body> </html>
实例运行后,程序向数据库批量添加了10条学生信息数据,其运行结果如下图所示:
运行成功后,可以打开数据表tb_student_batch进行查看,其效果如下:
相关文章推荐
- 第七篇——JDBC操作数据库之批处理(删除)
- JDBC操作数据库的批处理
- JDBC 数据库批处理操作
- jdbc操作 数据库做同步,全量+增量,线程控制,批处理
- JAVAWEB开发之JDBC详解(连接操作数据库、处理大数据、批处理)
- 第六篇——JDBC操作数据库之批处理(新增)
- jdbc操作 数据库同步,全量,加入线程,批处理
- 传统JDBC操作数据库
- spring操作数据库(JDBC)
- java 使用策略模式操作JDBC数据库
- JDBC操作数据库
- JDBC连接数据库(oracle)操作
- JAVA+JDBC对数据库的数据进行增加、修改、删除、查询等操作
- JDBC:JabaBean对数据库的操作----增删改查
- jdbc连接数据库并进行操作
- java操作数据库-jdbc技术
- JDBC操作MySQL进行批处理
- jdbc--数据库操作
- JDBC操作数据库的几种方式。
- Java_常瑞鹏 JDBC数据库操作