数据库事务-SqlTransaction
最近准备做一个小系统,在对数据库数据的操作中用到了事务。
事务是指在执行的一系列操作。事务处理可以确保除非本单元内的全部操作都成功完成,否则不会更新数据库中的数据。这一组操作要么全部成功要么全部失败,有操作失败时则不会向数据库中写入数据。一个单元要成为事务,必须满足原子性、一致性、隔离性和持久性。
不多说,上代码
1 public static int executeSqlNonQuery(string str, params SqlParameter[] paras)
2 {
3 int result = -1;
4 using (SqlConnection conn = new SqlConnection(conStr))
5 {
6 using (SqlCommand comm = conn.CreateCommand())
7 {
8 //开始一个事务
9 using (SqlTransaction tran = conn.BeginTransaction())
10 {
11 if (paras != null)
12 {
13 comm.Parameters.Clear();
14 comm.Parameters.AddRange(paras);
15 }
16
17 //指定SqlCommand对象的事务为tran
18 comm.Transaction = tran;
19
20 conn.Open();
21 comm.CommandText = str;
22 try
23 {
24 result = comm.ExecuteNonQuery();
25 //如果正常执行则提交事务
26 tran.Commit();
27 }
28 catch
29 {
30 //如果发生异常则回滚事务
31 tran.Rollback();
32 }
33 }
34 }
35 }
36 return result;
37 }
如果成功执行SQL命令则提交事务,在执行SQL语句的过程中如有异常则被捕获并且回滚事务,将不会对数据库中的数据产生任何的影响。