黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 JDBC事務管理示例

JDBC事務管理示例

更新時間:2022-04-22 09:58:49 來源:動力節點 瀏覽2517次

在本教程中,動力節點小編將告訴大家JDBC中的事務管理。一個事務代表一組操作,用于執行一項任務。

事務是一組命令,它將我們的數據庫從一個一致狀態帶到另一個一致狀態。

JDBC 中的事務管理:

以下是關于 JDBC 中的事務管理的最重要的幾點。

事務意味著,它是一組用于執行任務的操作。

事務可以達到成功狀態或失敗狀態。

如果所有操作都成功完成,則事務成功。

如果任何一個操作失敗,那么所有剩余的操作都將被取消,最終事務將進入失敗狀態。

交易類型:

基本交易有兩種類型。

本地交易

全局/分布式事務

本地交易:

如果所有操作都在一個/同一個數據庫上執行,則稱為本地事務。

全球/分布式事務:

如果操作在多個數據庫上執行,則稱為全局事務。

示例: 如果我們將錢從account1轉移到同一家銀行的account2,則稱為本地交易。如果我們將錢從account1轉移到不同銀行的account2,則稱為全局或分布式交易。

JDBC 只能支持本地事務。對于分布式事務,我們必須使用 EJB 技術或 Spring Framework。

JDBC 示例中的事務管理:

大家對JDBC常用接口也有所了解,我們可以從 Connection 接口獲得 JDBC 中的 Transaction 支持。Connection 接口提供了 3 種在 JDBC 中執行事務管理的方法。

設置自動提交()

犯罪()

回滾()

事務 setAutoCommit() :

在開始操作之前,首先我們需要禁用自動提交模式。這可以通過調用 setAutoCommit(false) 來完成。

默認情況下,從 java 程序完成的所有操作都將在數據庫中永久執行。一旦永久執行在數據庫中發生,我們就無法恢復它們(事務管理是不可能的)。

事務提交():

如果所有操作都成功執行,那么我們通過調用commit()方法手動提交事務。

事務回滾():

如果任何一項操作失敗,那么我們通過調用rollback()方法取消事務。

connection.setAutoCommit(false);
try{
----------
----------
connection.commit();
}catch(Exception e){
connection.rollback();
}

完整示例:

package com.onlinetutorialspoint.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class Jdbc_TransactionManagement_Example {
    public static void main(String[] args) throws Exception {
        Connection connection = null;
        Statement statement = null;
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            connection = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/onlinetutorialspoint", "root",
                "123456");
            connection.setAutoCommit(false);
            statement = connection.createStatement();
            statement
                .executeUpdate("insert person values ('5001','Hyderabad','Chandra Shekhar')");
            statement
                .executeUpdate("insert person values ('5002','Banglore','Ram')");
            connection.commit();
            System.out.println("Transaction is commited.");
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
            connection.rollback();
        }
    }
}

輸出:

Transaction is committed.

如果我們更新語句

statement.executeUpdate("insert person values ('5003','Hyderabad','Chandra Shekhar')");
statement.executeUpdate("insert person values ('5001','Banglore','Ram')");

我們可以得到如下異常,事務將被回滾。

om.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '5001' for key 'PRIMARY'
Transaction is rollbacked !

以上就是關于“JDBC事務管理示例”的介紹,大家如果想了解更多相關知識,可以關注一下動力節點的JDBC視頻教程,里面的課程內容通俗易懂,適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助哦。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 一级做a爰全过程免费视频 一级做a爰片鸭王 | 青草视频网站在线观看 | 久久天天操 | 日本日韩欧美 | 亚洲导航深夜福利 | 日本人乱人乱亲乱色视频观看 | 国产情侣啪啪 | 欧美激情欧美狂野欧美精品免费 | 久久不雅视频 | 日日躁夜夜躁狠狠天天 | 经典三级第一页 | 男女性刺激爽爽免费视频 | 国内小情侣一二三区在线视频 | 国产人成精品综合欧美成人 | 香蕉视频ww | 亚洲精品v欧美精品动漫精品 | 日韩精品视频在线播放 | 国产又黄又爽又猛的免费视频播放 | 欧美日韩中文视频 | 伊人网站视频 | 青青青草国产 | 在线视频 一区二区 | 天天看天天碰 | 中文在线播放 | 国产一区二区三区影院 | 又爽又黄又无遮挡的视频在线观看 | 人人爱人人爽 | 日本成人在线播放 | 高清性色生活片免费视频软件 | 黄网站在线观看高清免费 | 天天做天天爱夜夜爽毛片毛片 | 日本免费一二区视频 | 女人被男人扒开狂躁视频 | 国产亚洲三级 | 久久天天躁狠狠躁夜夜呲 | 久久亚洲国产成人影院 | 77成人| 日本 欧美 在线 | 九一精品国产 | 久久麻豆亚洲精品 | 日韩欧美视频在线播放 |