Java与Oracle实现事务(JDBC事务)实例详解

发布时间 - 2026-01-11 01:28:33    点击率:

Java与Oracle实现事务(JDBC事务)实例详解

J2EE支持JDBC事务、JTA事务和容器事务事务,这里说一下怎样实现JDBC事务。

       JDBC事务是由Connection对象所控制的,它提供了两种事务模式:自己主动提交和手动提交,默认是自己主动提交。

       自己主动提交就是:在JDBC中。在一个连接对象Connection中。默认把每一个SQL语句的运行都当做是一个事务(即每次运行完SQL语句都会马上将操作更新到数据库)。

       手动提交就是:当须要一次性运行多个SQL语句,将多个SQL语句组成一个事务(即要么都成功,要么回滚全部的操作)时,就得手动提交。

        看一个样例:       

import java.sql.*;

public class TransactionTest{

public static void main(String[] args) throws SQLException {
 try {
     Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","TransactionTest","123456");
  
        //将事务模式设置为手动提交事务:
        conn.setAutoCommit(false);
  
        //设置事务的隔离级别。
        conn.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
        
 //运行插入操作
        String sqlInsert = "insert into t_user(userName,userPassword) values(?,?
)";        
        pstmt = conn.prepareStatement(sqlInsert);
        pstmt.setString(1, "danny");
        pstmt.setString(2, "123");
        pstmt.executeUpdate();
  
 //运行改动操作
        String sqlUpdate = "update t_user set userPassword=? where userName = ?";
        pstmt = conn.prepareStatement(sqlUpdate);
        pstmt.setString(1, "123456");
        pstmt.setString(2, "danny");        
        pstmt.executeUpdate();
  
        //提交事务
        conn.commit();
  
      } catch (Exception e) {        
        // 若事务发生异常,回滚事务
        conn.rollback();
      }finally{        
        if (pstmt!=null) {
          pstmt.close();
        }
        if (conn!=null) {
          conn.close();
        }
      }
}
}

       当须要插入和更新这两个操作同一时候运行时,要么两个操作都成功,假设有一个失败。则撤销全部的操作。

       宏观来看须要例如以下四个步骤:    

       1、将事务模式设置为手动提交事务:

             conn.setAutoCommit(false);

       2、设置事务的隔离级别:

             conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

       3、提交事务:

             conn.commit();

       4、假设发生异常,回滚事务:

             conn.rollback();

       从上面看,JDBC事务使用较为方便,但因为它是由Connection对象所控制的,所以它的缺点是事务的范围仅仅局限于一个数据库的连接,同一个事务中无法操作多个数据库。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java+Oracle实现事务  # JDBC事务  # Java与Oracle实现事务  # Java开发Oracle数据库连接JDBC Thin Driver 的三种方法  # Java使用Jdbc连接Oracle执行简单查询操作示例  # Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据  # Java使用JDBC连接Oracle_MSSQL实例代码  # java使用jdbc链接Oracle示例类分享  # java基于JDBC连接Oracle 11g Release2实例分析  # Java如果通过jdbc操作连接oracle数据库  # Java使用JDBC实现Oracle用户认证的方法详解  # JAVA使用JDBC连接oracle数据库的详细过程  # 多个  # 是由  # 设置为  # 是一个  # 两种  # 这两个  # 希望能  # 就得  # 因为它  # 谢谢大家  # 局限于  # 有一个  # 新到  # 把每  # 样例  # SQLException  # void  # main  # args  # String 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Angular 表单中正确绑定输入值以确保提交与验证正常工作  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  开心动漫网站制作软件下载,十分开心动画为何停播?  JavaScript如何实现类型判断_typeof和instanceof有什么区别  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel如何创建自定义Artisan命令?(代码示例)  如何在IIS管理器中快速创建并配置网站?  如何用腾讯建站主机快速创建免费网站?  如何用IIS7快速搭建并优化网站站点?  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  微信公众帐号开发教程之图文消息全攻略  黑客如何通过漏洞一步步攻陷网站服务器?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  如何快速搭建安全的FTP站点?  如何注册花生壳免费域名并搭建个人网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel如何实现API资源集合?(Resource Collection教程)  Python制作简易注册登录系统  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Laravel如何使用模型观察者?(Observer代码示例)  如何破解联通资金短缺导致的基站建设难题?  高端网站建设与定制开发一站式解决方案 中企动力  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  教学论文网站制作软件有哪些,写论文用什么软件 ?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  如何在云主机上快速搭建网站?  如何基于云服务器快速搭建个人网站?  如何在橙子建站上传落地页?操作指南详解  如何用好域名打造高点击率的自主建站?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  免费网站制作appp,免费制作app哪个平台好?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  zabbix利用python脚本发送报警邮件的方法  怎样使用JSON进行数据交换_它有什么限制  iOS验证手机号的正则表达式  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制