存數過程和事務

2021-07-26 11:39:32 字數 1834 閱讀 9632

1)用當地資料庫語言,寫的一段業務邏輯演算法,並該演算法儲存在客戶端

2)使用儲存過程需要用於callablestatement介面,同時需要使如下sql命令呼叫:

3)對於儲存過程的輸出引數,需要註冊:

cstmt.registeroutparameter(3,types.integer);

4)取得返回值時,需要按照輸出引數的位置來取 

刪除儲存過程:drop procedure add_pro;

把儲存過程";"結尾換成"//":delimiter //

建立儲存過程,輸出引數需要標明out :  create procedure add_pro(a int,b int,out sum int )

begin

set sum=a+b;

end; //

用jdbc操作mysql儲存過程:

//演示jdbc操作mysql儲存過程

public class demo1 ";

try catch (exception e) finally

}}

事務指邏輯上的一組操作,組成這組操作的各個單元,要麼全部成功,要麼全部不成功。

例如:a——b轉帳,對應於如下兩條sql語句

update from account set money=money+100 where name=『b』;

update from account set money=money-100 where name=『a』;

1)每種資料庫都有事務的支援,但支援強度不同

2)以mysql為例,

啟動事務

start transaction;

提交事務

commit;

回滾事務

rollback;

3)在事務範圍內回滾是允許的,但如果commit後再回滾,無效   

4)其實每條sql都有事務存在,只是顯示還隱藏而言,預設都是隱藏事務

5)事務的操作,必須爭對同乙個connection。

6)事務的操作,可以設定乙個回滾點,便於回滾到最近的回滾點處。

//jdbc顯示操作事務的api

public class demo2 catch (exception e) catch (exception e1)

}finally

}}

1)原子性(a)事務是的各個操作是乙個不可分割的子操作。必須將其看成乙個整體,即原子操作

2)一致性(c)事務前後,由乙個一致狀態轉移到另乙個一致狀態

*3)隔離性(i)事務中,每個執行緒操作同張表同記錄時,相互分割

4)永續性(d)事務一旦生效,在沒有操作該記錄時情況下,永遠保持不變

1)髒讀:乙個執行緒看到了另乙個執行緒未提交的資料,叫髒讀

2)不可重複讀:乙個執行緒多次做查詢操作,多次結果都不一致,叫不可重複讀

上述二項,強調的是查詢,內容變,但數量不變

3)幻讀/虛讀:

上述一項,強調的是插入,數量變

*static int transaction_read_committed 

指示不可以發生髒讀的常量;不可重複讀和虛讀可以發生。 

*static int transaction_repeatable_read 

指示不可以發生髒讀和不可重複讀的常量;虛讀可以發生。 

static int transaction_serializable 

指示不可以發生髒讀、不可重複讀和虛讀的常量。 

總結:專案中,對於select操作不需要事務,對於其它操作(update/delete/insert)操作需要事務。

方法 函式 過程

封裝了一段邏輯 或者實現特定的功能 方法可以重複被呼叫 增加了 的復用 提公升開發效率 方法五要素 修飾詞 返回值型別 方法名 引數列表 main函式 public static void main string args 修飾詞 public static 返回值型別 void 表示該函式沒有返回...

事務和儲存過程

事務 同生共死 指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 也就是由多個sql語句組成,必須作為乙個整體執行 這些sql語句作為乙個整體一起向系統提交,要麼都執行 要麼都不執行 語法步驟 開始事務 begin transaction 事務提交 commit transaction...

儲存過程和事務

在儲存過程中使用事務時非常重要的,使用資料可以保持資料的關聯完整性,在sql server儲存過程中使用事務也很簡單,我們先來簡單了解一下儲存過程和事務,然後用乙個例子來簡單說明他們的用法 儲存過程 事務 以學生註冊資訊為例 create procedure dbo proc sturegister...