最近很多小伙伴想了解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的相关介绍,希望能对大家有所帮助。
本文到此结束,希望对大家有所帮助呢。