ADO.NET--事务的通用数据访问方法
2017-09-04 02:59
435 查看
事务—-通用访问类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; namespace Demo { class SQLHelper { private static string connString = "Server=.;DataBase=StudentManager;Uid=sa;Pwd=aaa999a9"; public static int UpdateByTran(List<string>sqlList) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(); try { conn.Open(); cmd.Transaction = conn.BeginTransaction();//开启事务 int result = 0; foreach (string sql in sqlList) { cmd.CommandText = sql; result += cmd.ExecuteNonQuery();//执行查询 } cmd.Transaction.Commit();//提交事务 return result; } catch (Exception ex) { if (cmd.Transaction != null) cmd.Transaction.Rollback();//回滚事务 throw new Exception("调用事务更新方法时出现异常:" + ex.Message); } finally { if (cmd.Transaction != null) cmd.Transaction = null; //清除事务 conn.Close(); } } } }
测试ADO.Net事务回滚
查看数据库返回
一样的错误信息。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Demo { class Program { static void Main(string[] args) { List<string> sqlList = new List<string>() { "delete from Students where StudentId=100010", "delete from Students where StudentId=100013",//有外键约束 "delete from Students where StudentId=100014", "delete from Students where StudentId=100011" }; string sql = "Select Count(*) from Students"; Console.WriteLine("删除学员总数前:{0}",SQLHelper.GetSingleResult(sql).ToString()); Console.WriteLine("******************************************************"); int result = 0; try { result = SQLHelper.UpdateByTran(sqlList); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine("*******************************"); } if (result > 0) Console.WriteLine("删除成功"); else Console.WriteLine("删除失败"); Console.WriteLine("*****************************************************"); Console.WriteLine("删除后学员总数:{0}",SQLHelper.GetSingleResult(sql).ToString()); Console.ReadLine(); } } }
相关文章推荐
- ADO.NET笔记——使用通用数据访问
- ADO.net下几个提高数据访问性能的方法
- 使用 ADO.NET 和 Oracle 进行高级数据访问
- 在ADO.NET中使用事务保护数据的完整性(1)
- 在ADO.NET中使用事务保护数据的完整性(5)
- 在ADO.NET中使用事务保护数据的完整性(2)
- ado在vb.net中的数据访问类
- ADO 与ADO.NET两种数据访问方式区别?
- 数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档)
- Access 通用数据访问类(asp.net 2.0 c#)
- Access 通用数据访问类(asp.net 2.0 c#)
- 数据访问:使用 ADO.NET 的最佳实践
- Access 通用数据访问类(asp.net 2.0 c#)
- 在ADO.NET中使用事务保护数据的完整性(3)
- 简化ADO.NET数据访问的类库(类似MS Data Access Application Block)
- 使用 ADO.NET 和 Oracle 进行高级数据访问
- 剖析 ADO.NET 批处理更新(深入研究数据访问)
- ADO.NET 数据访问介绍
- 深入了解 SQL Server 2000 与 ADO.NET 中的事务隔离及数据锁定
- ADO.NET数据访问探讨