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

顺德品牌网站建设/社群营销

顺德品牌网站建设,社群营销,wordpress微信登录插件,jeecms 怎么建设网站c# 和 sqlserver 中的事务 sqlserver 中的事务 一提到事务,一般程序员对它的认识大概是这样的:原子性,以一个整体来执行,要么全部执行,要么全部返回(回滚),这是一个最初级的认识&…

c# 和 sqlserver 中的事务

sqlserver 中的事务

      一提到事务,一般程序员对它的认识大概是这样的:原子性,以一个整体来执行,要么全部执行,要么全部返回(回滚),这是一个最初级的认识,更深入一点的请看我另外一篇文章:http://www.cnblogs.com/mc67/p/4823514.html

今天我在这里做一下终结

  • 自动提交事务:是SQL Server默认的一种事务模式,每条Sql语句都被看成一个事务进行处理,你应该没有见过,一条Update 修改2个字段的语句,只修该了1个字段而另外一个字段没有修改。。
  • 显式事务:T-sql标明,由Begin Transaction开启事务开始,由Commit Transaction 提交事务、Rollback Transaction 回滚事务结束。
  • 隐式事务:使用Set IMPLICIT_TRANSACTIONS ON 将将隐式事务模式打开,不用Begin Transaction开启事务,当一个事务结束,这个模式会自动启用下一个事务,只用Commit Transaction 提交事务、Rollback Transaction 回滚事务即可。

常用语句:

  • Begin Transaction:标记事务开始。
  • Commit Transaction:事务已经成功执行,数据已经处理妥当。
  • Rollback Transaction:数据处理过程中出错,回滚到没有处理之前的数据状态,或回滚到事务内部的保存点。
  • Save Transaction:事务内部设置的保存点,就是事务可以不全部回滚,只回滚到这里,保证事务内部不出错的前提下
BEGIN TRAN
SET XACT_ABORT ON
INSERT INTO TEST VALUES(1999,12,80)
INSERT INTO TEST VALUES(1999,12,80)
SET XACT_ABORT OFF
COMMIT TRAN
GO

 或者你也可以这么写滴呀

BEGIN TRANSACTION--你需要执行的更新,删除,插入的语句
IF(@@ERROR > 0) //这是系统变量,存储你在执行更新,删除,插入操作时发生错误的记录编号ROLLBACK
ELSECOMMIT 

或者这........

BEGIN TRAN
INSERT INTO TEST VALUES(1998,12,23)
IF(@@ERROR<>0)  --一旦报错,这个就不等于0 了滴呀;ROLLBACK TRAN
ELSEBEGININSERT INTO TEST VALUES(1998,12,23)IF(@@ERROR<>0)ROLLBACKELSECOMMIT TRANEND

或者你可以这么写

BEGIN TRYBEGIN TRANINSERT TEST VALUES(1998,12,12)INSERT TEST VALUES(1998,12,'DF')COMMIT TRAN
END TRY
BEGIN CATCHROLLBACK TRANDECLARE @ERRMSG NVARCHAR(3000),@ERRLEVEL INTSELECT @ERRMSG=ERROR_MESSAGE(),@ERRLEVEL=ERROR_SEVERITY()RAISERROR(@ERRMSG,@ERRLEVEL,1)  
END CATCH

 savepoint命令(在sql中为save tran或save transaction)
保存点是事务过程中的一个逻辑点,我们可以把事务回退到这个点,而不必回退整个事务。

 在SQL Server中使用rollback会回滚所有的未提交事务状态,但是有些时候我们只需要回滚部分语句,把不需要回滚的语句提到事务外面来,虽然是个方法,但是却破坏了事务的ACID

BEGIN TRANINSERT INTO TEST VALUES(1995,15,15)SAVE TRAN POINT1INSERT INTO TEST VALUES(1995,15,15)ROLLBACK TRAN POINT1COMMIT TRAN

结果只有一条数据插入进去滴呀;

或者我们可以举一个更为 具体的是 列子;

测试代码:

CREATE TABLE ACCOUNT
(ID INT PRIMARY KEY IDENTITY(1,1),NAME NVARCHAR(15),AMOUNT MONEY
)
GO
INSERT INTO ACCOUNT 
SELECT '刘奇',1300 UNION ALL
SELECT '蔚蓝',400 

事务代码:

BEGIN TRAN TRAN_MONEY --开始事务DECLARE @TRAN_ERROR INT;
SET @TRAN_ERROR=0;
BEGIN TRYUPDATE ACCOUNT SET AMOUNT=AMOUNT-520 WHERE NAME='刘奇'SET @tran_error = @tran_error + @@ERROR;UPDATE ACCOUNT SET AMOUNT=AMOUNT+520 WHERE NAME='蔚蓝'SET @tran_error = @tran_error + @@ERROR;
END TRY
BEGIN CATCHPRINT '出现异常,异常编号:'+CONVERT(VARCHAR,ERROR_NUMBER())+'异常消息:'+ERROR_MESSAGE();SET @TRAN_ERROR+=1;
END CATCH
IF(@TRAN_ERROR>0)
BEGIN--有异常 回滚事务;ROLLBACK TRAN;PRINT '转账失败,取消交易';
END
ELSE
BEGIN--没有异常,提交事务COMMIT TRAN;PRINT '转账成功!'
END

ADO.NET中的事务

  public static void ExecuteSQLTran(string sqlString){using (SqlConnection con = new SqlConnection(conString)){using (SqlCommand cmd = new SqlCommand(sqlString, con)){con.Open();SqlTransaction tran = con.BeginTransaction();cmd.Transaction = tran; try{cmd.ExecuteNonQuery();tran.Commit();}catch (Exception e){tran.Rollback();}finally{con.Close();
                    }}}}

c# net framework 中的事务

TransactionScope是.Net Framework 2.0滞后,新增了一个名称空间。它的用途是为数据库访问提供了一个“轻量级”[区别于:SqlTransaction]的事务。使用之前必须添加对 System.Transactions.dll 的引用 

在.net 1.1的时代,还没有TransactionScope类,因此很多关于事务的处理,都交给了SqlTransaction和SqlConnection,每个Transaction是基于每个Connection的。这种设计对于跨越多个程序集或者多个方法的事务行为来说,不是非常好,需要把事务和数据库连接作为参数传入。

在.net 2.0后,TransactionScope类的出现,大大的简化了事务的设计。示例代码如下:

static void Main(string[] args){using (TransactionScope ts = new TransactionScope()){userBLL u = new userBLL();TeacherBLL t = new TeacherBLL();u.ADD();t.ADD();ts.Complete();}}

更多信息,请你参看:http://www.tuicool.com/articles/qaMzIb

还需要开启.....

 

 

 

TransactionScopeOptions

描述

Required

如果已经存在一个事务,那么这个事务范围将加入已有的事务。否则,它将创建自己的事务。

RequiresNew

这个事务范围将创建自己的事务。

Suppress

如果处于当前活动事务范围内,那么这个事务范围既不会加入氛围事务 (ambient transaction),也不会创建自己的事务。当部分代码需要留在事务外部时,可以使用该选项。

您可以在代码的任何位置上随是查看是否存在事务范围,具体方法就是查看 System.Transactions.Transaction.Current 属性。如果这个属性为“null”,说明不存在当前事务。

   public static void transactionscopeSQL(string sqlString){//设置配置信息TransactionOptions options = new TransactionOptions();options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; //设置事务隔离级别;options.Timeout = new TimeSpan(0,0,60); //设置超时时间;using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,options)){using (SqlConnection con = new SqlConnection(conString)){SqlCommand cmd = new SqlCommand(sqlString,con);try{con.Open();cmd.ExecuteNonQuery();scope.Compelete();}catch (Exception e){}finally{scope.Dispose();}}
               }}

 

更多事务信息:

http://wangqingpei557.blog.51cto.com/1009349/748799/

 

转载于:https://www.cnblogs.com/mc67/p/5021374.html

http://www.jmfq.cn/news/5290651.html

相关文章:

  • wordpress 获取文章标签/前端seo是什么意思
  • 台湾网站怎么做seo/站长统计是什么意思
  • 网站做锚点/新冠病毒最新消息
  • 最好的建站网站/如何优化
  • 平湖网站建设/济南谷歌推广
  • 资源搜索引擎搜索神器网/安卓优化大师官方版
  • 邵东做网站/优化网站价格
  • 校园网站怎么做/2022知名品牌营销案例100例
  • 网站开发建设工资多少/网页设计与制作用什么软件
  • 虚拟空间软件下载/河南seo优化
  • 域名到期查询/百度seo排名
  • 网站搜索功能模块/交换链接
  • 做网站优化选阿里巴巴还是百度/网站多少钱
  • 自做的网站如何发布/泰州seo推广
  • 咸阳做网站的公司有哪些/百度的网站网址
  • 静态网站做淘宝客/今日新闻 最新消息 大事
  • 构建一个网站需要多少钱/想卖产品怎么推广宣传
  • 襄樊网站制作公司/免费b站推广
  • 用路由器做简单的网站/企业培训机构有哪些
  • 开发商交房需要提供哪些证书/企业网站优化解决方案
  • 程序员给女朋友做的网站/河北网站建设案例
  • 软件开发公司的成本有哪些/北京seo的排名优化
  • 山西网站建设开发/商品标题seo是什么意思
  • wordpress翻页相同内容/西安优化seo托管
  • 网站网页设计模板/深圳网络推广的公司
  • 几年做啥网站能致富/广告营销策划
  • 网站设计两边为什么要留白/全网推广平台
  • 网站开发的阶段/深圳市住房和建设局官网
  • 北斗手表官方网站/网页模板图片
  • 免费外贸网站制作/营销型网站建设目标