ADO.NET笔记——执行事务

王朝学院·作者佚名  2016-05-25
窄屏简体版  字體: 小  |  中  |  大  |  超大  

ADO.NET笔记——执行事务相关知识:

处于同一事务(Transaction)内的一组操作,要么都成功执行,最后完全提交;但如果只要有任何一个操作失败或者出问题,所有值钱执行的操作也都取消并恢复到初始状态(即回滚)SqlTransacttion代表从ADO.NET中发出的事务

代码示例:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Data; 7 using System.Data.SqlClient; 8 9 namespace Consoleapplication1310 {11 class PRogram12 {13 static string strConn = @"server=Joe-PC;database=AccountDBforSQLInjection;uid=sa;pwd=root";14 static SqlConnection conn = new SqlConnection(strConn);15 16 static string sql1 = "INSERT INTO Account(AccountID,AccountName,passWord) VALUES"17 + "(100,'sql1','123456')";//此命令正确18 static string sql2 = "INSERT INTO Account(AccountID,AccountName1,password) VALUES"19 + "(100,'sql2','123456')";//此命令因有拼写错误将会失败20 21 static SqlCommand cmd1 = new SqlCommand(sql1, conn);22 static SqlCommand cmd2 = new SqlCommand(sql2, conn);23 24 static void Main(string[] args)25 {26 //OperationWithoutTransaction();27 OperationWithTransaction();28 }29 30 static void OperationWithoutTransaction()31 {32 conn.Open();33 34 try35 {36 cmd1.ExecuteNonQuery();37 cmd2.ExecuteNonQuery();38 }39 catch (Exception e)40 {41 Console.WriteLine("执行失败。");42 Console.WriteLine(e);43 }44 finally45 {46 conn.Close();47 }48 }49 50 static void OperationWithTransaction()51 {52 conn.Open();53 //连接打开后,才能启动事务54 SqlTransaction trans = conn.BeginTransaction();55 //将两个操作添加到同一个事务中56 cmd1.Transaction = trans;57 cmd2.Transaction = trans;58 59 try60 {61 cmd1.ExecuteNonQuery();62 cmd2.ExecuteNonQuery();63 //如果没有出现异常,则提交事务64 trans.Commit();65 }66 catch (Exception e)67 {68 Console.WriteLine("执行失败,事务回滚。");69 Console.WriteLine(e);70 //执行回滚71 trans.Rollback();72 }73 finally74 {75 conn.Close();76 }77 }78 }79 }

程序分析:

没有使用事务时,如果命令1执行正确,而命令2执行错误,则命令1的修改将成功保存到数据库中使用事务之后,只要有任何一个命令错误,则另个命令都不会对数据库造成影响

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航