數據庫學習筆記二十二 —— JDBC操作事務

數據庫學習筆記二十二 —— JDBC操作事務


事務相關的詳細博客 https://blog.csdn.net/qq_43594119/article/details/106035815
代碼中用到的 JdbcUtils 類詳見博客 https://blog.csdn.net/qq_43594119/article/details/106049749 中的提取工具類

package pers.ylw.lesson04;

import pers.ylw.lesson02.utils.JdbcUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TestTransaction01 {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;

        try{
            conn = JdbcUtils.getConnection();
            // 關閉數據庫的自動提交功能,同時自己會開啓事務,不需要像在SQL裏那樣寫開啓事務了
            conn.setAutoCommit(false); //同時會自動開啓事務

            String sql01 = "update account set money = money-100 where name = 'A'";
            st = conn.prepareStatement(sql01);
            st.executeUpdate();

            //模擬中途失敗,測試後發現第一個SQL語句也沒有執行成功,說明事務的好處
            //int x = 1/0;

            String sql02 = "update account set money = money+100 where name = 'B'";
            st = conn.prepareStatement(sql02);
            st.executeUpdate();

            //業務完畢,提交事務
            conn.commit();
            System.out.println("操作成功");
        } catch (SQLException e){
            //不寫回滾,失敗也會默認回滾,但最好寫上
            try {
                conn.rollback();//如果發生異常就回滾
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            JdbcUtils.release(conn,st,rs);
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章