什么是事務:
一件事情有N個組成單元,執行之后要么同時成功,要么同時失敗。
MySQL是一條默認的事務,一條sql語句就是一條事務。
------------------------------------------------------------
MySQL事務:
1、開啟一個事務:start transaction
2、事務提交:commit 代表從開啟事務到事務提交中間的所有sql語句都認為是有效的。
3、事務回滾:rollback 代表從開啟事務到事務回滾之間的所有sql語句都認為是無效的。
當開啟事務執行sql語句之后,在數據庫中是可以查看到的,但這只是以日志的方式存在,并沒有真正的存在MySQL的磁盤上,這時執行事務回滾之后,數據是沒有的。
------------------------------------------------------------
JDBC實務操作:
默認是自動事務:
每執行一次excuteUpdate方法,就代表事務自動提交。
把自動提交的代碼設置成false,意思是不自動提交,改為手動提交:
conn.setAutoCommit(false);
手動開啟事務之后獲得執行平臺:
Statement stmt = conn.createStatement();
通過jdbc的API手動操作:
1、開啟事務:conn.setAutoCommit(false);
2、提交事務:conn.commit();
3、事務回滾:conn.rollback();
注意:執行sql語句的connection與開啟事務的connection必須是同一個,才能對事務進行控制。
------------------------------------------------------------
DBUtils事務操作:
DBUtils分為有參構造和無參構造兩種。
有參構造:
QueryRunner runner = new QueryRunner(DataSourceUtils.getdataSource());
里面的參數就是連接池,相當于連接到了數據庫,如果沒有參數的話,就要自己設置Connection連接數據庫。
無參構造:
QueryRunner runner = new QueryRunner();
自己設置連接:
Connection conn = DataSourceUtils.getConnection();