玉祥平台客服-15087858732

标题: 事务的开启和提交 [打印本页]

作者: Adam丶鱼    时间: 2020-2-23 19:44
标题: 事务的开启和提交
我们对事务的概念和原理都了然于心,并且作为已经有一些基础的C#开发者,我们已经熟知编写数据库交互程序的一些要点,即使用SqlConnection类的对象的Open()方法建立与数据库服务器的连接,然后将该连接赋给SqlCommand对象的Connection属性,将欲执行的SQL语句赋给它的CommandText属性,于是就可以通过SqlCommand对象进行数据库操作了。对于我们将要编写的事务处理程序,当然还需要定义一个SqlTransaction类型的对象。并且看到SqlCommand对象的Transcation属性,我们很容易想到新建的SqlTransaction对象应该与它关联起来。
我们可以很熟练地写出下面这一段程序:
//DoTran.csusing System;
using System.Data;
using System.Data.SqlClient;
namespace Aspcn
{
 public class DbTran
 {
  file://执行事务处理
  public void DoTran()
  {
   file://建立连接并打开
   SqlConnection myConn=GetConn();
   myConn.Open();
   SqlCommand myComm=new SqlCommand();
   SqlTransaction myTran=new SqlTransaction();
   try
   {
    myComm.Connection=myConn;
    myComm.Transaction=myTran;
   
    file://定位到pubs数据库 
    myComm.CommandText="USE pubs";
    myComm.ExecuteNonQuery();

    file://更新数据
    file://将所有的计算机类图书
    myComm.CommandText="UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%'";
    myComm.ExecuteNonQuery();//提交事务
    myTran.Commit();
   }
   catch(Exception err)
   {
    throw new ApplicationException("事务操作出错,系统信息:"+err.Message);
   }
   finally
   {
    myConn.Close();
   }
  }
  file://获取数据连接
  private SqlConnection GetConn()
  {
   string strSql="Data Source=localhost;Integrated Security=SSPI;user id=sa;password=";
   SqlConnection myConn=new SqlConnection(strSql);
   return myConn;
  }
 }

 public class Test{public static void Main()
 {
  DbTran tranTest=new DbTran();
  tranTest.DoTran();
  Console.WriteLine("事务处理已经成功完成。");
  Console.ReadLine();
 }
}
}


作者: 张兴康    时间: 2020-2-28 17:32





欢迎光临 玉祥平台客服-15087858732 (http://bbs.delit.cn/) Powered by Discuz! X3.2