day18-事务与连接池 3.jdbc中事务操作介绍
生活随笔
收集整理的這篇文章主要介紹了
day18-事务与连接池 3.jdbc中事务操作介绍
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
那么我們都是通過(guò)程序操作數(shù)據(jù)庫(kù)。所以要了解jdbc下怎樣對(duì)事務(wù)操作。jdbc如何操作事務(wù)?
自動(dòng)事務(wù)false那就不開(kāi)了唄相當(dāng)于開(kāi)啟事務(wù)。
package cn.itcast.transaction;import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement;import cn.itcast.utils.JdbcUtils; //代碼加上事務(wù)了加上回滾了加上提交了//jdbc中事務(wù)操作 public class TransactionTest1 {public static void main(String[] args) throws SQLException {//修改id=2這個(gè)人的money=500; String sql = "update account set money=500 where id=2"; Connection con = JdbcUtils.getConnection();con.setAutoCommit(false);//開(kāi)啟事務(wù),相當(dāng)于start transaction; Statement st = con.createStatement(); st.executeUpdate(sql);//事務(wù)回滾 //con.rollback(); con.commit();//事務(wù)提交 st.close(); con.close(); } } package cn.itcast.transaction;import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement;import cn.itcast.utils.JdbcUtils; //代碼加上事務(wù)了加上回滾了加上提交了//jdbc中事務(wù)操作 public class TransactionTest2 {public static void main(String[] args) {//修改id=2這個(gè)人的money=500; String sql = "update account set money=500 where id=2";//事務(wù)操作的異常不能說(shuō)想拋就拋 Connection con = null; Statement st = null;try {//如果數(shù)據(jù)庫(kù)操作過(guò)程中捕獲異常了,con = JdbcUtils.getConnection();con.setAutoCommit(false);//開(kāi)啟事務(wù),相當(dāng)于start transaction;st = con.createStatement();st.executeUpdate(sql); } catch (SQLException e) {e.printStackTrace();//事務(wù)回滾 有異常就把事務(wù)回滾,有異常就說(shuō)明出問(wèn)題了//出問(wèn)題就把數(shù)據(jù)恢復(fù)到原始,那就回滾吧try {con.rollback();} catch (SQLException e1) {e1.printStackTrace();} }finally{//finally里面的內(nèi)容肯定是能執(zhí)行到的try {con.commit();//事務(wù)提交st.close();//資源關(guān)閉 釋放資源操作 con.close();//資源關(guān)閉 } catch (SQLException e) {e.printStackTrace();}}} } package cn.itcast.utils;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ResourceBundle;public class JdbcUtils {private static final String DRIVERCLASS;private static final String URL;private static final String USERNAME;private static final String PASSWORD;private static final ThreadLocal<Connection> tl = new ThreadLocal<Connection>();static {DRIVERCLASS = ResourceBundle.getBundle("jdbc").getString("driverClass");URL = ResourceBundle.getBundle("jdbc").getString("url");USERNAME = ResourceBundle.getBundle("jdbc").getString("username");PASSWORD = ResourceBundle.getBundle("jdbc").getString("password");}static {try {// 將加載驅(qū)動(dòng)操作,放置在靜態(tài)代碼塊中.這樣就保證了只加載一次. Class.forName(DRIVERCLASS);} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConnection() throws SQLException {Connection con = tl.get();// 從ThreadLocal中獲取Connection。第一次獲取得到的是null.if (con == null) {// 2.獲取連接con = DriverManager.getConnection(URL, USERNAME, PASSWORD);tl.set(con); // 將con裝入到ThreadLocal中。 }// tl.remove(); //解除return con;}// 關(guān)閉操作public static void closeConnection(Connection con) throws SQLException {if (con != null) {con.close();}}public static void closeStatement(Statement st) throws SQLException {if (st != null) {st.close();}}public static void closeResultSet(ResultSet rs) throws SQLException {if (rs != null) {rs.close();}} }
?
轉(zhuǎn)載于:https://www.cnblogs.com/ZHONGZHENHUA/p/6623289.html
總結(jié)
以上是生活随笔為你收集整理的day18-事务与连接池 3.jdbc中事务操作介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [SDOI2015]星际战争
- 下一篇: MonkeyServer的使用及自动化