JDBC之Transaction(事务)

来源:互联网 发布:淘宝保证金怎么扣 编辑:程序博客网 时间:2024/05/18 01:37

(一)Connection

与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。 

默认情况下,Connection 对象处于自动提交模式下,这意味着它在执行每个语句后都会自动提交更改。如果禁用了自动提交模式,那么要提交更改就必须显式调用commit 方法;否则无法保存数据库更改。 

通过调用setAutoCommit(boolean)方法来修改提交模式。

(二)事务实例程序

import java.sql.*;public class TestTransaction {public static void main(String[] args) {Connection conn = null;Statement stmt = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:SXT", "scott", "tiger");conn.setAutoCommit(false);  //设置为不能自动提交stmt = conn.createStatement();stmt.addBatch("insert into dept2 values (51, '500', 'haha')");stmt.addBatch("insert into dept2 values (52, '500', 'haha')");stmt.addBatch("insert into dept2 values (53, '500', 'haha')");stmt.executeBatch();conn.commit(); //手动提交conn.setAutoCommit(true);} catch (ClassNotFoundException e) {e.printStackTrace();} catch(SQLException e) {e.printStackTrace();try {if(conn != null){conn.rollback();   //出现异常回滚事务conn.setAutoCommit(true);}} catch (SQLException e1) {e1.printStackTrace();}}finally {try {if(stmt != null)stmt.close();if(conn != null)conn.close();} catch (SQLException e) {e.printStackTrace();}}}}


原创粉丝点击