JDBC中如何进行事务处理

2025-10-29 12:11:55

1、在jdbc中,默认事务是自动提交的,如果我们需要自己事务,我们代码需要手工控制事务的提交。

package com.gwolf;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

public class JdbcTest {

        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:jdbctest", "test", "test");  

                                               

                            conn.setAutoCommit(false);  

                            stmt = conn.createStatement();  

                                            

                            stmt.addBatch("insert into dept values (51, '500', 'ccc')");  

                            stmt.addBatch("insert into dept values (52, '600', 'ddd')");  

                            stmt.addBatch("insert into dept values (53, '700', 'eee')");  

                            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 {

                                  if(conn != null)  {

                                          try {

                                                conn.close();

                                        } catch (SQLException e) {

                                                e.printStackTrace();

                                        }

                                  }

                        }

        }

}

JDBC中如何进行事务处理

2、如果要手动控制事务,我们必须把jdbc自动提交事务关闭:

conn.setAutoCommit(false);  

JDBC中如何进行事务处理

3、接下来我们手动提交事务:

 conn.commit();  

  conn.setAutoCommit(true);  

JDBC中如何进行事务处理

4、在异常处理中回滚整个事务。

JDBC中如何进行事务处理

5、切记一点,一定要在finally块中关闭数据库连接,释放资源。

if(conn != null)  {

  try {

      conn.close();

} catch (SQLException e) {

    e.printStackTrace();

}

  }

JDBC中如何进行事务处理

6、我们这个事务业务代码如下:

conn.setAutoCommit(false);  

    stmt = conn.createStatement();  

                    

    stmt.addBatch("insert into dept values (541, '5020', 'c5cc')");  

    stmt.addBatch("insert into dept values (542, '6020', 'd5dd')");  

    stmt.addBatch("insert into dept values (534, '7020', 'e5ee')");  

    stmt.executeBatch();  

                      

    conn.commit();  

    conn.setAutoCommit(true);  

JDBC中如何进行事务处理

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢