日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JDBC的事务处理

發布時間:2024/4/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDBC的事务处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

事務,也是數據庫事務,指的是作為單個邏輯工作單元執行的一系列操作。正常的情況下,操作應該順利進行,與操作相關的所有數據庫信息也成功地更新;

但是,如果在這一系列過程中任何一個環節出了差錯,導致操作失敗了,數據庫中所有信息都必須保持操作前的狀態不變。否則,數據庫的信息將會一片混亂而不可預測。

一個邏輯工作單元要稱為事務,必須滿足ACID(原子性,一致性,隔離性和持久性)。

事務的結束只能有兩種形式:提交和回滾。操作完全成功則提交,產生永久性的修改;操作不完全成功則回滾,恢復到事務開始前的狀態。它們將結束一個事務。

(1)關閉自動提交事務。通過設置連接的自動提交事務屬性為false,如下:

Connection conn = DriverManager.getConnection("連接URL", "用戶名", "密碼"); //關閉自動提交事務 conn.setAutoCommit(false);

(2)如果執行順利,提交事務;一旦發生異常,回滾(rollback)事務,如下:

try{conn.setAutoCommit(false); //關閉自動提交事務stmt = conn.createStatement(); //創建會話stmt.executeUpdate("sql語句");conn.commit(); //提交事務 }catch(Exception e) {e.printStackTrace();conn.rollback(); //回滾事務 }

(3)關閉連接,如下:

finally{if(stmt != null)stmt.close();if(conn != null)conn.close(); }

延伸:

使用JDBC操作數據庫的時候,可以維護一個數據庫工具類和有關數據庫配置的屬性文件,如下:

DBUtil.java

package com.lmb.util;import java.sql.Connection; import java.sql.SQLException; import java.util.ResourceBundle; import org.apache.commons.dbcp.BasicDataSource; /*** 數據庫工具類* @param DRIVER_CLASS type:String 數據庫驅動類* @param URL type:String 要連接的數據庫的URL* @param USER_NAME type:String 要連接的數據庫的登錄名* @param PASSWORD type:String 要連接的數據庫的密碼* @param PAGE_SIZE type:int 商品分頁操作時每頁的最大商品數* @param bds type:BasicDataSource 數據庫連接池對象* @author lmb*/ public class DBUtil {public static final String DRIVER_CLASS;public static final String URL;public static final String USER_NAME;public static final String PASSWORD;public static final int PAGE_SIZE = 12;private static BasicDataSource bds = new BasicDataSource();static { //讀取數據庫配置資源屬性文件,得到數據庫配置屬性ResourceBundle rb = ResourceBundle.getBundle("com.lmb.util.dbconfig");//dbconfig.properties文件的目錄DRIVER_CLASS = rb.getString("DRIVER_CLASS");URL = rb.getString("URL");PASSWORD = rb.getString("PASSWORD");USER_NAME = rb.getString("USER_NAME");//將從資源屬性文件中得到的數據庫配置屬性,傳入新建的數據庫連接池對象bds中去bds.setDriverClassName(DRIVER_CLASS);bds.setUrl(URL);bds.setUsername(USER_NAME);bds.setPassword(PASSWORD);//設置數據庫連接池的初始化連接數bds.setInitialSize(100);//設置數據庫連接池的最小連接數bds.setMinIdle(20);//設置數據庫連接池的最大連接數bds.setMaxActive(150);}/*** 使用數據庫連接池來創建數據庫連接* @return connection 一個數據庫連接*/public static Connection getConnection() {Connection connection = null;try {connection = bds.getConnection();} catch (SQLException e) {e.printStackTrace();}return connection;} }

dbconfig.properties(以mysql為例)

# DRIVER_CLASS=com.mysql.jdbc.Driver URL=jdbc\:mysql\://localhost\:3306/hollycrmUSER_NAME=root PASSWORD=root

當需要創建數據庫連接時:

…… Connection conn=(Connection) DBUtil.getConnection(); ……

總結

以上是生活随笔為你收集整理的JDBC的事务处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。