溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#事務的創(chuàng)建及應用

發(fā)布時間:2020-06-24 12:59:08 來源:網(wǎng)絡 閱讀:561 作者:liu50472 欄目:編程語言

1、創(chuàng)建事務的結構

SqlConnection sqlConnection = new SqlConnection(); 
...初始化連接 
// 開啟事務 
SqlTransaction sqlTransaction = sqlConnection.BeginTransaction(); 
// 將事務應用于Command 
SqlCommand sqlCommand = new SqlCommand(); 
sqlCommand.Connection = sqlConnection; 
sqlCommand.Transaction = sqlTransaction; 
try 

// 利用sqlcommand進行數(shù)據(jù)操作 
... 
// 成功提交 
sqlTransaction.Commit(); 

catch(Exception ex) 

// 出錯回滾 
sqlTransaction.Rollback(); 

2、簡單例子


DataTable dt = new DataTable(); 
System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection("連接字符串"); 
System.Data.SqlClient.SqlCommand cm = new System.Data.SqlClient.SqlCommand(); 
cm.Connection = cnn; 
cnn.Open(); 
System.Data.SqlClient.SqlTransaction trans = cnn.BeginTransaction(); 
try 

foreach(DataRow dr in dt.Rows) 

cm.CommandText = "update [表] set [數(shù)量] = @amount where productID = @productID"; 
cm.Parameters.Add("@amount",SqlDbType.Int); 
cm.Parameters["@amount"].Value = Convert.ToInt32(dr["amount"]); 
cm.Parameters.Add("@productID",SqlDbType.VarChar); 
cm.Parameters["@productID"].Value = dr["productID"].ToString(); 
cm.ExecuteNonQuery(); 

trans.Commit(); 

catch 

trans.Rollback(); 

finally 

cnn.Close(); 
trans.Dispose(); 
cnn.Dispose(); 

}

3、SQl server中的事務例子

begin transaction 
save transaction A 

insert into demo values('BB','B term')
rollback TRANSACTION A

create table demo2(name varchar(10),age int)
insert into demo2(name,age) values('lis',1)
rollback transaction

insert into demo values('BB','B term')

commit TRANSACTION A

commit TRANSACTION 

4、注意

1。事務必須在連接打開后BeginTransaction();

2.事務添加到SqlCommand(sqlCommand.Transaction = sqlTransaction; )

3、其他數(shù)據(jù)庫對應做相應調整

4、可以用微軟提供的一個dll,很方便.

 

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI