现在的位置: 首页 > 综合 > 正文

ADO.NET2.0中的事务处理

2012年06月20日 ⁄ 综合 ⁄ 共 3828字 ⁄ 字号 评论关闭
ado.net1.X的事务处理
 1  SqlConnection myConnection = new SqlConnection("Server=(local);Initial Catalog=Demo24;uid=sa;pwd=111;");
 2            myConnection.Open();
 3            // 启动一个事务
 4            SqlTransaction myTrans = myConnection.BeginTransaction();
 5
 6
 7            // 为事务创建一个命令
 8            SqlCommand myCommand = new SqlCommand();
 9            myCommand.Connection = myConnection;
10            myCommand.Transaction = myTrans;
11            try
12            {
13                myCommand.CommandText = "Insert into tbUserInfo (UserName, UserPass,Birthday,Score) VALUES ('成龙', '111','1966-1-1',540)";
14                myCommand.ExecuteNonQuery();
15                //myTrans.Commit();
16                myCommand.CommandText = "Insert into tbUserInfo (UserName, UserPass,Birthday,Score) VALUES ('王五', '222','198834',550)";
17                myCommand.ExecuteNonQuery();
18                myTrans.Commit();
19                MessageBox.Show("成功写入记录!");
20            }

21            catch 
22            {
23                myTrans.Rollback();
24                MessageBox.Show("写入数据库失败!");
25            }

26            finally
27            {
28                myConnection.Close();
29            }

ado.net2.0的简单事务处理:(using System.Transactions;)

 1string strCon = "Server=(local);Initial Catalog=Demo24;uid=sa;pwd=111;";
 2            try
 3            {
 4
 5                using (TransactionScope ts = new TransactionScope())
 6                {
 7                    using (SqlConnection myConnection = new SqlConnection(strCon))
 8                    {
 9                        myConnection.Open();
10                        using (SqlCommand myCommand = myConnection.CreateCommand())
11                        {
12
13                            myCommand.CommandText = "Insert into tbUserInfo (UserName, UserPass,Birthday,Score) VALUES ('成龙', '111','1966-1-1',540)";
14                            myCommand.ExecuteNonQuery();
15                            //myTrans.Commit();
16                            myCommand.CommandText = "Insert into tbUserInfo (UserName, UserPass,Birthday,Score) VALUES ('王五', '222','1988-3-4',550)";
17                            myCommand.ExecuteNonQuery();
18                            ts.Complete();                            
19                        }

20                    }

21                }

22            }

23            catch
24            {
25                MessageBox.Show("程序出错!事务没有成功!");
26            }

ado.net2.0的分布式事务处理:(using System.Transactions;)

 1     using (TransactionScope ts = new TransactionScope())
 2                {
 3                    using (SqlConnection myConnection = new SqlConnection(strCon))
 4                    {
 5                        myConnection.Open();
 6                        using (SqlCommand myCommand = myConnection.CreateCommand())
 7                        {
 8
 9                            myCommand.CommandText = "Select count(*) from tbUserInfo";
10                            int nCount = (int)myCommand.ExecuteScalar();
11                            MessageBox.Show(nCount.ToString());
12                        }

13                    }

14                    using (SqlConnection myConnection = new SqlConnection(strCon))
15                    {
16                        myConnection.Open();
17                        using (SqlCommand myCommand = myConnection.CreateCommand())
18                        {
19
20                            myCommand.CommandText = "Select count(*) from tbUserInfo";
21                            int nCount = (int)myCommand.ExecuteScalar();
22                            MessageBox.Show(nCount.ToString());
23                            
24                        }

25                    }

26                    ts.Complete();
27                }

28            }
29            catch
30            {
31                MessageBox.Show("程序出错!事务没有成功!");
32            }

抱歉!评论已关闭.