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 intTRANSACTION-NONE不支持事务
static intTRANSACTION-READ-COMMITED脏读,不可重复读和错误读取都是允许的
static intTRANSACTION-READ-UNCOMMITED禁止脏读,不可重复读和错误读取都是允许的
static intTRANSACTION-REPEATABLE-READ事务保证能够再次读取相同的数据而不会失败,错误读取是允许的
static intTRANSACTION-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(“保存点名称”):指示事务回滚到指定的保存点。

三、源码:

  • D139_1_CompileProcess.java
  • D138_2_PreparedStatementDelete.java
  • https://github.com/ruigege66/Java/blob/master/D139_1_CompileProcess.java
  • https://github.com/ruigege66/Java/blob/master/D138_2_PreparedStatementDelete.java
  • CSDN:https://blog.csdn.net/weixin_44630050
  • 博客园:https://www.cnblogs.com/ruigege0000/
  • 欢迎关注微信公众号:傅里叶变换,个人账号,仅用于技术交流
  • 1000.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值