JDBC事務的簡單使用


在實際功能當中,經常會碰到同時對一組數據進行增加和減少,最常見的就是交易功能。

事務內執行的語句,要么都成功,要么都失敗,如果有一句沒執行成功,整個事務都不會提交的。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBC_transactions {
    public static void main(String[] args) {
        //使用try-with-resources的方法自動關閉連接
        //首先還是先初始化驅動
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        //連接數據庫
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root", "admin");
             Statement statement = connection.createStatement();) {
            //執行一個事務
            //首先關閉自動提交
            connection.setAutoCommit(false);
            //執行兩個更新語句,一個增加某個字段,一個減少某個字段
            String sql1="update hero set hp=hp-10 where id=1";
            String sql2="update hero set hp=hp+10 where id=1";
            statement.execute(sql1);
            statement.execute(sql2);
            //手動提交
            connection.commit();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

這句話就是關閉自動提交。

connection.setAutoCommit(false);

一直到

connection.commit();

這兩句話內的sql語句就是一個事務。如果我們故意制造個錯誤,比如故意寫錯sql語句的某個關鍵字,編譯器會報錯,並且正確的sql語句不會提交。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM