• Java连载139-数据库编译预处理和事务回退


    一、编译预处理

    • 我们直接举一个例子
    package com.bjpowernode.java_learning;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    public class D139_1_CompileProcess {
    	
    	public static void main(String[] args) {
    		Connection con = null;
    		PreparedStatement ps;
    		ResultSet rs = null;
    		
    		try {
    			Class.forName("com.hxtt.sql.access.AccessDriver");
    			String URL = "jdbc:Access:///e:xsgl.mdb";
    			con = DriverManager.getConnection(URL);
    		}catch(Exception e) {
    			
    		}
    		
    		try {
    			String update = "update tb_record set name=? where ID = ?";
    			ps = con.prepareStatement(update);
    			ps.setString(1,"项羽");
    			ps.setInt(2,4);
    			for(int i=0;i<10;i++) {
    				ps.setInt(2, i);
    				ps.setString(1, String.valueOf((char)(65+i)));
    				int rowCount = ps.executeUpdate();
    			}
    			ps.close();
    			con.close();
    		}catch(Exception e) {
    			
    		}
    	}
    
    }
    
    • 通过循环来给?处定义文字来进行升级操作。

    二、事务处理

    1.数据错误分类

    • (1)脏读(一个事务修改了某一行数据而未提交,另一事务读取了该行数据,假如前一个事务发生了回退,则后一个事务将得到一个无效的值。
    • (2)不可重复读
    • (3)错误读

    2.数据库事务具有的特征

    • 原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

    3.常用事务处理方法

    类型 隔离级别 含义
    static int TRANSACTION-NONE 不支持事务
    static int TRANSACTION-READ-COMMITED 脏读,不可重复读和错误读取都是允许的
    static int TRANSACTION-READ-UNCOMMITED 禁止脏读,不可重复读和错误读取都是允许的
    static int TRANSACTION-REPEATABLE-READ 事务保证能够再次读取相同的数据而不会失败,错误读取是允许的
    static int TRANSACTION-SERIALIZABLE 禁止脏读,不可重复读和错误读取
    • 用con.setTransactionIsolation(Connection.Isolationlevel);进行事务隔离级别的设置,Isolation_level取值即为表中5个常量。
    • 使用Connection中的三个方法来完成基本的事务管理。
    • (1)setAutoCommit(boolean true/false):设置自动提交属性AutoCommit,默认为true.
    • (2)rollback():回滚事务
    • (3)commit():事务提交。
    • 事务中可以有多个任务,一旦失败了,可以不回退,可以使用保存点(savepoint)来控制回滚的数量。所谓保存点,就是对事物的某些子任务设置符号标识,用来为回滚操作提供位置指示
    • 关于保存点的方法有以下三个:(1)setSavepoint("保存点名称"):在某子任务前设置保存点;(2)releaseSavepoint("保存点名称"):释放指定的保存点;(3)rollback("保存点名称"):指示事务回滚到指定的保存点。

    三、源码:

  • 相关阅读:
    axios封装
    python 分析列表中的字典
    python 列表解析学习
    Java常用ORM框架
    Kafka 会不会丢消息?怎么处理的?
    Node.js学习笔记【八】
    Node.js学习笔记【七】
    Node.js学习笔记【六】
    Node.js学习笔记【五】
    Node.js学习笔记【四】
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13694100.html
Copyright © 2020-2023  润新知