天天看點

ASP.NET中使用三層架構事務的技巧實戰

在我知道的.NET中,執行事務有兩種方法,一種是自動事物,使用起來相當簡單,但是需要配置伺服器,如果你用的是web共享主機,即沒有權限配置自己的伺服器,那就沒必要用這種了,接下來我講下.net中最普通的事務SqlTransaction。

     Sqlhelper:

1       public static SqlTransaction BeginTransaction()

2         {

3             SqlConnection myConnection = new SqlConnection(DbConfig.ConnectionString);

4             myConnection.Open();

5             SqlTransaction tran = myConnection.BeginTransaction();

6             return tran;

7         }

9    public int ExecutenQuery(string cmdtxt, SqlParameter[] paras, CommandType cmdtype, SqlTransaction tran)

10         {

11             int res;

12             try

13             {

14                 Cmd = new SqlCommand(cmdtxt, tran.Connection);

15                 Cmd.Transaction = tran;

16                 Cmd.CommandType = cmdtype;

17                 Cmd.Parameters.AddRange(paras);

18                 res = Cmd.ExecuteNonQuery();

19             }

20             catch (Exception ex)

21             {

22                 FileHelper.WriteMyLog(ex);

23                 throw ex;

24             }

25             return res;

26         }

   DAL:

1 public bool test(int i,SqlTransaction tran)

3             string sql = "insert into [test]([item]) values(@i)";

4             SqlParameter[] paras=new SqlParameter[]{new SqlParameter("@i",i)};

5             return sqlhelper.ExecutenQuery(sql, paras, CommandType.Text, tran)>0;

6         }

BLL:

1 UserDAO userdao = new UserDAO();

2         public bool test()

3         {

4             using (SqlTransaction tran = SQLHelper.BeginTransaction())

5             {

6                 try

7                 {

8                     userdao.test(2, tran);

9                     userdao.test(256, tran);

10                     tran.Commit(); return true;

11                 }

12                 catch

13                 {

14                     tran.Rollback();

15                     return false;

16                 }

17                 finally

18                 {

19                     tran.Connection.Close();//關閉資料庫連接配接

20                 }

21             }

22         }

  上述代碼在此次測試中通過,若要用于真實項目中,請修改後再使用,還有本人水準一般,寫的不到之處請大家見諒。歡迎大家指導指正。

本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/771636,如需轉載請自行聯系原作者