day18-事务与连接池 3.jdbc中事务操作介绍
那么我们都是通过程序操作数据库。所以要了解jdbc下怎样对事务操作。jdbc如何操作事务?
自动事务false那就不开了呗相当于开启事务。
package cn.itcast.transaction;import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement;import cn.itcast.utils.JdbcUtils; //代码加上事务了加上回滚了加上提交了//jdbc中事务操作 public class TransactionTest1 {public static void main(String[] args) throws SQLException {//修改id=2这个人的money=500; String sql = "update account set money=500 where id=2"; Connection con = JdbcUtils.getConnection();con.setAutoCommit(false);//开启事务,相当于start transaction; Statement st = con.createStatement(); st.executeUpdate(sql);//事务回滚 //con.rollback(); con.commit();//事务提交 st.close(); con.close(); } }
package cn.itcast.transaction;import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement;import cn.itcast.utils.JdbcUtils; //代码加上事务了加上回滚了加上提交了//jdbc中事务操作 public class TransactionTest2 {public static void main(String[] args) {//修改id=2这个人的money=500; String sql = "update account set money=500 where id=2";//事务操作的异常不能说想抛就抛 Connection con = null; Statement st = null;try {//如果数据库操作过程中捕获异常了,con = JdbcUtils.getConnection();con.setAutoCommit(false);//开启事务,相当于start transaction;st = con.createStatement();st.executeUpdate(sql); } catch (SQLException e) {e.printStackTrace();//事务回滚 有异常就把事务回滚,有异常就说明出问题了//出问题就把数据恢复到原始,那就回滚吧try {con.rollback();} catch (SQLException e1) {e1.printStackTrace();} }finally{//finally里面的内容肯定是能执行到的try {con.commit();//事务提交st.close();//资源关闭 释放资源操作 con.close();//资源关闭 } catch (SQLException e) {e.printStackTrace();}}} }
package cn.itcast.utils;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ResourceBundle;public class JdbcUtils {private static final String DRIVERCLASS;private static final String URL;private static final String USERNAME;private static final String PASSWORD;private static final ThreadLocal<Connection> tl = new ThreadLocal<Connection>();static {DRIVERCLASS = ResourceBundle.getBundle("jdbc").getString("driverClass");URL = ResourceBundle.getBundle("jdbc").getString("url");USERNAME = ResourceBundle.getBundle("jdbc").getString("username");PASSWORD = ResourceBundle.getBundle("jdbc").getString("password");}static {try {// 将加载驱动操作,放置在静态代码块中.这样就保证了只加载一次. Class.forName(DRIVERCLASS);} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConnection() throws SQLException {Connection con = tl.get();// 从ThreadLocal中获取Connection。第一次获取得到的是null.if (con == null) {// 2.获取连接con = DriverManager.getConnection(URL, USERNAME, PASSWORD);tl.set(con); // 将con装入到ThreadLocal中。 }// tl.remove(); //解除return con;}// 关闭操作public static void closeConnection(Connection con) throws SQLException {if (con != null) {con.close();}}public static void closeStatement(Statement st) throws SQLException {if (st != null) {st.close();}}public static void closeResultSet(ResultSet rs) throws SQLException {if (rs != null) {rs.close();}} }
转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/6623289.html
day18-事务与连接池 3.jdbc中事务操作介绍相关推荐
- 【JDBC知识总结】---JDBC连接数据库、连接池、JDBC在框架中的使用等
一.JDBC的基本操作 1.1 JDBC的概述 什么是JDBC JDBC(Java Date Base Connectivity , Java数据库连接) 是一种用于执行SQL语句的Java API, ...
- java手动提交事务_Mybatis是如何将事务和连接池高效的结合的
1.说到数据库事务,人们脑海里自然不自然的就会浮现出事务的四大特性.四大隔离级别.七大传播特性. 四大还好说,问题是七大传播特性是哪儿来的?是Spring在当前线程内,处理多个数据库操作方法事务时所做 ...
- 连接池在java中的使用
1. 在项目的实际开发中,连接数据库一般都会使用两种方式. (1) 使用JDBC直接连接数据库,其他程序每访问一次数据库,访问程序直接跟数据库打交道,建立一次数据库连接,用完在释放连接资源. (2) ...
- JDBC中事务、批量操作、大数据类型、获取自动生成的主键、等用法
1 事务的用法 事务的ACID属性: 通俗的说事务:指一组操作,要么都成功执行,要么都不执行-->原子性在所有的操作没有执行完毕之前,其他会话不能够看到中间改变的过程-->隔离性事务发生前 ...
- 关于连接池、JDBC、DBUtils的一些知识
对于连接池.JDBC.DBUtils的一些知识点归纳
- mysql连接池永驻_【学习笔记】Oracle连接池 数据库常驻连接池(Database Resident Connection Pool)案例介绍...
天萃荷净 分享一篇关于应用程序与Oracle数据库连接的连接方法介绍,数据库常驻连接池(Database Resident Connection Pool)案例介绍 一.介绍常驻连接池(Databas ...
- 【数据库1】mysql,DDL/DML,DQL,外键约束,多表/子查询,事务,登陆,连接池,jdbc,redis,crontab,ftp,oracle,数据交换/存储/收集
文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化) 1.1 服务端:双击mysql-installer-community-5.6.22.0.msi 1.2 客户端:命令行 ...
- JDBC从入门到熟练使用——功能类详解、增删改查(CRUD)、sql注入、事务、连接池
一.JDBC入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问 ...
- 【node】express中mysql的基本用法、连接池的使用、事务的回滚
[node]express中mysql的基本用法.连接池的使用 安装mysql包 mysql的配置信息 mysql基本操作 查询mysql并渲染数据 mysql插入操作 首先在html页面写上< ...
最新文章
- Vmware ESXi 应用之还原备份的虚拟机
- LiveVideoStackCon 2018日程(草稿)发布
- 知识表示学习神器OpenKE:快速获取KG表示
- VTK:图片之ImageLuminance
- php显示无法找到该网页,window_Win8系统IE浏览器提示无法找到该网页的解决方法, 我们在浏览网页的时候, - phpStudy...
- 删除文件时,提示没权限删除文件怎么办
- 如何在 Mac 上的“快速查看”中查看和编辑文件
- Python-Matplotlib可视化(5)——添加自定义形状绘制复杂图形
- 关于解决Windows server系统用户无法远程的问题
- NYOJ - 整数划分(四)
- 依赖注入原理,作用,注入方式——Spring IOC/DI(二)
- ListView优化方案及其原理
- Redis基础篇(一)
- 详解散度、旋度(二维、三维)
- 《王二丫的甜品店》技术支持网址
- 通过fileProvider接收外部App传递文件路径的一些坑
- 阿里技术专家甘盘:浅谈双十一背后的支付宝LDC架构和其CAP分析(含phil补充)
- ESP32 TM1637显示4位数码管
- 5、SpringMVC自动配置概览
- 初涉莫比乌斯反演(附带例题)
热门文章
- Java Iterator 接口简介和简单用法.
- 【转】 ubuntu adduser 命令学习
- 【转】Linux查看文件编码格式及文件编码转换
- github 公钥 私钥_GitGithub入门教程笔记(2)
- 如何捕获window.print点击打印或取消_视频:手把手教您如何优化喷墨波形
- 枚举法用于逻辑问题的处理
- php lodop 实例,Vue使用lodop实现打印小结
- android 加壳 方案,android加壳思路
- 【技术】TCP 的固定窗口和滑动窗口
- seata-golang 接入指南