using (SqlConnection connection = new SqlConnection(connStr))
{
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection = connection;
connection.Open();
SqlTransaction tran = connection.BeginTransaction();
sqlcmd.Transaction = tran;
//connection.BeginTransaction();
//sqlcmd.Connection.BeginTransaction();
try
{
sqlcmd.CommandText = " INSERT INTO tLabPrint (单据编号,单据时间) values('1','2017-02-25') ";
sqlcmd.ExecuteNonQuery();
tran.Commit();
//sqlcmd.Transaction.Commit();
}
catch (Exception ex)
{
tran.Rollback();
throw new Exception("error:事务执行失败 " + ex.Message);
}
}

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()方法明确事务要提交还是回滚。

下面代码使用ExecuteNonQuery执行INSERT语句并用SqlTransaction对象进行数据提交

con.Open();//在调用方法前打开数据库连接

SqlCommand comm=new con.CreateCommand();//创建和声明Command对象

SqlTransaction tran=con.BeginTransaction();//在生成SqlTransaction对象前必须打开数据库连接

comm.Transaction=tran;//设置属性为SqlTransaction对象

comm.CommandText= “insert into dept(dept) values(‘信息组’)”;//设置
SqlCommand对象要执行的SQL语句

comm.ExecuteNonQuery();//执行SQL语句

comm.CommandText= “insert into dept(dept) values(‘生产物流组’)”; //设置SqlCommand对象要执行的SQL语句

comm.ExecuteNonQuery();//执行SQL语句

tran.Commit();提交INSERT语句对数据库中表的改变。如果要撤消改变,使用Rollback()

con.Close();//关闭数据库连接

SqlCommand对象-Transaction事务的使用的更多相关文章

  1. [原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword 与 解析,.环境搭建,hibernate.cfg.xml文件及参数说明,持久化类,对象-关系映射文件.hbm.xml,Hibernate API (Configuration 类,SessionFactory 接口,Session 接口,Transaction(事务))

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. ActiveX数据对象之事务控制在VB和DELPHI中的应用

            本文发表在中国人民解放军"信息工程大学"学报 2001年第3期.        ActiveX数据对象之事务控制在VB和DELPHI中的应用             ...

  3. .Net系列 Transaction 事务

    Transactions 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit).在计算机术语中,事务通常就是指数 ...

  4. 大数据学习day35----flume01-------1 agent(关于agent的一些问题),2 event,3 有关agent和event的一些问题,4 transaction(事务控制机制),5 flume安装 6.Flume入门案例

    具体见文档,以下只是简单笔记(内容不全) 1.agent Flume中最核心的角色是agent,flume采集系统就是由一个个agent连接起来所形成的一个或简单或复杂的数据传输通道.对于每一个Age ...

  5. SqlCommand对象

    SqlCommand对象以及如何使用它与数据库交互 1.什么是command对象2.如何使用ExecuteReader方法查询数据3.如何使用ExecuteNonQuery方法插入和删除对象4.如何使 ...

  6. PL/SQL 一个数据对象一个事务(rollback,submit)

    /*********************************************** 一个数据对象一个事务(且记录错误信息到处理对象) ************************** ...

  7. [mybatis-spring] Transaction 事务/事务处理/事务管理器

    使用mybatis-spring的主要原因之一就是: mybatis-spring允许mybatis参与到spring 事务中. mybatis-spring leverage[use (someth ...

  8. spring boot整合shiro后,部分注解(Cache缓存、Transaction事务等)失效的问题

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/elonpage/article/details/78965176 前言 整合有缓存.事务的sprin ...

  9. Transaction事务传播行为种类PROPAGATION_REQUIRED

    事务传播行为种类 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 表1事务传播行为类型 事务传 ...

随机推荐

  1. Oracle 官网 jdk1.6 下载地址

    在oracle官方网站下载地址 http://www.oracle.com/technetwork/java/archive-139210.html http://www.oracle.com/tec ...

  2. (一)Linux——Linux基本概念

    Linux是一种自由和开放源码的类UNIX操作系统,使用Linux内核.目前存在着许多不同的Linux发行版,可安装在各种各样的电脑硬件设备,从手机.平板电脑.路由器和影音游戏控制台,到桌上型电脑,大 ...

  3. spring boot和thrift、zookeeper建立微服务

    原文地址:http://www.cnblogs.com/skyblog/p/5535418.html Spring cloud适应于云端服务,也适用于企业信息化SOA建设.spring boot也是r ...

  4. json.Decoder vs json.Unmarshal

    128down voteaccepted It really depends on what your input is. If you look at the implementation of t ...

  5. 怎样启动JDBC Debug模式,打印JDBC诊断日志

    1.下载Debug版本号jar包      首先要下载一个Debug版本号的JDBC jar包,Debug版本号的jar包命名形式为jdbcX_g.jar(例如以下图所看到的).如Oracle11g的 ...

  6. spring reactor记录操作日志

    1.注册日志的类: @Configuration@EnableReactorpublic class ReactorConfig { /** * * 〈注册审计日志 Reactor〉 */ @Bean ...

  7. jvm参数设置和性能调优

    1.Java虚拟机运行时的数据区 2.常用的内存区域调节参数 -Xms:初始堆大小,默认为物理内存的1/64(<1GB):默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40% ...

  8. linux命名空间详解_转

    转自: Linux的命名空间详解--Linux进程的管理与调度(二) Linux Namespaces机制提供一种资源隔离方案. PID,IPC,Network等系统资源不再是全局性的,而是属于特定的 ...

  9. ubuntu下软件安装

    1. 软件源:ubuntu.cn99.com/ubuntu2. 安装vncviewer    sudo apt-get install vncviewer3. aptitude     sudo ap ...

  10. HibernateTools实现pojo类 数据库schma mapping映射的相互转换 二

    接着上一篇博客:HibernateTools实现pojo类 数据库schma mapping映射的相互转换 思路二:由数据库表,生成Mapping映射文件和POJO类. 尽管能够实现,但个人觉着先设计 ...