前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDBC的事务管理

JDBC的事务管理

作者头像
葆宁
发布2019-04-19 10:32:31
5270
发布2019-04-19 10:32:31
举报
文章被收录于专栏:FREE SOLOFREE SOLO

JDBC的事务管理:

事务:一个事件的完成需要几个子操作的联合完成,只要有一个子操作执行失败,则数据回滚到原始状态,都成功则提交数据.

JDBC的事务使用示例: package com.bjsxt.translation;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;

  • JDBC的事务管理:
  • 转账业务
  • 示例:
  • 张三给李四转账1000元.
  • 注意:
  • JDBC中的事务是自动提交的.
  • 问题:
  • 如果在业务的处理过程中,某条Sql语句执行失败,但是数据已经被更改了.
  • 解决:
  • 设置JDBC的事务为手动提交.
  • sql语句都执行成功后再统一提交,只要有失败的就回滚.
  • 使用:
  • conn.setAutoCommit(false)//设置为手动提交
  • 使用try catch进行SQL命令执行的异常处理
  • try中是使用conn.commit() 提交数据
  • catch中使用conn.rollback()回滚数据
  • @author MyPC

*/ public class TestTran { public static void main(String[] args) throws ClassNotFoundException, SQLException { //加载驱动 Class.forName(“oracle.jdbc.driver.OracleDriver”); //创建连接对象 Connection conn=DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”, “scott”,“oracle”); //设置事务为手动提交 conn.setAutoCommit(false); //创建sql命令对象 Statement stmt=conn.createStatement(); //创建sql命令 String sql1=“update student set money=money-1000 where snum=6”;//转账 String sql2=“update student set money=money2+1000 where snum=7”;//入账 //执行sql命令 try { int i1=stmt.executeUpdate(sql1); int i2=stmt.executeUpdate(sql2); System.out.println(i1+"----"+i2); conn.commit(); } catch (Exception e) { conn.rollback();//数据回滚 } //关闭资源 stmt.close(); conn.close(); } }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JDBC的事务管理:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档