JDBC事务的简单使用
在实际功能当中,经常会碰到同时对一组数据进行增加和减少,最常见的就是交易功能。
事务内执行的语句,要么都成功,要么都失败,如果有一句没执行成功,整个事务都不会提交的。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; public class JDBC_transactions {
public static void main(String[] args) {
//使用try-with-resources的方法自动关闭连接
//首先还是先初始化驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} //连接数据库
try (Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root", "admin");
Statement statement = connection.createStatement();) {
//执行一个事务
//首先关闭自动提交
connection.setAutoCommit(false);
//执行两个更新语句,一个增加某个字段,一个减少某个字段
String sql1="update hero set hp=hp-10 where id=1";
String sql2="update hero set hp=hp+10 where id=1";
statement.execute(sql1);
statement.execute(sql2);
//手动提交
connection.commit();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这句话就是关闭自动提交。
connection.setAutoCommit(false);
一直到
connection.commit();
这两句话内的sql语句就是一个事务。如果我们故意制造个错误,比如故意写错sql语句的某个关键字,编译器会报错,并且正确的sql语句不会提交。
JDBC事务的简单使用的更多相关文章
- 分层架构下的纯JDBC事务控制简单解决方案【转】
http://blog.csdn.net/qjyong/article/details/5464835 对目前的JavaEE企业应用开发来说,基本都会采用分层的架构, 这样可以分散关注.松散耦合.逻辑 ...
- Java的JDBC事务详解(转)
事务的特性: 1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行. 2) 一致性(consistency):事务在完 ...
- Java中的事务——JDBC事务和JTA事务
Java中的事务——JDBC事务和JTA事务 转载:http://www.hollischuang.com/archives/1658 之前的事务介绍基本都是数据库层面的事务,本文来介绍一下J2EE中 ...
- CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全) (转)
JDBC事务管理 Spring提供编程式的事务管理(Programmatic transaction manage- ment)与声明式的事务管理(Declarative transaction ma ...
- JDBC事务和JTA事务的区别
转自:JDBC和JTA事务的区别 一.事务概述事务表示一个由一系列的数据库操作组成的不可分割的逻辑单位,其中的操作要么全做要么全都不做.与事务相关的操作主要有:BEGIN TRANSACTION: 开 ...
- Java的JDBC事务详解
Java的JDBC事务详解 分类: Hibernate 2010-06-02 10:04 12298人阅读 评论(9) ...
- 网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别
1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2 ...
- 春天JDBC事务管理
JDBC事务管理 春天提供编程式的事务管理(编程式事务管理)与声明式的事务管理(声明式事务management),为不同的事务实现提供了一致的编程模型,这节以JDBC事务为例,介绍Spring的事务管 ...
- JDBC 事务和 JTA 事务
Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务. 常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于 ...
随机推荐
- Python_三元运算与lambda表达式
[是什么] 三元运算是if...else...的简化版,lambda表达式是函数的简化版 三元运算(三目运算) # 判断两个数中的较大者 fun(a1,a2): return a1 if a1> ...
- 除法分块 luogu2261 (坑)
除法分块 除法分块 是指使用分块计算的方法求S=∑i=1n⌊ki⌋S=\sum^{n}_{i=1}{\lfloor{\frac{k}{i}}\rfloor}S=i=1∑n⌊ik⌋的值. 举个例子. ...
- [USACO10NOV]奶牛的图片Cow Photographs
题目描述 Farmer John希望给他的N(1<=N<=100,000)只奶牛拍照片,这样他就可以向他的朋友炫耀他的奶牛. 这N只奶牛被标号为1..N. 在照相的那一天,奶牛们排成了一排 ...
- L2-007. 家庭房产(并查集)
#include <cstdio> #include <set> #include <vector> #include <algorithm> usin ...
- .Net Core 3.0 IdentityServer4 快速入门02
.Net Core 3.0 IdentityServer4 快速入门 —— resource owner password credentials(密码模式) 一.前言 OAuth2.0默认有四种授权 ...
- 解决Zend OPcache huge_code_pages: mmap(HUGETLB) failed: Cannot allocate memory报错
前几日看到鸟哥介绍的 <让你的PHP7更快之Hugepage>, 于是想试试手给服务器加上,参照格式安装好扩展,调整好配置文件,然后重启php-fpm,结果启动一直报Zend OPcach ...
- c语言-----劫持原理
1. 劫持原理介绍 (1) 通过劫持技术我们可以实现某些进程的拦截,比如禁止创建文件,禁止打开qq,禁止关机等等一系列的操作 (2) 弹窗拦截就是最常见的一种劫持技术的实现. 2. 使用的工具 (1) ...
- 多种方式实现AOP
一.使用代理工厂完成声明式增强 1.创建业务接口 public interface IdoSomeService { public void doSomething(); } 2.创建接口实现类 pu ...
- CentOS6.6-MySQL报Curses library not found
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.40 \> -DMYSQL_DATADIR=/application/mysql-5. ...
- 数据结构(四十五)选择排序(1.直接选择排序(O(n²))2.堆排序(O(nlogn)))
一.选择排序的定义 选择排序的基本思想是:每次从待排序的数据元素集合中选取最小(或最大)的数据元素放到数据元素集合的最前(或最后),数据元素集合不断缩小,当数据元素集合为空时排序过程结束.常用的选择排 ...