真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java與Oracle實(shí)現(xiàn)事務(wù)(JDBC事務(wù))實(shí)例詳解

Java與Oracle實(shí)現(xiàn)事務(wù)(JDBC事務(wù))實(shí)例詳解

成都創(chuàng)新互聯(lián)長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為天心企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)天心網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

J2EE支持JDBC事務(wù)、JTA事務(wù)和容器事務(wù)事務(wù),這里說(shuō)一下怎樣實(shí)現(xiàn)JDBC事務(wù)。

       JDBC事務(wù)是由Connection對(duì)象所控制的,它提供了兩種事務(wù)模式:自己主動(dòng)提交和手動(dòng)提交,默認(rèn)是自己主動(dòng)提交。

       自己主動(dòng)提交就是:在JDBC中。在一個(gè)連接對(duì)象Connection中。默認(rèn)把每一個(gè)SQL語(yǔ)句的運(yùn)行都當(dāng)做是一個(gè)事務(wù)(即每次運(yùn)行完SQL語(yǔ)句都會(huì)馬上將操作更新到數(shù)據(jù)庫(kù))。

       手動(dòng)提交就是:當(dāng)須要一次性運(yùn)行多個(gè)SQL語(yǔ)句,將多個(gè)SQL語(yǔ)句組成一個(gè)事務(wù)(即要么都成功,要么回滾全部的操作)時(shí),就得手動(dòng)提交。

        看一個(gè)樣例:       

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");
  
        //將事務(wù)模式設(shè)置為手動(dòng)提交事務(wù):
        conn.setAutoCommit(false);
  
        //設(shè)置事務(wù)的隔離級(jí)別。
        conn.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
        
 //運(yùn)行插入操作
        String sqlInsert = "insert into t_user(userName,userPassword) values(?,?
)";        
        pstmt = conn.prepareStatement(sqlInsert);
        pstmt.setString(1, "danny");
        pstmt.setString(2, "123");
        pstmt.executeUpdate();
  
 //運(yùn)行改動(dòng)操作
        String sqlUpdate = "update t_user set userPassword=? where userName = ?";
        pstmt = conn.prepareStatement(sqlUpdate);
        pstmt.setString(1, "123456");
        pstmt.setString(2, "danny");        
        pstmt.executeUpdate();
  
        //提交事務(wù)
        conn.commit();
  
      } catch (Exception e) {        
        // 若事務(wù)發(fā)生異常,回滾事務(wù)
        conn.rollback();
      }finally{        
        if (pstmt!=null) {
          pstmt.close();
        }
        if (conn!=null) {
          conn.close();
        }
      }
}
}

       當(dāng)須要插入和更新這兩個(gè)操作同一時(shí)候運(yùn)行時(shí),要么兩個(gè)操作都成功,假設(shè)有一個(gè)失敗。則撤銷全部的操作。

       宏觀來(lái)看須要例如以下四個(gè)步驟:    

       1、將事務(wù)模式設(shè)置為手動(dòng)提交事務(wù):

             conn.setAutoCommit(false);

       2、設(shè)置事務(wù)的隔離級(jí)別:

             conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

       3、提交事務(wù):

             conn.commit();

       4、假設(shè)發(fā)生異常,回滾事務(wù):

             conn.rollback();

       從上面看,JDBC事務(wù)使用較為方便,但因?yàn)樗怯蒀onnection對(duì)象所控制的,所以它的缺點(diǎn)是事務(wù)的范圍僅僅局限于一個(gè)數(shù)據(jù)庫(kù)的連接,同一個(gè)事務(wù)中無(wú)法操作多個(gè)數(shù)據(jù)庫(kù)。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!


網(wǎng)站題目:Java與Oracle實(shí)現(xiàn)事務(wù)(JDBC事務(wù))實(shí)例詳解
轉(zhuǎn)載源于:http://weahome.cn/article/ggjded.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部