当前位置: 首页 > wzjs >正文

中山台州网站建设推广烟台哪儿有可以做淘宝网站的

中山台州网站建设推广,烟台哪儿有可以做淘宝网站的,招聘网站开发的流程,上海有名的科技公司目录 一. JDBC批量添加数据 1. 什么是批量添加数据 2. 实现数据的批量添加 a. 方式一:不分块 二. JDBC事务处理 1. 什么是事务 2. JDBC事务处理实现 三. 总结 前言 本文来讲解JDBC的批处理和事务处理 这对数据的安全性和准确性以及高效率提供很好的办法 话不…

目录

一. JDBC批量添加数据

1. 什么是批量添加数据

2. 实现数据的批量添加

a. 方式一:不分块

二. JDBC事务处理

1. 什么是事务

2. JDBC事务处理实现

三. 总结


前言

本文来讲解JDBC的批处理和事务处理

这对数据的安全性和准确性以及高效率提供很好的办法

话不多说,即刻发车~

个人主页:艺杯羹

系列专栏:JDBC

一. JDBC批量添加数据

1. 什么是批量添加数据

在JDBC中通过PreparedStatement的对象的addBatch()executeBatch()方法进行数据的批量插入

  • addBatch():把若干SQL语句装载到一起,然后一次性传送到数据库执行
    即是批量处理sql数据的。做数据的缓存
  • executeBatch():会将装载到一起的SQL语句执行

注意:
MySql默认情况下是不开启批处理

数据库驱动从5.1.13开始添加了一个对rewriteBatchStatement的参数的处理,该参数能够让MySql开启批处理。在url中添加该参数:rewriteBatchedStatements=true

Mysql的URL参数说明

参数名

取值范围

作用说明

useUnicode

[true | false]

是否使用编码集,需配合 characterEncoding 参数使用

characterEncoding

[utf-8 | gbk | ...]

编码类型

useSSL

[true | false]

是否使用SSL协议

rewriteBatchedStatements

[true | false]

可以重写向数据库提交的SQL语句(开启批处理)

这些参数都是添加在如下图的这个 连接数据库的URL当中

添加参数的格式:使用 ?来开始,之后的元素用 & 来添加
例如:
jdbc:mysql://localhost:8080/students ? useSSL=false & rewriteBatchedStatements = true

这样就开启了批处理

2. 实现数据的批量添加

像没有学批处理的话,一般是的思路是,去使用for循环去和数据库交互n次,批量添加1000条数据,就会执行1000次executeUpdate(),交互数据库1000次,交互的次数越多,效率和性能就越低

因此,我们批处理,先进行缓存,最后再进行一个执行,那么这样就和数据库交互的次数就很少了,效率和性能也就随之大大增强了

a. 方式一:不分块

public void addBatch1(){Connection connection = null;PreparedStatement ps = null;try{// 建立连接connection = JdbcUtils.getConnection();// 创建PreparedStatementps = connection.prepareStatement("insert into students values(default, ?, ?)");for(int i = 0; i < 100; i++){// 绑定studentnameps.setString(1, "studentname"+i);// 绑定studentageps.setInt(2, 18);// 缓存ps.addBatch();}// 执行sqlps.executeBatch();}catch(Exception e){e.printStackTrace();}finally{JdbcUtils.closeResource(ps, connection);}}

这里批处理是,所有的全部缓存完后才开始执行SQL语句。例如,这里是添加一百个学生信息,那么是一次性添加完,最后来执行。这就是不分块,而是整块

但是如果数据量太大,例如百万条数据,JVM的内存肯定是会耗尽的,为了避免,就可以使用分块的逻辑来写,也就是,到达了某一个数量,就要执行一次addBatch缓存中的数据

b. 方式二:分块

public void addBatch1(){Connection connection = null;PreparedStatement ps = null;try{// 建立连接connection = JdbcUtils.getConnection();// 创建PreparedStatementps = connection.prepareStatement("insert into students values(default, ?, ?)");for(int i = 1; i <= 10000; i++){// 绑定studentnameps.setString(1, "studentname"+i);// 绑定studentageps.setInt(2, 18);// 缓存ps.addBatch();// 如果缓存了100条数据,就执行if(i % 100 == 0){// 执行sqlps.executeBatch();//清除缓存ps.clearBatch();}}}catch(Exception e){e.printStackTrace();}finally{JdbcUtils.closeResource(ps, connection);}}

二. JDBC事务处理

1. 什么是事务

事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行
只要有一方出错,都不执行,这样就确保了业务的正确性

事务操作流程:

  • 开启事务
  • 提交事务
  • 回滚事务(撤销)

JDBC中事务处理特点

在JDBC中,使用Connection对象来管理事务,默认为自动提交事务。可以通过setAutoCommit(boolean autoCommit)方法设置事务是否自动提交,参数为boolean类型,默认值为true,表示自动提交事务,如果值为false则表示不自动提交事务,需要通过commit方法手动提交事务或者通过rollback方法回滚事务

2. JDBC事务处理实现

注:因为第一篇文章里已经用JDBC工具类里封装了提交和回滚事务的方法,如果不清楚的话,来看第一篇文章
传送门:JDBC

public void addBatch1(){Connection connection = null;PreparedStatement ps = null;try{// 建立连接connection = JdbcUtils.getConnection();// 设置事务的提交方式,将自动提交修改为手动提交connection.setAutoCommit(false);// 创建PreparedStatementps = connection.prepareStatement("insert into students values(default, ?, ?)");for(int i = 0; i < 100; i++){// 绑定studentnameps.setString(1, "studentname"+i);// 绑定studentageps.setInt(2, 18);// 加入缓存 ps.addBatch();}// 提交事务JdbcUtils.commit(connection);}catch(Exception e){e.printStackTrace();// 如果出现错误就执行回滚数据JdbcUtils.rollback(connection);}finally{JdbcUtils.closeResource(ps, connection);}}

三. 总结

希望本文能够对你有所帮助😊


文章转载自:

http://QnzfBJjt.ggpsw.cn
http://zWucsCWK.ggpsw.cn
http://utUVseE0.ggpsw.cn
http://3oPxWWfO.ggpsw.cn
http://0ufkFeBV.ggpsw.cn
http://EsXgjpeY.ggpsw.cn
http://RAqyd5vY.ggpsw.cn
http://FFV15CDK.ggpsw.cn
http://oplWJvPJ.ggpsw.cn
http://Oo8kSYTP.ggpsw.cn
http://O0yvBeQT.ggpsw.cn
http://KxvuAEVP.ggpsw.cn
http://9PbTMKiu.ggpsw.cn
http://fSLuAOnJ.ggpsw.cn
http://ks625qCA.ggpsw.cn
http://PzI5s0Lu.ggpsw.cn
http://jxgwaNoy.ggpsw.cn
http://ybZPeKOt.ggpsw.cn
http://Ukvfr8hB.ggpsw.cn
http://cgzTdaRZ.ggpsw.cn
http://6LoShTkz.ggpsw.cn
http://T6KXj414.ggpsw.cn
http://XylIhjwJ.ggpsw.cn
http://X55B1iRB.ggpsw.cn
http://T3wqGRwt.ggpsw.cn
http://bEhwXDTz.ggpsw.cn
http://3zvdUNvF.ggpsw.cn
http://NxtSIUNQ.ggpsw.cn
http://OMqpAD1O.ggpsw.cn
http://DRix2dGi.ggpsw.cn
http://www.dtcms.com/wzjs/628890.html

相关文章:

  • 金华住房与城乡建设部网站数据分析师需要学哪些课程
  • nodejs做后端的网站请人做网站得多少钱
  • 关于建设网站的会议纪要网站建设前景怎么样
  • 企业网站开发文献综述成都房地产交易中心官网
  • 做响应式网站一般都用哪些框架社团网站建设的功能定位
  • 昆明制作手机网站千锋教育招聘
  • 网站数据中心的建设wordpress 升级失败
  • 企业网站建设试题萍乡做网站的公司有哪些
  • 赣州网站制作公司建设兼职网站目的
  • 做一个在线支付网站搜索关键词技巧
  • 自己做网站转发新闻违法么下载官方正版app
  • 济源网站优化wordpress图片轮播插件
  • 网站文章伪原创如何做宝塔安装wordpress教程
  • ppt的网站导航栏怎么做安徽建新建设工程有限公司网站
  • 提供网站制作公司报价wordpress模板下载失败
  • 贵阳微网站意见反馈的网站怎么做
  • 推进网站集约化建设制度2022华为云营销季
  • 网站开发及建设成都企业网站建站
  • 做新媒体应该关注什么网站软文推广的作用
  • 北京 网站建设 公司新网站怎么做seo优化
  • 台州宇洋台州网站建设网站开发工程师简介
  • 门户网站开发工具网站建设需求说明文档
  • 资讯网站的优势自建 wordpress
  • 密云建设网站公司her123 wordpress
  • 双语企业网站源码公司要想做个网站这么弄
  • 济宁 做网站网站seo优化如何做
  • 网站推广广告公司花都网站建设网页设计
  • 酒泉建设局造价官网站浙江平台网站建设哪家有
  • 用手机可以做网站嘛如何做app推广运营
  • 重庆做网站letide关键词优化排名易下拉霸屏