C#中事务的应用实例(一)

      在C#程序设计中我们通常在try语句块中进行数据库操作,所有我们这里就将事务的启动与结束设置在try中数据库操作的前后,而在catch异常处理中使用回滚(RollBack)动作。从而保证一旦对数据库失败,则回滚到初始状态。
【实例一】:用update命令将test数据库的my_test表中的tid>'0003'的数据记录的tname的值设为'Aillo'。然后再执行"create database Hello"的sql语句。由于在事务中不能使用create database这样的语句,故程序执行到此处的时候会抛出一个异常,进而体现了rollback的作用。运行时可先将cmd.CommandText = "create database Hello";这行注释掉运行,然后取消注释,将Aillo改成其他的名字,再运行,比较两次运行的结果。

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;

namespace test1
{
    public class Transaction
    {
        public SqlConnection getCon()
        {
            string constr="server=localhost;uid=sa;pwd=123456;database=test";
            SqlConnection con=new SqlConnection(constr);
            return con;
        }
        public void UpdateWithTran()
        {
            SqlConnection mycon = getCon();
            mycon.Open();
            SqlCommand cmd = new SqlCommand();
            SqlTransaction mytran = mycon.BeginTransaction();

            //绑定数据库连接和事务对象
            cmd.Connection = mycon;
            cmd.Transaction = mytran;
            try
            {
                cmd.CommandText = "use test";
                cmd.CommandText = "update my_test set tname='Aillo' where tid>'0003'";
                //cmd.CommandText = "create database Hello";
                cmd.ExecuteNonQuery();
                mytran.Commit();
            }
            catch (Exception ex)
            {
                mytran.Rollback();
                Console.Write("事务操作出错,已回滚。系统信息:" + ex.Message);
            }
            finally
            {
                mycon.Close();
            }
           
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Transaction tran = new Transaction();
            tran.UpdateWithTran();
        }
    }
}

1 Comment