JDBC使用事务实例

来源:互联网 发布:ubuntu安装wine软件 编辑:程序博客网 时间:2024/06/03 20:07
package qddx.JDBC;import java.sql.*;public class useTransaction {    public static void main(String[] args) {        // TODO Auto-generated method stub        Connection conn = null;        Statement st = null;        PreparedStatement pst = null;        ResultSet rs = null;        Savepoint sp = null;        try{        conn = JDBC_Connection.getConnection();        //指定事务隔离级别        conn.setTransactionIsolation(conn.TRANSACTION_READ_UNCOMMITTED);        pst = conn.prepareStatement("create table users (id smallint,username text)");        pst.execute();        //提交事务        conn.commit();        pst.close();        }catch(SQLException e){            System.err.println("连接数据库或者建表失败");            System.err.println("事务回滚到回滚点");            try{            conn.rollback();            }catch(SQLException ex){                //ex.printStackTrace();                System.out.println("回滚失败");            }            try{            conn.setSavepoint();//设置一个存储点            st = conn.createStatement();            st.executeUpdate("insert into users values(110,'Janes')");//执行更新语句            //st.executeUpdate("insert into users values('shibai','Janes')");//执行更新语句 失败的例子            conn.commit();//提交事务            conn.releaseSavepoint(sp);//释放存储点            st.close();            conn.close();            }catch(SQLException et){                System.err.println("操作失败");                System.err.println("事务回滚到存储点");                try{                conn.rollback(sp);                st.close();                conn.close();                }catch(SQLException exc){                    System.out.println("回滚到存储点失败");                    //exc.printStackTrace();;                }                //et.printStackTrace();            }            //e.printStackTrace();        }    }}
0 0
原创粉丝点击