JDBC之轉賬操作(運用事務)

2021-10-04 07:40:13 字數 934 閱讀 4689

若是普通的轉賬操作我們能想到的就是運用兩次update

public

static

void

transferaccounts

(int id1,

int id2,

int money)

//id為id1的人向id為id2的人轉賬money元

catch

(exception e)

finally

catch

(exception e2)

}}

但是這種操作是有缺點的,比如當id1的money減少後,在id2的money還未增加前發生了不知名錯誤,從而導致下面的**都無法執行,那麼就會導致不好的後果,類似於銀行訪問錢,我們把錢存到銀行去,但賬戶上沒變,那豈不是很荒謬?

因此要解決這個問題,我們運用事務。即將這兩個操作連在一起,這兩個操作要麼全都執行,要麼全都不執行,具體**如下:

//關鍵語句只有兩句

con.

setautocommit

(false);

//開啟事務

con.

commit()

;//提交事務

//將我們想要連線在一起的操作放在這兩行**之間

完整**如下:

public

static

void

transferaccounts

(int id1,

int id2,

int money)

//id為id1的人向id為id2的人轉賬money元

catch

(exception e)

finally

catch

(exception e2)

}}

銀行轉賬業務 使用事務

銀行轉賬是是兩個賬戶之間同時進行操作的,一方賬戶資金減少的同時另外一方的資金就要增加同樣的金額。如果一方操作失敗那麼另外一方的操作就不會成功。也即是需要將這樣的兩個操作放在乙個事務當中。只是這裡使用到了層的概念。既然設計到轉賬那麼肯定有乙個賬戶類 dto資料傳輸物件 還有乙個類是專門用來訪問該賬戶的...

php利用事務處理轉賬問題

mysqli new mysqli localhost root 064319 php mysqli set charset utf8 if mysqli connect errno mysqli autocommit false 自動提交模式設為false flag true 事務是否成功執行的標...

在儲存過程中運用事務

在儲存過程中運用事務 create database study use study create table peopleinfor 使用者資訊表 id int primary key identity 1001,1 主鍵自動增長 name1 nvarchar 30 使用者名稱 ymoney mo...