当前位置: 首页 > news >正文

贵州省住房和城乡建设厅网站人事教育栏安阳网站建设策划

贵州省住房和城乡建设厅网站人事教育栏,安阳网站建设策划,只做女性的网站,联网站http://blog.csdn.net/tjvictor/article/details/4074240 本节主要介绍Sql语句#xff0c;SqlTransaction和TransactionScope这三种使用事务的方法。 本节的所有例子都在sql server 2008和vs 2008环境下运行通过#xff0c;如果没有sql server2008#xff0c;那么使用sql …     http://blog.csdn.net/tjvictor/article/details/4074240   本节主要介绍Sql语句SqlTransaction和TransactionScope这三种使用事务的方法。 本节的所有例子都在sql server 2008和vs 2008环境下运行通过如果没有sql server2008那么使用sql server 2005也一样但是sql se rver 2000上是无法运行通过的因为某些sql语句在2000中不支持。请大家注意这点。 请先执行下面的脚本在本机的数据库实例中建立测试数据库以方便运行例子。 [c-sharp]  view plain copy --建库   IF EXISTS (SELECT name FROM sys.databases WHERE name  NTransTestDb)       drop database [TransTestDb]      CREATE DATABASE [TransTestDb];         --建表   use [TransTestDb]   go   IF EXISTS (SELECT * FROM sys.objects WHERE object_id  OBJECT_ID(N[dbo].[TransTestTable]) AND type in (NU))       drop table [TransTestTable]      CREATE TABLE [dbo].[TransTestTable](Id int, [Name] varchar(16));         --初始值   use [TransTestDb]   go   insert into [TransTestTable]       select 1,a union       select 2,b union       select 3,c;   首先介绍利用Sql语句来使用事务。Sql Server2005/2008提供了begin trancommit tran和rollback tran三个语句来显示的使用事务。begin tran表示事务开始commit tran表示事务提交rollback tran表示事务回滚。具体代码如下 [c-sharp]  view plain copy begin try       begin tran           insert into dbo.TransTestTable values (66,66);           update dbo.TransTestTable set [Name]  77 where [Id]  66;           --RAISERROR (Error raised in TRY block.,16,1);       commit tran   end try   begin catch       rollback tran   end catch   代码中的begin try和begin catch是捕获异常时使用的只在sql server2005/2008中支持sql server 2000上不支持这个语句。在begin try 和 end try之间的代码运行时如果发生异常则程序会跳转到begin catch和end catch中执行相关的rollback tran回滚操作。在begin tran和commit tran之间就是一个事务insert和update必须同时成功否则就同时失败。RAISERROR 语句的意思是抛出一个异常只在sql server2005/2008中支持sql server 2000上不支持这个语句。 执行上面的代码我们会发现插入和更新同时都成功了。把RAISERROR的注释去掉后再执行我们会发现插入和更新都回滚了。因为RAISERROR抛出异常后没有执行到commit tran而是直接执行begin catch里面的rollback tran回滚语句了。 下面介绍SqlTransaction的使用方法。SqlTransaction是System.Data.SqlClient命名空间下的一个事务类主要方法有Commit()和Rollback()两个函数更多方法和属性请参考MSDN。具体代码如下 [c-sharp]  view plain copy static void Main(string[] args)           {                  SqlConnection sqlConn  new SqlConnection(                   ConfigurationManager.ConnectionStrings[ConnStr].ConnectionString);               SqlTransaction sqlTrans  null;               try               {                   sqlConn.Open();                   sqlTrans  sqlConn.BeginTransaction();//事务开始                   SqlCommand sqlComm  new SqlCommand(, sqlConn, sqlTrans);                   sqlComm.CommandTimeout  120;                   sqlComm.CommandType  System.Data.CommandType.Text;                      string insertSql  insert into dbo.TransTestTable values (66,66);;                   string updateSql  update dbo.TransTestTable set [Name]  77 where [Id]  66;;                      sqlComm.CommandText  insertSql;                   sqlComm.ExecuteNonQuery();//执行insert                      sqlComm.CommandText  updateSql;                   sqlComm.ExecuteNonQuery();//执行update                   //throw new Exception(test exception.the transaction must rollback);                      sqlTrans.Commit();//事务提交               }               catch (Exception ex)               {                   sqlTrans.Rollback();//事务回滚                   Console.WriteLine(ex.Message);               }               finally               {                   if (sqlConn.State ! System.Data.ConnectionState.Closed)                       sqlConn.Close();               }                  Console.ReadLine();           }   上面的代码显示了SqlTransaction类的基本使用方法。首先使用SqlConnection建立连接后sqlConn.BeginTransaction()表示事务的开始在执行一些基本操作后代码是执行一个insert和一个update后执行sqlTrans.Commit();表示事务提交这时候刚才insert和update的数据在数据库才能被使用。如果把throw new Exception(test exception.the transaction must rollback);这句的注释去掉我们会发现程序没有执行提交而是直接执行了catch中的Rollback()进行了回滚。那么刚才的insert和update一起被回滚。 最后看一下TransactionScope的基本用法。TransactionScope继承IDisposable接口所以一般在using中使用。具体代码如下 [c-sharp]  view plain copy static void Main(string[] args)   {      using (TransactionScope scope  new TransactionScope())      {          SqlConnection sqlConn  new SqlConnection(              ConfigurationManager.ConnectionStrings[ConnStr].ConnectionString);          sqlConn.Open();              string insertSql  insert into [TransTestTable] values(11,11);           string updateSql  update [TransTestTable] set [Name]  111 where [Id]  11;             SqlCommand sqlComm  new SqlCommand(insertSql, sqlConn);          sqlComm.CommandType  System.Data.CommandType.Text;          sqlComm.ExecuteNonQuery();                             sqlComm  new SqlCommand(updateSql, sqlConn);          sqlComm.CommandType  System.Data.CommandType.Text;          sqlComm.ExecuteNonQuery();             sqlConn.Close();             scope.Complete();        }           Console.ReadLine();   }   在using中定义了一个TransactionScope相当于定义了一个事务范围即这个事务作用域为using内。程序执行了两个动作一个insert一个update最后执行了scope.Complete();相当于提交事务。如果把scope.Complete();注释掉我们会发现insert和update都被回滚了因为在using作用域内如果没有提交命令那么scope在销毁时会自动回滚所有的操作 以上就是三种事务的基本使用方法在此基础之上还可以引申出更多的问题比如嵌套事务三种方法的混合使用等问题。在此就不一一列举了。
http://www.w-s-a.com/news/790044/

相关文章:

  • 计算机编程与网站建设好玩的网页传奇
  • 商务网站建设找哪家本地推广找哪些网站
  • 手机h5网站企业网站管理系统的运维服务
  • 南京建设网站公司网站游戏怎么制作
  • 成都建站程序苏州市建设局招标网站首页
  • 自助建网站市场公司起名大全2020最新版的
  • dede网站模板北京 网站开发 大兴
  • 网站优化师招聘建设牌安全带官方网站
  • 南京网站建设网站做视频网站用什么格式
  • 普陀做网站价格wordpress接入qq互联
  • 网站2级页面怎么做杭州哪家做外贸网站
  • 做了静态网站怎么显示在互联网上营销策划与运营方案
  • 常见的英文网站国内军事新闻大事件
  • 傻瓜式做网站程序微信怎么开公众号
  • c2c电商网站wordpress仿36kr主题
  • 网站建设公司开发免费图纸网站
  • 一个网站页面设计多少钱做预算查价格的网站是哪个
  • 鳌江哪里有做网站百度短链接在线生成
  • 有没有什么做水利资料的网站杭州建设信用平台
  • 电子商务网站建设及推广方案论文wordpress无法显示文章
  • 建设工程监理网站前端和后端分别需要学什么
  • 公司网站制作效果国内最好的在线网站建设
  • 徐州好点的做网站的公司有哪些wordpress 工具插件下载
  • 如何用云服务器建设网站微网站免费开发平台
  • 官网的网站设计公司做网站需要准备哪些东西
  • 程序员和做网站那个好找工作wordpress二维码 插件
  • 湖南城市建设技术学院官方网站青海省建设局网站
  • 响应式网站有什么区别百度网站官网
  • 金华企业自助建站系统长沙建站公司模板
  • 云主机 做网站友情链接网站