Statement批量处理和事务代码如下:

package com.ambow.day20.jdbc.JDBCTestCommitAndRollback;

import java.sql.Connection;

import java.sql.SQLException;

import java.sql.Statement;

import com.ambow.day19.jdbc.util.JDBCConAndClo;

/*

*1,首先把Auto commit设置为false,不让它自动提交

*2,进行手动提交(commit)

*3,提交完成后回复现场将Auto commit,还原为true,

*4,当异常发生执行catch中SQLException时,记得要rollback(回滚);

* */

public class StatementCommitAndRollbackTest {

public static void main(String args[]) {

Connection con = null;

Statement stm = null;

try {

con = JDBCConAndClo.getConnectionBao();

stm = con.createStatement();

con.setAutoCommit(false);

// 若不出现异常,则继续执行到try语句完,否则跳转到catch语句中

stm.addBatch("insert into student values(23,'tangbao','高数',100)");

stm.addBatch("insert into student values(24,'王定','c#',98)");

stm.addBatch("insert into student values(25,'王国云','java',90)");

stm.addBatch("insert into student values(26,'溜出','英语',89)");

stm.addBatch("insert into student values(27,'wqde','java',63)");

/*

* int[] executeBatch() throws

* SQLException将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。

*/

stm.executeBatch();

System.out.println("插入成功!");

// commit:若成功执行完所有的插入操作,则正常结束

con.commit();

System.out.println("提交成功!");

con.setAutoCommit(true);

} catch (SQLException e) {

e.printStackTrace();

try {

//rollback: 若出现异常,对数据库中所有已完成的操作全部撤销,则回滚到事务开始状态

if (!con.isClosed()) {

con.rollback();

System.out.println("提交失败,回滚!");

con.setAutoCommit(true);

}

} catch (SQLException e1) {

e1.printStackTrace();

} finally {

JDBCConAndClo.closeStatement(stm);

JDBCConAndClo.closeConnection(con);

}

}

}

}

PreparedStatement批量处理和事务代码如下:

package com.ambow.day20.jdbc.JDBCTestCommitAndRollback;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import com.ambow.day19.jdbc.util.JDBCConAndClo;

/*

* PreparedStatement:

1.addBatch() 将一组参数添加到 PreparedStatement对象内部

2.executeBatch() 将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。

*

*/

public class PreparedStatementCommitAndRollbackTest {

public static void main(String args[]) {

Connection con = null;

PreparedStatement pstm = null;

try {

// 1. 建立与数据库的连接

con = JDBCConAndClo.getConnectionBao();

// 2. 执行sql语句

// 1).先创建PreparedStatement语句(发送slq请求):

pstm = con.prepareStatement("insert into student values(?,?,?,?)");

con.setAutoCommit(false);//1,首先把Auto commit设置为false,不让它自动提交

// 2) 设置sql语句1

pstm.setInt(1, 33);

pstm.setString(2,"wangqin");

pstm.setString(3, "c++");

pstm.setDouble(4, 78.5);

// 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。

pstm.addBatch();

// 2) 设置sql语句2

pstm.setInt(1, 34);

pstm.setString(2,"wuytun");

pstm.setString(3, "c");

pstm.setDouble(4, 77);

// 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。

pstm.addBatch();

// 2) 设置sql语句3

pstm.setInt(1, 31);

pstm.setString(2,"tetet");

pstm.setString(3, "c++");

pstm.setDouble(4, 90);

// 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。

pstm.addBatch();

// 2) 设置sql语句4

pstm.setInt(1, 32);

pstm.setString(2,"liug");

pstm.setString(3, "c");

pstm.setDouble(4, 50);

// 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。

pstm.addBatch();

// 4) 将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。

pstm.executeBatch();

System.out.println("插入成功!");

// 若成功执行完所有的插入操作,则正常结束

con.commit();//2,进行手动提交(commit)

System.out.println("提交成功!");

con.setAutoCommit(true);//3,提交完成后回复现场将Auto commit,还原为true,

} catch (SQLException e) {

e.printStackTrace();

try {

// 若出现异常,对数据库中所有已完成的操作全部撤销,则回滚到事务开始状态

if(!con.isClosed()){

con.rollback();//4,当异常发生执行catch中SQLException时,记得要rollback(回滚);

System.out.println("插入失败,回滚!");

con.setAutoCommit(true);

}

} catch (SQLException e1) {

e1.printStackTrace();

}

}finally{

JDBCConAndClo.closePreparedStatement(pstm);

JDBCConAndClo.closeConnection(con);

}

}

}

java批量提交事务_java加事务批量提交相关推荐

  1. java jdbc 回滚_java_详解Java的JDBC API中事务的提交和回滚,如果JDBC连接是在自动提交模式 - phpStudy...

    详解Java的JDBC API中事务的提交和回滚 如果JDBC连接是在自动提交模式下,它在默认情况下,那么每个SQL语句都是在其完成时提交到数据库. 这可能是对简单的应用程序,但有三个原因,你可能想关 ...

  2. java jdbc 批量更新_java – JDBC PreparedStatement,批量更新和生成的密钥

    我在批处理中使用jdbc preparedStatement并尝试获取由此创建的生成密钥时出现问题. 代码 : PreparedStatement stmt = null; ... connectio ...

  3. java 批量存储_java I/O 批量插入保存文件

    [java]代码库package cq.price; import java.io.File; import java.util.ArrayList; import java.util.List; i ...

  4. java 批量删除_java根据id批量删除

    1.mapper.xml 传入的参数可以是List也可以是Array数组,ParameterType都写List就可以collection="array"也可以写成collecti ...

  5. java mongodb批量更新_java中mongoTemplate批量更新

    方法:mongoTemplate.getDb().getCollection(tableName).bulkWrite(requests); public BulkWriteResult bulkWr ...

  6. workbench 手动提交事务_mysql实现事务的提交和回滚实例

    mysql创建存储过程的官方语法为: START TRANSACTION | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] RO ...

  7. java 12306 证书_java加载证书,访问12306的https链接

    下载12306的证书,访问12306网站,下载12306的证书 导出证书 导出完成后,导入证书 查看是否导入 java中加载证书public static void main( String[] ar ...

  8. java post流_Java后端HttpClient Post提交文件流 及服务端接收文件流

    客户端将文件转换为流发送: 依赖的包: org.apache.httpcomponents httpclient 4.4 org.apache.httpcomponents httpmime 4.4 ...

  9. jpa批量保存,事务没提交_在事务外自动保存托管JPA实体

    jpa批量保存,事务没提交 Spring中的存储库和事务并存. Spring中的所有数据库访问都应在事务内运行,并且通常在某个地方使用@Transactional来强制执行此操作. 但是,这并不总是必 ...

  10. java epub 删除一页_java如何实现批量删除pdf指定的页数

    依赖: org.apache.pdfbox pdfbox-app 1.8.10 java 用PDFBox 删除 PDF文件中的某一页,前n页,后n页,效率低,不推荐使用 package com.eve ...

最新文章

  1. 简介nandflash、norflash、ram、sram、dram、rom、eeprom、flash的区别
  2. 软件测试第二次作业:JUNIT单元测试方法
  3. hackme_Login As Admin 0
  4. CentOS7.0使用Yum安装Nginx
  5. 使用JBoss Fuse和OpenShift进行Cloud Native Camel骑行
  6. 企业类库 add access 2007
  7. sci的figure怎么做_如何制作科技论文中的Figure
  8. 「mac操作指南」WidsMob HEIC将HEIC/HEIF 转换为 JPEG/PNG/TIFF格式
  9. 【学习】013 Servlet、Cookie、Session的简述
  10. mysql 记录_mysql记录耗时的sql实例详解
  11. linux 上安装 Node.js和npm
  12. 【转】nodejs 爬取前端面经并生成词云
  13. 同义句转换在线翻译器的软件
  14. JavaWeb宿舍管理系统环境搭建运行教程
  15. html文件如何创建文件,怎么创建html文件
  16. [Python] RSS 文字转图片并单独抓取url以文字输出
  17. _kbhit()以及_getch()函数的用法
  18. 云游 Google I/O 2021——Google Cloud 硬件算力和模型新突破
  19. 抖音矩阵系统源码定制。look here
  20. 基于SpringBoot视频学习系统|视频点播系统的设计与实现【Java毕业设计·安装调试·代码讲解·文档报告】

热门文章

  1. 2008年17款远程控制软件大比拼
  2. 工具说明书 - 滚动截屏和录屏软件ShareX
  3. 一个开源的会议管理系统,适合初学者练手(老司机请忽略)
  4. 这可能是目前最好用的p2p外网访问内网软件(免费内网穿透)
  5. zemax设计35mm镜头_镜头光学设计宝典结合Zemax实例分析(中文版).pdf
  6. 高仿国美在线 顶部实现
  7. 安捷伦仪器仪表 - 程控总结
  8. c++基础 STL 第 0 篇:(模板)
  9. 机器学习与数据挖掘的区别(一点个人理解)
  10. 524MB的微信输入法:没广告 你会用吗