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);

}

}

}

mysql preparedstatement 批量update_Statement和PreparedStatement批量更新相关推荐

  1. mysql 批量replace into_replace into 批量更新

    1..replace into 批量更新 $sql = replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y'); test_tb ...

  2. Java添加多行数据到mysql中_Java:使用PreparedStatement将多行插入到MySQL中

    您可以通过PreparedStatement#addBatch()创build一个批处理,并通过PreparedStatement#executeBatch()执行它. 这是一个开球的例子: publ ...

  3. mybatis批量插入(insert)和批量更新(update)

    文章目录 一.Mybatis批量插入 二.批量更新 前言:这两天在做mybatis批量插入和更新的时候,对这块不是很清楚,所以今天写篇文章,巩固加深印象. 一.Mybatis批量插入 批量插入的sql ...

  4. batchupdate写法_mybatis执行批量插入insert和批量更新update

    Mybatis批量插入和批量更新数据的资料相信大家从网上能查找到很多资料,本文重点总结一下mybatis执行批量插入insert和批量更新update数据.在mysql数据库中批量插入,如:inser ...

  5. SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)

    原文:SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入) 临时表:Test /****** 对象: Table [dbo].[Test] 脚本日期: 05/10/2013 11:4 ...

  6. mysql 批量_mysql LOAD语句批量录入数据

    本章的前面讨论如何使用SQL向一个表中插入数据.但是,如果你需要向一个表中添加许多条记录,使用SQL语句输入数据是很不方便的. 幸运的是,MySQL提供了一些方法用于批量录入数据,使得向表中添加数据变 ...

  7. MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)

    MySQL数据库工具类之--DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ...

  8. oracle批量查询更新,Oracle批量查询、删除、更新使用BULK COLLECT提高效率

    BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer用法笔记. 例1: 批量查询项目资金账户号为 & ...

  9. java mongodb批量更新数据_MongoDB的批量查询条件进行批量更新数据

    今天遇到这样一个场景:在Java中批量更新MongoDB数据,不过每次更新的条件有不一样,那如何有效地进行更新操作呢? 刚开始的时候,我是想到循环批量更新操作,即每一种查询条件进行一次批量更新过程,这 ...

  10. MySQL创建函数和存储过程,批量插入大数据

    工作中使用Jmeter压测时,需要大数据量,可以使用MySQL创建函数和存储过程,批量插入大数据 右击新建函数,创建过程 完成后自动创建 在body部分写入过程: DECLARE id INT DEF ...

最新文章

  1. PaddleClas
  2. suse linux 备份,suse linux利用scp实现自动远程备份
  3. ubuntu下wps无法使用搜狗输入法输入中文
  4. SpringBoot项目的几种创建方式,启动、和访问
  5. Android中Intent的显示和隐式使用
  6. access-control-allow-origin php,PHP通过Access-Control-Allow-Origin 跨域
  7. zookeeper是做什么用的_做橱柜用什么门板好 选对很关键
  8. python tfidf特征变换_Python机器学习之“特征工程”
  9. Python开发基础 day5 函数的定义与使用
  10. java贪吃蛇_如何用Java还原童年回忆?在线教你完成贪吃蛇小游戏
  11. java学习(15):巩固练习
  12. html5+php实现文件拖动上传功能
  13. 基于Ajax的模糊查询输入控件(补充)
  14. MS SQL 表字段增加,删除,修改
  15. python中close_python close()是什么?python close()定义及用法详解
  16. java在线截图_JAVA之网页截屏
  17. man 命令指定section
  18. 跟着小马哥学系列之 Spring AOP(AbstractAutoProxyCreator 详解)
  19. 机器学习在无线信道建模中的应用现状与展望
  20. flutter项目运行到IOS手机

热门文章

  1. 二十年经典港台电视剧回顾
  2. 冒泡、选择和插入排序图解详细分析
  3. Blender 常用快捷键记录 (二)
  4. Android对话框的详细介绍(提示对话框,自定义对话框)
  5. 一个计算机能插两块显卡吗,双显卡有什么好处(一台电脑安装两张不同的显卡)...
  6. wps里为什么没有华文楷体_是谁动了我的字体?为什么Word或PPT换台电脑打开字体就变了呢?...
  7. VisionPro实现测量工件内圆尺寸
  8. stm32实验报告心得体会_STM32单片机红外遥控MP3实验报告
  9. php- osc,【原创】phpdesigner 使用OSC@GIT
  10. Android双清卸载木马,刷机如何清除木马病毒