事务回滚
//RollBack.cs
using 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;
file://创建一个事务
myTran=myConn.BeginTransaction();
file://从此开始,基于该连接的数据操作都被认为是事务的一部分
file://下面绑定连接和事务对象
myComm.Connection=myConn;
myComm.Transaction=myTran;
try
{
file://定位到pubs数据库
myComm.CommandText="USE pubs";
myComm.ExecuteNonQuery();
myComm.CommandText="UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%'";
myComm.ExecuteNonQuery();
file://下面使用创建数据库的语句制造一个错误
myComm.CommandText="Create database testdb";
myComm.ExecuteNonQuery();
myComm.CommandText="UPDATE roysched SET royalty = royalty * 1.20 WHERE title_id LIKE 'Ps%'";
myComm.ExecuteNonQuery();
file://提交事务
myTran.Commit();
}
catch(Exception err)
{
myTran.Rollback();
Console.Write("事务操作出错,已回滚。系统信息:"+err.Message);
}
}
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();
}
}
}
该文章转载自德仔工作室:http://www.dezai.cn/article_show.asp?ArticleID=27249