JDBC编程的事务处理

简介:

一、事务的基本概念

    数据库是一个多用户使用的共享资源。当多个用户并发地存取数据的时候,在数据库中就会产生多个用户同时存取同一数据的情况。若对并发操作不加控制,就可能会产生读取和存储不正确的数据,破坏数据的一致性。

    而事务是并发控制的基本单位。所谓事务,即一个操作序列。这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。比如银行转账工作:从一个账户扣款,并使用另一个账户收款,这两个操作要么都执行,要么都不执行,因此应该把它们看作是一个事务。

    事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据的一致性。

    对于编程人员来说,可以把数据库事务看作是一组sql语句,这组sql语句是一个逻辑工作单元,它们是不可分割的,它们的执行结果应该作为一个整体永久修改一个数据库的内容或者作为一个整体取消对数据库的修改。

    

二、事务的四个基本特征

    1.原子性

    原子性是指事务中包含的操作都被看作是一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。这也意味着事务中的所有元素作为一个整体提交或回滚。事务的所有元素是不可分割的,是一个完整的操作。

    2.一致性

    一致性是指事务开始之前和事务结束以后数据库都处于一致性状态,数据库的完整性约束没有被破坏。

     3.隔离性

    隔离性是指对数据库进行修改的多个事务是彼此隔离的。这说明事务必须是独立的,不应该以任何形式影响其他事务

    4.持久性

    持久性是指事务完成之后对于数据库的影响是永久的,该修改真实地修改了数据库,即使数据库出现故障也会一直保留。


三、与SQL相关的事务语句

    开始事务:BEGIN TRANSACTION

    提交事务:COMMIT TRANSATION

    回滚事务:ROLLBACK TRANSATION    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package  com.eduask.jdbc;
 
import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.SQLException;
import  java.sql.Statement;
 
/*将要测试的逻辑
   保存一个用户Tom的基本信息和Tom的地址信息
   分别通过两个java方法插入到用户表和地址表中 
   在插入地址表的时候人为造成一个异常
   观察结果
  */
public  class  TransactionTest {
     
     //创建一个getConnection()用来获取数据库的连接
     public  static  Connection getConnection(){
         Connection conn =  null ;
         
         try  {
             Class.forName( "com.mysql.jdbc.Driver" );
             conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/testdemo" , "root" , "root" );
         catch  (Exception e) {
             e.printStackTrace();
         }
         
         return  conn;
     }
     
     public  static  void  insertUserData(Connection conn)  throws  SQLException{
             String sql =  "insert into tbl_user(id,name,password,email) "
                     "values(10,'Tom','123456','tom@gmail.com')" ;
             Statement st = conn.createStatement();
             int  count = st.executeUpdate(sql);
             System.out.println( "向用户插入了 " + count +  " 条记录" );
     }
     
     public  static  void  insertAddressData(Connection conn)  throws  SQLException{
             String sql =  "insert into tbl_address(id,city,country,user_id) "
                     "values(1,'ShangHai','China','10')" ;
             Statement st = conn.createStatement();
             int  count = st.executeUpdate(sql);
             System.out.println( "向地址表中插入了 " + count +  " 条记录" );
     }
     
     public  static  void  main(String[] args) {
         Connection conn =  null ;
         try  {
             conn = getConnection();
             conn.setAutoCommit( false );
             
             insertUserData(conn);
             insertAddressData(conn);
             
             conn.commit();
         catch  (SQLException e) {
             System.out.println( "=========捕获到SQL异常=========" );
             
             e.printStackTrace();
             try  {
                 conn.rollback(); //回滚事务,保证数据库数据的一致性
                 System.out.println( "=========事务回滚成功=========" );
             catch  (Exception e2) {
                 e2.printStackTrace();
             }
         } finally {
             try  {
                 if  (conn !=  null ) {
                     conn.close();
                 }
             catch  (Exception e3) {
                 e3.printStackTrace();
             }
         }
     }
     
     
}





本文转自yeleven 51CTO博客,原文链接:http://blog.51cto.com/11317783/1784316



相关文章
|
6月前
|
Java 数据库连接 数据库
JSP奖学金管理系统myeclipse开发sqlserver数据库bs框架java编程jdbc
JSP 奖学金管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为SQLSERVER2008,使用java语言开发,系统主要采用B/S模式开发。
35 0
|
6月前
|
Java 关系型数据库 MySQL
JSP居民信息采集系统yeclipse开发mysql数据库bs框架java编程jdbc
JSP 居民信息采集系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语,言开发系统主要采用B/S模式开发。
36 0
|
6月前
|
Java 关系型数据库 MySQL
JSP学生交流论坛系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 学生交流论坛系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语,言开发系统主要采用B/S模式开发。 https://www.bilibili.com/video/BV1jB4y1q7Ut?spm_id_from=333.999.0.0
73 0
|
1月前
|
SQL Java 数据库连接
Java的JDBC编程
Java的JDBC编程
|
3月前
|
druid Java 数据库连接
最新Java基础系列课程--Day16-JDBC编程(三)
最新Java基础系列课程--Day16-JDBC编程
|
3月前
|
SQL 安全 Java
最新Java基础系列课程--Day16-JDBC编程(二)
最新Java基础系列课程--Day16-JDBC编程
|
3月前
|
SQL Java 关系型数据库
最新Java基础系列课程--Day16-JDBC编程(一)
最新Java基础系列课程--Day16-JDBC编程
|
3月前
|
SQL Java 关系型数据库
JDBC技术【SQL注入、JDBC批量添加数据、JDBC事务处理、其他查询方式】(三)-全面详解(学习总结---从入门到深化)
JDBC技术【SQL注入、JDBC批量添加数据、JDBC事务处理、其他查询方式】(三)-全面详解(学习总结---从入门到深化)
33 0
|
4月前
|
SQL Java 关系型数据库
最新Java基础系列课程--Day16-JDBC编程
最新Java基础系列课程--Day16-JDBC编程
|
4月前
|
SQL Java 关系型数据库
JDBC编程步骤、JDBC API详解和数据库连接池
JDBC编程步骤、JDBC API详解和数据库连接池