sqltransaction(【SQL】| Session、Transaction)

网友提问最佳回答:

最近很多小伙伴想了解sqltransaction,今天小编专门整理了sqltransaction的相关内容分享给大家,让我们一起看看吧。

本文目录一览:

  • 1、SqlTransaction 已完成;它再也无法使用。
  • 2、sqltransaction的方法有哪些
  • 3、【SQL】| Session、Transaction

SqlTransaction 已完成;它再也无法使用。

你把catch中的 trans.Rollback();去掉就可以了。 因为前面已经trans.Commit();了,这个表示事物已经结束, 后面再调用当然会出现前面的问题了。

另外不用指明trans.Rollback(),如果有异常的话,事物会自动回滚的。

楼上的,他事物是结束了,但是下面的插入语句并没有用到前面的事物,所以根本不需要再次打开事物的连接

sqltransaction的方法有哪些

SqlCommand对象-Transaction事务的使用

事务作为一个单元被提交和回滚,可以与SQL语句进行组合使用,例如:对于银行事务,可以要从一个帐号取钱,存到另一个帐号中,然后在一个单元中提交这些改变,如果发生问题,则同时回滚这些改变。通过设置SqlCommand对象的事务属性Transaction与SqlTransaction对象绑定来实现事务处理。

使用步骤如下:

1、生成SqlTransaction对象,并用SqlConnection对象的BeginTransaction方法开始事务。

2、生成保存SQL语句的SqlCommand对象。

3、 将SqlCommand对象的Transaction属性设置为第1步生成的SqlTransaction对象。

4、将SqlCommand对象的CommandText属性设置为第一个INSERT语句。

5、用SqlCommand对象的ExecuteNonQuery()方法执行第一个INSERT语句。此方法不返回结果集。

6、将SqlCommand对象的CommandText属性设置为第二个INSERT语句。

7、用SqlCommand对象的ExecuteNonQuery()方法执行第二个INSERT语句。此方法不返回结果集。

8、用SqlTransaction对象的Commit()方法提交事务,使INSERT语句增加的两行在数据库中保存。

说明:如果要撤消构成事务的SQL语句,则可以用Rollback()方法而不是Commit()方法。默认情况下,事务撤消一定要用Commit()或Rollback()方法明确事务要提交还是回滚。

【SQL】| Session、Transaction

基于上次 临时表 的问题,我们提到了外部临时表的两种,基于session的临时表和基于transaction的临时表,这次我就来整理下什么是session和transaction。

一、session

提到session 我们会跟connection放在一起来比较,

这两篇都讲的特别通俗易懂(我是似懂非懂,所以就不再说了)

我只知道connection是一个物理概念、session是一个逻辑概念

当client端和服务器端创建了一个connection表示创建了一个session,有了session之后,所有的业务操作是transaction。

一个session会有多个transaction。

一个transaction是一个最小的工作单元,通常一个事物对应一个完整的业务,比如我们经常说的银行转账业务,它是由一组DML语句组成,该组DML语句完成业务逻辑,transaction只和DML语句有关,也只有DML语句才有transaction。一组DML语句要么全部成功(commit),要么全部失败(rollback)。

以银行转账为例,张三给李四转账100元.

事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 

即:张三减100, 李四+100 , insert银行流水, 这3个操作,要么都成功,要么都失败。

关键字:transaction、session、会话、事物、connection

以上就是sqltransaction的相关介绍,希望能对大家有所帮助。

本文到此结束,希望对大家有所帮助呢。

获赞数:193

收藏数:39

回答时间:2024-03-11 10:29:06