JDBC系列教程之九:事务-SavePoint与JTA

2013-08-29|来源: 领悟书生

事务-SavePoint

l  当只想撤销事务中的部分操作时可使用SavePoint

l  SavePoint sp = connection.setSavepoint();

l  connection.rollerbak(sp);connection.commit();

SavePointTest.java

package com.hyneng.jdbc;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Savepoint;

import java.sql.Statement;

/**

* 2010-10-07

* @author HuangYineng

*/

public class SavePointTest {

   public static void main(String[] args) throws  SQLException {

      test();

   }

   static void test() throws  SQLException {

      Connection conn = null;

      Statement st = null;

      ResultSet rs = null;

      Savepoint sp = null;

      try {

          conn = JdbcUtils.getConnection();

          conn.setAutoCommit(false);        

          st = conn.createStatement();

          String sql = "update user set money=money-10 where id=1";

          st.executeUpdate(sql);

          //保存点

          sp = conn.setSavepoint();

          sql = "update user set money=money-10 where id=3";

          st.executeUpdate(sql);

          sql = "select money from user where id=2";

          rs = st.executeQuery(sql);

          float money = 0.0f;

          if (rs.next()) {

             money = rs.getFloat("money");

          }

          if (money > 300)

             throw new RuntimeException("已经超过最大值!");

          sql = "update user set money=money+10 where id=2";

          st.executeUpdate(sql);

          conn.commit();

      } catch (RuntimeException e) {

          if (conn != null && sp != null) {

             conn.rollback(sp);

             conn.commit();

          }

          throw e;

      } catch (SQLException e) {

          if (conn != null)

             conn.rollback();

          throw e;

      } finally {

          JdbcUtils.free(rs, st,  conn);

      }

   }

}

事务-JTA(暂不实现)

l  跨越多个数据源的事务,使用JTA容器实现事务。

l  分成两阶段提交。

l  javax.transaction.UserTransaction tx =(UserTransaction)ctx.lookup(“jndiName");

        tx.begin();

        //connection1connection2 (可能来自不同的数据库)…

  tx.commit();//tx.rollback();


本文链接:JDBC系列教程之九:事务-SavePoint与JTA,转自请注明:http://www.656463.com/article/803

相关问答

更多

电脑基础.实例.上机系列教程

针对这门课程的附带,当然是教程盘啦

Painter从入门到精通系列教学视频教程

Painter从入门到精通系列教学视频教程 http://www.shouhui119.com/shouhuishipinjiaocheng/shouhuiruanjian/137.html

求破解脱壳系列教程

我教你吧!要的话就加

oracle和jdbc的视频教程哪个讲的好

你说的这两个都不是同一类东西。 学习数据库,如果重在快速入门应用:选择MYSQL。它是开源的而且网上教程很多 如果是想学习深入的话,一边看数据库概论一边学习ORACLE操作是很好的方法 如果再想深入,那么就可以在学习好ORACLE基础上学习它的存储过程 触发器和PLSQL编程 JDBC是JAVA连接各种数据库的API不是数据库

oracle和jdbc的视频教程哪个讲的好

你说的这两个都不是同一类东西。 学习数据库,如果重在快速入门应用:选择MYSQL。它是开源的而且网上教程很多 如果是想学习深入的话,一边看数据库概论一边学习ORACLE操作是很好的方法 如果再想深入,那么就可以在学习好ORACLE基础上学习它的存储过程 触发器和PLSQL编程 JDBC是JAVA连接各种数据库的API不是数据库

专题教程

JAVA概述
第一部分:java入门基础
第二部分:java常用类
第三部分:jdbc系列教程
第四部分:java高级特征
Gson教程
快速了解 jdk8 新特征

相关文章

更多

最近更新

更多