前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用JDBC连接MySQL数据库--典型案例分析(七)----批量插入员工信息

使用JDBC连接MySQL数据库--典型案例分析(七)----批量插入员工信息

作者头像
MickyInvQ
发布于 2020-09-27 07:06:30
发布于 2020-09-27 07:06:30
91500
代码可运行
举报
文章被收录于专栏:InvQ的专栏InvQ的专栏
运行总次数:0
代码可运行

转载请注明:张奇的CSDN博客 - 博客频道 - CSDN.NET

问题:

向Emp表中批量插入100条数据,需要插入数据的列为empno,ename以及sal.这三个字段对应的数据分别为empno列的数据通过序列emp_seq自动生成,ename列的数据为字符串 "name"+循环次数i组成、sal的数据有随机生成的10000以内的整数构成。

方案:

每循环一次,向数据库插入一条数据,频繁的访问数据库,效率很低。

在java中专门提供的批处理的API。在对数据库频繁操作时,可以使用JDBC批处理方式提高程序的效率。批处理的主要特点如下:

1.使用同一Connection资源,一次发送多条SQL语句执行。

2.提高应用程序与DB之间的吞吐量,缩短DB的响应时间

3.与逐条执行SQL的方式相比,需要处理的数据量越大,批处理的优势越明显

实现缓存SQL语句和批量执行,使用Statement实现批处理的核心代码如下:

步骤一:在Mysql数据中创建序列emp_seq

在Mysql数据库中创建序列名为emp_sql,该序列的起始值为1,步进为1,SQL语句如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE emp_seq ( seq VARCHAR(8));
INSERT INTO emp_seq VALUES('0');
UPDATE emp_seq SET seq = LAST_INSERT_ID(seq+1);
SELECT LAST_INSERT_ID();

步骤二:准备JDBC操作数据库的基本代码

首先新建类Batch,在该类中新建batchAdd方法,然后,准备数据库连接Connection对象,操作SQL语句的Statement对象以及设置事务管理;最后进行异常的处理,代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package Account;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Random;

import dao.ConnectionSource;
public class Batch {
		public static void main(String [] args){
			
		}
	
		public void batchAdd(){
			Connection con=null;
			Statement stmt=null;
			String sql=null;
			try {
				con=ConnectionSource.getConnection();
				stmt=con.createStatement();
				//关闭自动提交
				con.setAutoCommit(false);
				// 提交
				con.commit();
			} catch (SQLException e) {
				System.out.println("数据库访问异常!");
				throw new RuntimeException(e);
			}finally{
				try {
					if(stmt!=null){
						stmt.close();
					}
					if(con!=null){
						con.close();
					}
				} catch (SQLException e) {
					System.out.println("释放资源时发生异常!");
				}
			}
		}
}

步骤 三:批量向Emp表中插入数据

使用statement的addBatch方法和executeBatch方法,批量向Emp表中插入数据,代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package Account;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Random;

import dao.ConnectionSource;
public class Batch {
		public static void main(String [] args){
			
		}
	
		public void batchAdd(){
			Connection con=null;
			Statement stmt=null;
			String sql=null;
			try {
				con=ConnectionSource.getConnection();
				stmt=con.createStatement();
				//关闭自动提交
				con.setAutoCommit(false);
				for(int i=0;i<100;i++){
					//插入数据的sql语句
					sql="insert into emp(empno,ename,sal) values("+"emp_seq.nextval,'name"+i+"',"+new Random().nextInt(10000)+")";
					//将sql语句加入到Batch中
					stmt.addBatch(sql);
				}
				//执行批处理
				stmt.executeBatch();
				// 提交
				con.commit();
			} catch (SQLException e) {
				System.out.println("数据库访问异常!");
				throw new RuntimeException(e);
			}finally{
				try {
					if(stmt!=null){
						stmt.close();
					}
					if(con!=null){
						con.close();
					}
				} catch (SQLException e) {
					System.out.println("释放资源时发生异常!");
				}
			}
		}
}

步骤四:测试是否批量插入数据成功

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String [] args){
			Batch batch=new Batch();
			batch.batchAdd();
		}

运行前:

运行后:

结果有点问题,上述代码中有一句是orcle的函数功能,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
emp_seq.nextval

目前还没有找到合适的能运行的类似解决方法,如果你是用orcle作为数据库的话,那么就会没有问题的。

如果找到了适合的好方法的朋友,可以给我评论将 解决方法发一下, 一起交流交流。

等待下节的精彩哦~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/06/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JDBC小项目—员工管理系统
此界面系统由Java代码编写,没有上升到软件层面,简单易学。 本项目使用的是Oracle数据库中的scott用户下emp表 项目结构截图: 项目结果截图: 具体步骤: 1、使用上次已经次练习已经
时间静止不是简史
2020/07/27
1.2K0
JDBC小项目—员工管理系统
jdbc连接数据库的方法(代码)
package com.dgut.chapter7; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class StatementDemo346 { private Connection conn=null; private Statem
软件小生活
2021/08/16
1.2K0
Java小技能:Java Data Base Connectivity
JDBC是一种用来在Java程序中执行SQL的API,它为java连接数据库提供了一组接口和类,可以为多种关系数据库提供统一访问。
公众号iOS逆向
2022/12/28
4460
Java小技能:Java Data Base Connectivity
MySQL数据库与JDBC编程
表结构删除,表对象不再存在;表的所有数据被删除;该表所有相关的索引、约束也被删除。
小锋学长生活大爆炸
2020/08/13
3.6K0
2019面试题:谈谈对JDBC的理解(最简洁!)
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API(Application Programming Interface),可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
葆宁
2019/04/18
1K0
2019面试题:谈谈对JDBC的理解(最简洁!)
Jdbc知识点全整理,你值得拥有 ​(2)
1 DAO模式 DAO(Data Access Object)模式就是写一个类,把访问数据库的代码封装起来。DAO在数据库与业务逻辑(Service)之间。 l 实体域,即操作的对象,例如我们操作的表是user表,那么就需要先写一个User类; l DAO模式需要先提供一个DAO接口; l 然后再提供一个DAO接口的实现类; l 再编写一个DAO工厂,Service通过工厂来获取DAO实现。 2 代码 User.java publicclass User { private String uid; priv
Java帮帮
2018/03/19
8880
Jdbc知识点全整理,你值得拥有 ​(2)
JDBC常见操作总结
JDBC-Query Java连接数据库,并执行查询操作具体步骤如下(需要注意的是要导入相关的包): 1、声明连接参数 2、注册驱动 3、利用驱动管理器,建立连接 4、定义sql语句 5、创建发送器(statement、prestatement) 6、执行sql语句(ResultSet) 7、处理结果集 8、关闭相关对象 package cn.bjsxt.jdbc; import java.sql.Connection; import java.sql
时间静止不是简史
2020/07/24
3600
Java使用JDBC连接MYSQL数据库增删改查示例
JDBC连接MYSQL数据库: import java.sql.Connection; import java.sql.DriverManager; public class Mysql { public static void main(String arg[]) { try { Connection con = null; //定义一个MYSQL链接对象 Class.forName("com.mysql.jdbc.Driver")
用户8671053
2021/09/23
2.6K0
JDBC的数据库事务
   事务是工作中的基本逻辑单位。数据库的主要责任是保存信息,因此它需要向用户提供保存当前程序状态的方法。同样,当事务执行过程中发生错误时,需要有一种方法使数据库忽略当前的状态,并回到前面保存的程序状态。这两种情况在数据库用语中分别称为提交事务和回滚事务。为了处理这两种情况,JDBC API     包括了两个方法commit()和rollback(),分别用于实现事务的提交和回滚。在使用这两个方法时通常要使用try ... catch语句捕获数据库实际运行操作时可能发生的SQLException。 当
阿新
2018/04/11
6490
Java通过JDBC连接SQl Server各个版本数据库
已经安装好Microsoft SQL Server,下面就要对其进行配置,使eclipse里的Java程序能通过JDBC连接到SQL Server数据库,需要进行一些操作。 1、在“开始”菜单中找到“SQL Server 配置管理器”打开: 2、下面进行配置: 3、点击上图中的“MSSQLSERVER的协议”,在右侧列表中双击“TCP/IP”协议,在弹出的窗口中找到IP是“127.0.0.1”的一项,活动:“是”,已启用:“是”。确认最下面的“IPALL”里,“TCP端口”是“1433”: 最后,关闭
用户1696846
2018/07/16
3.8K0
全面了解Java连接MySQL的基础知识,快速实现数据交互
当今互联网时代,大量的应用程序都需要使用MySQL数据库来存储和处理数据。Java作为一种广泛使用的编程语言之一,在开发Web应用程序时经常需要连接MySQL数据库进行数据操作。
默 语
2024/11/20
1890
全面了解Java连接MySQL的基础知识,快速实现数据交互
使用JDBC连接MySQL数据库--典型案例分析(八)----实现员工数据的分页查询
对于较大的数据量,通常采用分页查询的方式。不同的数据库产品有不同的数据库级的分页查询策略。例如:Oracle通常使用rownum的方式;而Mysql使用limit的方式。
MickyInvQ
2020/09/27
1.2K0
使用JDBC连接MySQL数据库--典型案例分析(八)----实现员工数据的分页查询
MySQL数据库(良心资料)
我们所说的数据库泛指“关系型数据库管理系统(RDBMS-Relational database management system)”,即“数据库服务器”。
阮键
2019/09/29
1.4K0
Java jdbc Mysql数据库连接
jdbc数据库连接六步走 1. 注册驱动 注册驱动的两种方法 Class.forName("com.mysql.cj.jdbc.Driver"); //mysql8.+版本 Driver driver = new com.mysql.cj.jdbc.Driver(); DriverManager.registerDriver(driver); 2.获取连接 String url = "jdbc:mysql://127.0.0.1:3306/tests"; String user = "root"; Str
吃猫的鱼Code
2023/02/02
4.2K0
关联表多数据的批量insert (批量导入,测试19W条数据用时46秒)
导入后提示验证失败的所有数据和原因。
微风-- 轻许--
2022/04/13
1.3K0
数据库面试技巧,通过JDBC展示自己专业性,摘自java web轻量级开发面试教程
       这篇文章是我之前写的博文 数据库方面的面试技巧,如何从建表方面展示自己能力 和 面试技巧,如何通过索引说数据库优化能力,内容来自Java web轻量级开发面试教程是一个系列的,通过面试官的视角和大家分享在数据库方面的面试经验,这些内容都来摘自  java web轻量级开发面试教程。        之前的两篇文章点击量都还行,也感谢管理员放入首页,这鼓舞到了我,也让我更有信心和大家分享我的经验。         我们知道,最终我们是要通过jdbc来连接并访问数据库的,也就是说,最近面试官一定会通
用户1153489
2018/01/12
9080
数据库面试技巧,通过JDBC展示自己专业性,摘自java web轻量级开发面试教程
JDBC从零开始的保姆级教程!!!
这里原本最多只能有8个连接,我们使用了9次连接,因为其中当i=3时,我们归还了一个连接,不然会报错
大忽悠爱学习
2021/11/15
5390
头歌MySQL数据库实训答案 有目录[通俗易懂]
数据库部分一条一条的写,可鼠标手动粘贴,除特定命令外未分大小写。 第1关:创建数据库
全栈程序员站长
2022/09/13
8.4K0
大数据必学Java基础(九十六):PreparedStatement完成CURD和批处理
当我们有多条sql语句需要发送到数据库执行的时候,有两种发送方式,一种是执行一条发送一条sql语句给数据库,另一个种是发送一个sql集合给数据库,也就是发送一个批sql到数据库。普通的执行过程是:每处理一条数据,就访问一次数据库;而批处理是:累积到一定数量,再一次性提交到数据库,减少了与数据库的交互次数,所以效率会大大提高,很显然两者的数据库执行效率是不同的,我们发送批处理sql的时候数据库执行效率要高。
Lansonli
2022/12/15
3120
大数据必学Java基础(九十六):PreparedStatement完成CURD和批处理
java连接mysql数据库的步骤(访问数据库的步骤)
​ 安装mysql数据库配置(https://www.jianshu.com/p/ea4accd7afb4),安装还有配置教程,按照步骤来肯定没错,里面是win10的mysql解压版安装教程,设置账号密码是一定要注意 :账号一般为root,密码一般为 123456 ,如果你要更改的话一定要记住,因为后面连接需要用到(切记),如果忘了会很麻烦。
全栈程序员站长
2022/07/30
6.4K0
java连接mysql数据库的步骤(访问数据库的步骤)
推荐阅读
相关推荐
JDBC小项目—员工管理系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验