Java中的mysql事务处理

原创 2016年08月31日 08:31:18

一、事务是一组要么同时执行成功,要么同时执行失败的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");
			
			<span style="color:#ff0000;">conn.setAutoCommit(false); //JDBC中默认是true,自动提交事务</span>
			
			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("插入一个用户李四");
			
			<span style="color:#ff0000;">conn.commit();//提交事务
</span>		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			try {
				<span style="color:#ff0000;">conn.rollback();//某一条数据添加失败时,回滚</span>
			} 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中的mysql事务处理

一、事务是一组要么同时执行成功,要么同时执行失败的sql语句。是数据库操作的一个执行单元。 2、事物的四大特点: (1)atomicity(原子性)表示一个事务内的所有操作是一个整体,要么...
  • u013063153
  • u013063153
  • 2016年12月15日 16:20
  • 833

验证mysql的自动提交事务和手动提交事务(java版)

个人理解的一个事物:是一个Connection一系列的操作过程,如果是两个Connection连接在操作,那就是两个事物。事物的前提:数据库的存储引擎是innodb。事物的目的:保证数据的安全性。事物...
  • qq_33824312
  • qq_33824312
  • 2017年10月25日 21:29
  • 631

java mysql事务回滚

首先最原生态的com.mysql.jdbc.Driver数据源进行回滚。 1、spring配置文件
  • jianghuihong2012
  • jianghuihong2012
  • 2016年07月18日 23:23
  • 1936

关于java中MySQL的事务回滚

在开发中,我们最不希望出现的一件事就是在对数据库进行增删改查的时候,由于某些原因不能够一次性没有提交完,结果在数据库表中出现脏数据。而我们需要保证数据数据的完整性。事务正好为我们解决了此烦恼。publ...
  • yy763496668
  • yy763496668
  • 2016年05月24日 11:32
  • 2064

mysql java 处理事务问题

很少关心 数据库事务的 处理,  可能是因为用 java 写习惯了 数据库操作的流程, 突然 感到 很疑惑了, 以前在mysql 不支持事务的时候,  public static void ...
  • yu0784123
  • yu0784123
  • 2013年06月10日 16:11
  • 424

Java中数据库事务处理的实现

  摘要 本文介绍在Java中进行事务处理的方法,通过实例分别讲述了如何采用JavaBean、Ejb组件实现J2EE应用服务器支持的JDBC事务、JTA(Java Transaction API)事务...
  • chensheng913
  • chensheng913
  • 2004年10月16日 19:47
  • 7280

Java对数据库进行事务处理(批量删除操作)

本文是记录Java对数据库进行事务处理(删除操作),在开始之前先来看下面这样的一个页面图:         上面这张图片显示的是从数据库中查询出的用户信息,信息中进行了分页处理,然后每行的前面提供...
  • cselmu9
  • cselmu9
  • 2012年08月10日 14:22
  • 20217

java事务大总结(一) 先理解数据库的事务以mysql为例

一:  MYSQL的事务处理主要有两种方法。    1、用begin,rollback,commit来实现         begin       开始一个 事务 ...
  • tianya846
  • tianya846
  • 2014年03月18日 09:04
  • 897

java事务以及支持事务的数据库

事务通常是为了保证数据访问的正确性,由此事务通常与数据库联系,是指一组原子操作集合,即一条SQL语句,一组SQL语句或整个程序。我们通常需要关心的是何时使用数据库事务、怎么使用尽可能保证事务的隔离性以...
  • never_break_heart
  • never_break_heart
  • 2017年06月28日 09:49
  • 174

[Java]Spring数据库事务基础知识

Spring虽然提供了灵活方便的事务管理功能,但这些功能都是基于底层数据库本身的事务处理机制工作的。要深入了解Spring的事务管理和配置,有必要先对数据库事务的基础知识进行学习。 何为数据库事务 “...
  • abv123456789
  • abv123456789
  • 2015年10月13日 16:54
  • 1951
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中的mysql事务处理
举报原因:
原因补充:

(最多只允许输入30个字)