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

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对象所控制的,所以它的缺点是事务的范围仅仅局限于一个数据库的连接,同一个事务中无法操作多个数据库。

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

(0)

相关推荐

  • 如何在Eclipse中设置Oracle的JDBC

    第一步:找到jdbc驱动我用的oracle自带的,ORACLE_HOME]\jdbc\lib\ 下面有各种jdbc,一定要注意兼容问题,具体看第二步,分别用哪个文件. 第二步:把驱动的路径加在环境变量classpath内- Add [ORACLE_HOME]\jdbc\lib\classes111.zip and[ORACLE_HOME]\jdbc\lib\nls_charset11.zip to your CLASSPATH.(Add classes12.zip and nls_charset

  • Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据

    先来了解一下什么是XMLType类型. XMLType是Oracle从9i开始特有的数据类型,是一个继承了Blob的强大存在,可以用来存储xml并提供了相当多的操作函数.理论上可以保存2G大小的数据. 那怎么样通过java来插入XMLType类型的数据呢?项目当中采用的是Mybatis,总是出现莫名的异常,都搞不清楚到底是Mybatis的问题还是jdbc本身的问题,所以打算一步步来,先搞定jdbc,再解决Mybatis. JDBC 在折腾了半天之后,发现jdbc操作主要有3种方法: 一.在Jav

  • JDBC连接Oracle数据库常见问题及解决方法

    注:本文是斑竹从JDBC & Transaction版摘录广大站友的提问以及各种解答整理而来,如果您认为本文的内容已触犯了您的权益,请联系管理员进行修改. Jbuilder正确连接 oracle 9i需要注意的几个问题 oracle8以上的应该都使用classes12.jar文件作为jdbc驱动: 正确设置windows的classpath和jbuilder中的enterprise setup .configure libraries,将casses12.jar路径正确添加到上述需要设置的地方:

  • 解析jdbc处理oracle的clob字段的详解

    import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.Reader;import java.sql.Clob;import java.sql.Connection;import java.sql.ResultSet;

  • Java开发Oracle数据库连接JDBC Thin Driver 的三种方法

    Oracle的jdbc驱动三种主要分类: 1.JDBC OCI: oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动.因为它需要Oracle Call Interface and Net8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件,其实主要是用到orcale客户端里以dll方式提供的oci和服务器配置. 2.JDBC Thin: thin是for thin client的意思,这种驱动一般用在运行在WEB浏览器中的JAVA程序.它不是

  • Java使用JDBC实现Oracle用户认证的方法详解

    本文实例讲述了Java使用JDBC实现Oracle用户认证的方法.分享给大家供大家参考,具体如下: 两天时间写的小品,以前的J2EE环境基本使用框架.现在使用JDBC配合Oracle存储过程模拟了一下用户注册和用户认证. 一.添加必须的jar包 需要JDBC连接Oracle的包和shiro-core依赖,添加shiro-core主要为了方便使用SHA-256散列算法. 二.编写JDBC连接 import java.sql.Connection; import java.sql.DriverMan

  • 使用JDBC4.0操作Oracle中BLOB类型的数据方法

    在JDBC4.0推出后,它的从多的特性正在受到广泛地关注.下面通过本文给大家介绍JDBC4.0操作Oracle中BLOB类型的数据的方法. 需要的jar包 使用ojdbc6.jar 在/META-INF/MANIFEST.MF里可以看到Specification-Version: 4.0 建表 create sequence seq_blobmodel_id start with 1 increment by 1 nocache; create table blobmodel ( blobid

  • java基于JDBC连接Oracle 11g Release2实例分析

    本文实例讲述了java基于JDBC连接Oracle 11g Release2的方法.分享给大家供大家参考.具体如下: Oracle 11g Release 2 的 JDBC 连接似乎有所不同 ,如果你收到下面的异常: Listener refused the connection with the following error:ORA-12505, TNS:listener does not currently know of SID given in connect descriptor.

  • Java使用JDBC连接Oracle_MSSQL实例代码

    一.Statement 复制代码 代码如下: import java.sql.*; public class TestJDBC { public static void main(String[] args) {  Connection oracle_conn = null;  Statement oracle_stmt = null;  ResultSet oracle_rs = null; Connection mssql_conn = null;  Statement mssql_stmt

  • java使用jdbc链接Oracle示例类分享

    复制代码 代码如下: public class OracleJdbcTest   {       String driverClass = "oracle.jdbc.driver.OracleDriver"; Connection con; public void init(FileInputStream fs) throws ClassNotFoundException, SQLException, FileNotFoundException, IOException       {

随机推荐