事務的開啟和提交

2022-03-21 07:41:10 字數 922 閱讀 6624

顯然,這個程式非常簡單,我們非常自信地編譯它,但是,出乎意料的結果使我們的成就感頓時煙消雲散:

error cs1501: 過載"sqltransaction"方法未獲取"0"引數

是什麼原因呢?注意到我們初始化的**:

sqltransaction mytran=new sqltransaction();

顯然,問題出在這裡,事實上,sqltransaction類並沒有公共的建構函式,我們不能這樣新建乙個sqltrancaction型別的變數。在事務處理之前確實需要有乙個sqltransaction型別的變數,將該變數關聯到sqlcommand類的transcation屬性也是必要的,但是初始化方法卻比較特別一點。在初始化sqltransaction類時,你需要使用sqlconnection類的begintranscation()方法:

sqltransaction mytran; mytran=myconn.begintransaction();

該方法返回乙個sqltransaction型別的變數。在呼叫begintransaction()方法以後,所有基於該資料連線物件的sql語句執行動作都將被認為是事務mytran的一部分。同時,你也可以在該方法的引數中指定事務隔離級別和事務名稱,如:

sqltransaction mytran;

mytran=myconn.begintransaction(isolationlevel.readcommitted,"sampletransaction");

關於隔離級別的概念我們將在隨後的內容中**,在這裡我們只需牢記乙個事務是如何被啟動,並且關聯到特定的資料鏈結的。

先不要急著去搞懂我們的事務都幹了些什麼,看到這一行:

mytran.commit();

到此為止,我們僅僅掌握了如何開始和提交事務。下一步我們必須考慮的是在事務中可以幹什麼和不可以幹什麼。

MYSQL事務的開啟與提交

對於乙個mysql資料庫 innodb 事務的開啟與提交模式無非下面這兩種情況 1 若引數autocommit 0,事務則在使用者本次對資料進行操作時自動開啟,在使用者執行commit命令時提交,使用者本次對資料庫開始進行操作到使用者執行commit命令之間的一系列操作為乙個完整的事務週期。若不執行...

事務的開啟回滾 提交

mysql use chapter06 database changed mysql create table account id int primary key auto increment,name varchar 40 money float engine innodb query ok,0...

提交事務和回滾事務

9.5 提交事務和回滾事務 提交事務 commit 語句 事務 transaction 測試一下,在mysql中預設的事務行為是怎樣的 mysql預設情況下支援自動提交事務。實際上不符合開發習慣,為了保證資料安全,必須保證同時成功之後再提交 自動提交 每執行一條語句執行一次 怎麼將mysql的自動提...