生活随笔
收集整理的這篇文章主要介紹了
Java模拟事务Demo
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java操作Oracle事務,以轉賬為例。
轉賬之前
package translate
.commit
;import java
.sql
.Connection
;
import java
.sql
.DriverManager
;
import java
.sql
.PreparedStatement
;
import java
.sql
.ResultSet
;
import java
.sql
.SQLException
;public class CommitRollback {public static void main(String
[] args
) {giao();}public static void giao() {Connection conn
= null
;PreparedStatement ps
= null
;PreparedStatement ps1
= null
;try {conn
= getConn();String sql
= "update stu set s_money = s_money - 200 where s_id = ?";ps
= conn
.prepareStatement(sql
);ps
.setInt(1, 1);conn
.setAutoCommit(false);int i
= ps
.executeUpdate();System
.out
.println(i
>0 ? "轉賬成功" : "失敗");System
.out
.println(1/0);sql
= "update stu set s_money = s_money + 200 where s_id = ?";ps1
= conn
.prepareStatement(sql
);ps1
.setInt(1, 2);conn
.setAutoCommit(false);int i1
= ps1
.executeUpdate();System
.out
.println(i1
>0 ? "到賬成功" : "失敗");conn
.commit();} catch (Exception e
) {try {conn
.rollback();} catch (SQLException e1
) {e1
.printStackTrace();}e
.printStackTrace();} finally {closeAll(conn
, ps
, null
);try {if (ps1
!= null
)ps1
.close();} catch (SQLException e
) {e
.printStackTrace();}}}public static Connection
getConn() throws Exception
{Class
.forName("oracle.jdbc.OracleDriver");String url
= "jdbc:oracle:thin:@127.0.0.1:1521:orcl";Connection conn
= DriverManager
.getConnection(url
, "scott", "scott");return conn
;}public static void closeAll(Connection conn
, PreparedStatement ps
, ResultSet rs
) { try {if (rs
!= null
)rs
.close();if (ps
!= null
)ps
.close();if (conn
!= null
)conn
.close();} catch (SQLException e
) {e
.printStackTrace();}}}
執行之后
SQL里面的事務介紹如下:
SQL事務
總結
以上是生活随笔為你收集整理的Java模拟事务Demo的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。