SqlTransaction.Dispose,RollBack ?「建议收藏」

SqlTransaction.Dispose,RollBack ?「建议收藏」一个体会记在此:SqlTransaction.Dispose 如果之前没有提交事务,譔方法就会调用RollBack(Willrollbackifnotcommited)。之前写的代码:using(SqlConnectionconn=dbo.CreateCo

大家好,又见面了,我是你们的朋友全栈君。

一个体会记在此:

SqlTransaction.Dispose 如果之前没有提交事务,譔方法就会调用RollBack(Will rollback if not commited )。

之前写的代码:

   using (SqlConnection conn = dbo.CreateConnection as SqlConnection)
            {
                if (conn != null && conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }

                SqlTransaction tran = conn.BeginTransaction();

                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran))
                {
                    try
                    {
                        bulkCopy.BatchSize = 50;
                        bulkCopy.DestinationTableName = "ekeyv2_unbind";
                        bulkCopy.BulkCopyTimeout = 60;

                        // 映射表结构
                        bulkCopy.ColumnMappings.Add("ekey_company", "ekey_company");
                        bulkCopy.ColumnMappings.Add("ekey_sn", "ekey_sn");
                        bulkCopy.ColumnMappings.Add("unbind_status", "unbind_status");
                        bulkCopy.ColumnMappings.Add("retry_times", "retry_times");
                        bulkCopy.ColumnMappings.Add("create_time", "create_time");
                        bulkCopy.ColumnMappings.Add("user_id", "user_id");
                        bulkCopy.ColumnMappings.Add("account", "account");
                        bulkCopy.ColumnMappings.Add("ekey_type", "ekey_type");

                        bulkCopy.WriteToServer(table);

                        tran.Commit();
                        isSuccess = true;

                    }
                    catch 
                    {
                        tran.Rollback();
                        isSuccess = false;
                    }
                }

                if (conn.State != ConnectionState.Closed)
                {
                    conn.Close();
                }

                 conn.Dispose();
          }

 

 

写事务可以节的写为:

  using (SqlConnection conn = dbo.CreateConnection as SqlConnection)
            {
                if (conn != null && conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }

                SqlTransaction tran = conn.BeginTransaction();

                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran))
                {
                    bulkCopy.BatchSize = 50;
                    bulkCopy.DestinationTableName = "ekeyv2_unbind";
                    bulkCopy.BulkCopyTimeout = 60;

                    // 映射表结构
                    bulkCopy.ColumnMappings.Add("ekey_company", "ekey_company");
                    bulkCopy.ColumnMappings.Add("ekey_sn", "ekey_sn");
                    bulkCopy.ColumnMappings.Add("unbind_status", "unbind_status");
                    bulkCopy.ColumnMappings.Add("retry_times", "retry_times");
                    bulkCopy.ColumnMappings.Add("create_time", "create_time");
                    bulkCopy.ColumnMappings.Add("user_id", "user_id");
                    bulkCopy.ColumnMappings.Add("account", "account");
                    bulkCopy.ColumnMappings.Add("ekey_type", "ekey_type");

                    bulkCopy.WriteToServer(table);
                }

                tran.Commit();
            }

 

注意:using(){},出了using,conn就会调用Dispose,故这里不用RollBack.

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136708.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux编辑文本(vim)时跳转到最后一行和第一行及相关指令

    linux编辑文本(vim)时跳转到最后一行和第一行及相关指令

  • 蓝牙4.2对比蓝牙5.0_蓝牙 5.0 4.0区别

    蓝牙4.2对比蓝牙5.0_蓝牙 5.0 4.0区别目前市场上依然有大量蓝牙4.0/3.0/2.1/2.1+EDR产品存在,从自拍器,遥控器到各种智能设备,因其功能够用,价格低廉,受到快消类产品客户的亲昵,而工业类,汽车类应用,BT4.0的产品依然当道,究其原因,稳定,够用,供货好,当然价格不贵。但如果说蓝牙5之前蓝牙解决的是单点连接的可穿戴式设备与手机互联的问题,那么蓝牙5就是解决多点互联IoT物联网的问题。

  • r软件的下载与安装_R语言怎么安装

    r软件的下载与安装_R语言怎么安装一、R软件下载下载地址:https://cran.r-project.org/图1R软件下载页面下载之后是.exe执行文件,不是zip压缩格式文件,可以直接点击安装。二、R软件安装过程一直向下执行,直到安装完毕。最后一步是设置系统环境变量:三、Rstudio下载及安装过程下载地址:https://www.rstudio.com/products/rstudio/downl…

  • git 修改用户名以及邮箱_注册github账号

    git 修改用户名以及邮箱_注册github账号1、查看命令gitconfig–local–list2、查看当前用户名gitconfiguser.name3、查看邮箱gitconfiguser.email4、修改用户名gitconfiguser.namexxx5、修改邮箱gitconfiguser.emailxxx

  • linux文件重命名rename「建议收藏」

    linux文件重命名rename「建议收藏」linux下rename提供了有效的方法来处理重命名1.修改后缀名(eg.将当前目录下以.log为后缀的文件为以.txt为后缀)rename.log.txt*.logorrename’s/.log$/.txt/’*.log2.删除后缀名(eg.将当前目录下.txt文件的后缀)rename’s/.txt$//’*.txt3.添加后缀名(eg.给当前目录下的

  • html幻灯片图片切换效果代码,javascript实现图片切换的幻灯片效果源代码[通俗易懂]

    html幻灯片图片切换效果代码,javascript实现图片切换的幻灯片效果源代码[通俗易懂]网页上有许多图片切换的幻灯片效果,它们大多用flash实现,那javascript能不能实现他们呢,当然可以,我自己写了一个,和大家一同分享废话少说,看代码sx.activex.imagefade={init:function(imga,fadeint,fadeoutt){varti=newArray();for(vari=0;iti[i]=newImage();ti[i].src=img…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号