Java关于Mysql数据库的事物处理类

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Java关于Mysql数据库的事物处理类

Mysql5很好的支持了事物处理功能。不过支持这个功能的只有两种表类型。

分别是BDB,InnoDB。
先建立一个表,名为Kiss,数据为id (int),name(varchar),pop(varchar)。
下面是源码:
复制代码
import java.sql.*;
public class TestCommit{
public static void main(String args[]){
Connection conn=null;
try{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/kiss";
conn=DriverManager.getConnection(url,"username","password");
boolean autoCommit=conn.getAutoCommit();
//关闭自动提交功能
conn.setAutoCommit(false);
Statement stmt=conn.createStatement();
stmt.executeUpdate("insert into sun values(15,'Hello','Beijing')");
stmt.executeUpdate("insert into sun values(16,'Hi','shanghai')");
//代码效果参考:http://0791zd.com/zx/art_5278.html

   ResultSet rs=stmt.executeQuery("select * from sun");
   while(rs.next()){
        System.out.print("DeptNo:"+rs.getInt(1));
        System.out.print("\tDeptName:"+rs.getString(2));
        System.out.println("\tLOC:"+rs.getString(3));

}
//提交事务
conn.commit();
//恢复原来的提交模式
conn.setAutoCommit(autoCommit);
stmt.close();
}catch(Exception e){
System.out.println("操作失败!!!任务撤销!!!");
//回滚、取消前述操作
conn.rollback();
}catch(Exception e1){
e1.printStackTrace();
}
}finally{
try{
if(conn!=null){
conn.close();
}
}catch(Exception e1){
e1.printStackTrace();
}
}
执行第一次执行这个类,id如果不冲突,就可以顺利插入数据,第二次插入,id冲突,则实现回滚。
下面是部分回滚:
public class TestSavepoint{
stmt.executeUpdate("insert into sun values(21,'Hello','Beijing')");
stmt.executeUpdate("insert into sun values(22,'Hi','shanghai')");
Savepoint sp1=conn.setSavepoint("p1");
stmt.executeUpdate("insert into sun values(25,'shiyang','xingtai')");
Savepoint sp2=conn.setSavepoint("p2");
//代码效果参考:http://0791zd.com/bx/art_4989.html

   stmt.executeUpdate("insert into sun values(60,'shiyang','baoding')");
   ResultSet rs=stmt.executeQuery("select avg(id) from sun");
   rs.next();
   double avg_id=rs.getDouble(1);
   if(avg_id>100){
     conn.rollback(sp1);
   }else if(avg_id>30){
     conn.rollback(sp2);
   }
   conn.commit();
   rs=stmt.executeQuery("select * from sun");
        System.out.print(rs.getInt(1));
        System.out.print("\t"+rs.getString(2).trim());
        System.out.println("\t"+rs.getString(3));

rs.close();
stmt.close();
}catch(Exception e){
System.out.println("Failure.rollback!!!");
conn.rollback();
e.printStackTrace();
}finally{
try{
if(conn!=null){
conn.close();
}catch(Exception e1){
e1.printStackTrace();
}

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
17 1
|
3天前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
12 0
java基础(13)String类
|
4天前
|
存储 Java
Java编程中的对象和类
【8月更文挑战第55天】在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
24 10
|
1天前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
3天前
|
Java
java的class类
java的class类
18 5
|
2天前
|
关系型数据库 MySQL Python
mysql之python客户端封装类
mysql之python客户端封装类
|
4天前
|
Java 数据处理
Java Scanner 类详解
`Scanner` 类是 Java 中 `java.util` 包提供的强大工具,用于从多种输入源(如键盘、文件、字符串)读取数据。本文详细介绍如何创建 `Scanner` 对象并使用其常用方法(如 `next()`, `nextInt()`, `nextLine()` 等)。通过示例代码展示如何从标准输入、字符串及文件中读取数据,并进行输入验证。使用时需注意关闭 `Scanner` 以释放资源,并确保输入类型匹配,避免异常。掌握 `Scanner` 可显著提升程序的数据处理能力。
|
4天前
|
Java 索引
java基础扫盲-String类常用的方法
java基础扫盲-String类常用的方法
|
SQL Java 关系型数据库
java与MySQL数据库的连接
java与MySQL数据库的连接1.数据库的安装和建立参见上一篇博客中的第1,2步骤。(http://blog.csdn.net/nuptboyzhb/article/details/8043091) 或使用SQL语句   [sql] view plaincopy   ...
901 0
|
3天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理