本文实例讲述了Java实现的mysql事务处理操作。分享给大家供大家参考,具体如下:

1、事务是一组要么同时执行成功,要么同时执行失败的sql语句。是数据库操作的一个执行单元。

2、事物的四大特点:

(1)atomicity(原子性)表示一个事务内的所有操作是一个整体,要么全部成功,要么全部失败。

(2)consistency(一致性)表示一个事物内有一个操作失败时,所有更改过的数据都必须回滚到修改前的状态。

(3)isolation(隔离性)事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。

(4)durability(持久性)持久性事务完成之后,他对于系统的影响是永久性的。

3、实例(以sql语句中的insert语句为例)

package com.test.jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

/**

* 事务的基本用法

*

*/

public class Test {

public static void main(String[] args) {

Connection conn = null;

PreparedStatement ps1 = null;

PreparedStatement ps2 = null;

try {

//加载驱动类

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","123456");

conn.setAutoCommit(false); //JDBC中默认是true,自动提交事务

ps1 = conn.prepareStatement("insert into t_user (username,pwd) values (?,?)");//?是占位符

ps1.setObject(1, "张三");

ps1.setObject(2, "666666");

ps1.execute();

System.out.println("插入一个用户张三");

try {

Thread.sleep(3000);

} catch (InterruptedException e) {

e.printStackTrace();

}

ps2 = conn.prepareStatement("insert into t_user (username,pwd) values (?,?)");

ps2.setObject(1, "李四");

ps2.setObject(2, "123456");

ps2.execute();

System.out.println("插入一个用户李四");

conn.commit();//提交事务

} catch (ClassNotFoundException e) {

e.printStackTrace();

try {

conn.rollback();//某一条数据添加失败时,回滚

} catch (SQLException e1) {

e1.printStackTrace();

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

try {

if(ps1!=null){

ps1.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

try {

if(conn!=null){

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

这段代码是正确的结果。运行结果:

插入一个用户张三

(等待三秒后)

插入一个用户李四

查看数据库,插入了两条数据。

接下来把数据库中刚刚插入的两条数据删掉,然后把第二条sql语句改一下,让他出错,在第二条sql语句中去掉一个占位符:

ps2 = conn.prepareStatement("insert into t_user (username,pwd) values (?)");

运行结果:

插入一个用户张三

(等待三秒后)

抛出错误了。。。。。。。。

然后查看一下数据库,发现数据库中两条数据都没能添加成功

更多关于java相关内容感兴趣的读者可查看本站专题:《Java+MySQL数据库程序设计总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

本文标题: Java实现的mysql事务处理操作示例

本文地址: http://www.cppcns.com/ruanjian/java/238672.html

mysql事务处理 java_Java实现的mysql事务处理操作示例相关推荐

  1. python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...

  2. python操作数据库教程_Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...

  3. MySQL数据库C接口的数据查询操作示例

    MySQL数据库C接口的数据查询操作示例 命令行操作 (1)建库建表(已有则不用) 连接MySQL服务器,并登录之.选择某个数据库.假设用户在这个数据库下已有一个表了. (2)查询所有数据的方法 SE ...

  4. yii mysql gii_Yii 框架使用Gii生成代码操作示例

    本文实例讲述了Yii 框架使用Gii生成代码操作.分享给大家供大家参考,具体如下: 开始 Gii Gii 是 Yii 中的一个模块. 可以通过配置应用的 modules 属性开启它.通常来讲在 con ...

  5. c# mysql 事务_C# 使用SqlTransaction进行事务处理

    事务处理基本原理 事务是将一系列操作作为一个单元执行,要么同时成功,要么同时失败,回滚到最初状态.在事务处理术语中,事务要么提交,要么中止.若要提交事务,所有参与者都必须保证对数据的任何更改是永久的. ...

  6. node mysql await_node.js中对 mysql 进行增删改查等操作和async,await处理

    要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...

  7. mysql.createPool(db),Node.js中JavaScript操作MySQL的常用方法整理

    一.建立数据库连接:createConnection(Object)方法      该方法接受一个对象作为参数,该对象有四个常用的属性host,user,password,database.与php中 ...

  8. 我艹,MySQL数据量大时,delete操作无法命中索引。

    来自:Java面试那些事儿 最近,在脉脉上看到一个楼主提出的问题:MySQL数据量大时,delete操作无法命中索引:并且还附上了相关案例截图. 最终,楼主通过开启MySQL分析优化器追踪,定位到是优 ...

  9. Mysql binlog日志及binlog恢复数据库操作

    初识MySQL 日志binlog MySQL重要log,二进制日志文件,记录所有DDL和DML语句(除select),事件形式记录,包含语句所执行的消耗时间,事务安全型. DDL(数据库定义语言),主 ...

最新文章

  1. Java并发编程基础--ThreadLocal
  2. (10)调用门提权(无参数)
  3. Mybatis映射文件动态SQL语句-01
  4. 学习笔记(51):Python实战编程-ListBox
  5. 30、JAVA_WEB开发基础之servlet(1)
  6. IIS7日志文件位置
  7. 【华为云技术分享】数据湖数据库,别再傻傻分不清了
  8. python相机拍照显示_从solvePnP获取摄影机姿势
  9. java 线程亲缘性_第7章 线程调度、优先级和亲缘性(1)
  10. nginx http相关配置定义路径相关配置
  11. switch交换的vlan三种模式详解
  12. linux gprs模块 sim900芯片 ppp拨号上网
  13. 进击的Libra:路在何方?中国应如何应对?
  14. 线性代数之——消元法
  15. PFO(DMP end capped) cas:195456-48-5聚合物光电材料
  16. 安桌16进制变色列表和计算方法
  17. Linux 创建MBR的磁盘的扩展分区、逻辑分区相关问题(parted)
  18. Linux下架构安全邮件服务器之Sendmail
  19. 达内教育python培训
  20. js 计算两个日期之间的不同天数

热门文章

  1. 编译器错误消息: CS0006: 未能找到元数据文件 System.EnterpriseServices
  2. 设置远程桌面(一)修改Win7远程桌面端口
  3. C++中的long long和__int64类型(转载)
  4. asp.net试题(三)
  5. 计算机考研分析题,2020计算机考研,易错题分析与常考点总结
  6. java 代码转换_java字符编码转换过程(转)
  7. 菜单黑暗模式UI动画素材模板
  8. Apple Watch UX流程套件 Fresh模板
  9. 超时尚的UI电子商务PSD分层模板,临摹学习必备
  10. shell题库选择题_shell 练习题