-
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("保存点名称"):指示事务回滚到指定的保存点。
三、源码:
- 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
出 处:https://www.cnblogs.com/ruigege0000/p/13694100.html
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比