温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#事务的创建及应用

发布时间:2020-06-24 12:59:08 来源:网络 阅读:571 作者:liu50472 栏目:编程语言

1、创建事务的结构

SqlConnection sqlConnection = new SqlConnection(); 
...初始化连接 
// 开启事务 
SqlTransaction sqlTransaction = sqlConnection.BeginTransaction(); 
// 将事务应用于Command 
SqlCommand sqlCommand = new SqlCommand(); 
sqlCommand.Connection = sqlConnection; 
sqlCommand.Transaction = sqlTransaction; 
try 

// 利用sqlcommand进行数据操作 
... 
// 成功提交 
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 [数量] = @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、其他数据库对应做相应调整

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

 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI