SqlTransaction 数据库编程事务使用示例

SqlTransaction 数据库编程事务使用示例在提交或回滚SqlTransaction时,应始终使用Try/Catch进行异常处理。如果连接终止或事务已在服务器上回滚,则Commit和Rollback都会生成InvalidOperationException。 下面的示例创建一个SqlConnection和一个SqlTransaction。此示例还演示如何使用BeginTransaction、Commit和…

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

在提交或回滚 SqlTransaction 时,应始终使用 Try/Catch 进行异常处理。如果连接终止或事务已在服务器上回滚,则 Commit 和 Rollback 都会生成 InvalidOperationException。

 

下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。

using
 System;

using
 System.Configuration;

using
 System.Data.SqlClient;

using
 System.Transactions;

SqlTransaction 数据库编程事务使用示例


protected
 
void
 Page_Load(
object
 sender, EventArgs e)
        {

            
            

using
 (SqlConnection conn 
=
 
new
 SqlConnection(ConfigurationManager.ConnectionStrings[

ConnStr

].ToString()))
            {

                conn.Open();
                SqlTransaction _transaction 

=
 conn.BeginTransaction();                  
                

try

                {

                    SqlCommand _cmd 

=
 
new
 SqlCommand(

Insert Into T_Test(F_Name) values(@Name)

,conn);
                    _cmd.Parameters.Add(

new
 SqlParameter(

@Name



Test1

));
                    _cmd.Transaction 

=
 _transaction;
                    _cmd.ExecuteNonQuery();

                    _cmd.Parameters.Clear();
                    _cmd.Parameters.Add(
new
 SqlParameter(

@Name



Test2

 
+
 
new
 String(

2


100
)));
                    _cmd.ExecuteNonQuery();

//
F_Name为Nvarchar(50),这里会报错



                    _transaction.Commit();

                    Response.Write(

二条记录已经成功入库!

);
                }
                

catch
 (Exception ex)
                {

                    Response.Write(


发生错误:

 
+
 ex.Message.ToString());
                    

try

                    {

                        _transaction.Rollback();
                        Response.Write(


<br/>事务已成功回滚!

);
                    }
                    

catch
 (Exception ex2)
                    {

                        Response.Write(


<br/>回滚失败:

 
+
 ex2.Message.ToString());
                    }
                }
                _transaction.Dispose();
            }
        }  

 

如果换成时下流行的Linq To Sql写法,大致如下:

using
 (DataContext context 
=
 
new
 DataContext(connStr))
            {

                SqlConnection conn 
=
 
new
 SqlConnection();                   
                

if
 (context.Connection 
!=
 
null
 
&&
 context.Connection.State
!=
ConnectionState.Open) context.Connection.Open();

                context.Transaction 
=
 context.Connection.BeginTransaction();
                

try

                {

                    User user 

=
 
new
 User();
                    user.Name 

=
 

aaaa

;
                    users.Add(user);
                    context.SubmitChanges();

                    users.Remove(users.Single(u 
=>
 u.Name 
==
 

aaaa

));
                    context.SubmitChanges();

                    context.Transaction.Commit();
                }
                
catch

                {

                    

try

                    {

                        context.Transaction.Rollback();
                    }
                    

catch
 
                    {

                        

//
SqlTransaction 数据库编程事务使用示例


                    }
                }
            }

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142705.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • openssl安装与使用

    文章目录1、OpenSSL简介2、OpenSSL安装3、加密技术介绍4、openssl命令4.1摘要命令4.2、对称加密命令4.3非对称加密命令4.3.1生成私钥4.3.2提取公钥4.3.3利用公私钥加密、解密数据4.3.4数字签名4.3.5数字证书1、OpenSSL简介OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux、Windows、MacOS等多种平台。  OpenSSL最早的版本在1995年发布,1998年后开始由OpenS

    2022年4月6日
    59
  • Oracle 根据dbf文件的数据恢复[通俗易懂]

    Oracle 根据dbf文件的数据恢复[通俗易懂]数据丢失真的是很严重的事情,此处记录下一次数据恢复的历程。背景:服务器上,Oracle数据库数据丢失,开发机上,有数据,但是因为系统坏了(太巧了),先进去把dbf文件备份出来,然后重做了系统(全盘格式化的,不要问我为什么不是只有c盘,售后做的,所以才有了后面数据恢复困难的事情)。数据恢复方法:1.闪回2.根据dbf恢复3.使用工具prm-dul方案一:数据闪回。…

    2022年7月17日
    12
  • C# FileStream简单介绍和使用

    C# FileStream简单介绍和使用本章讲述:FileStream类的基本功能,以及简单示例;1、引用命名空间:usingSystem.IO;2、注意:使用IO操作文件时,要注意流关闭和释放问题!强力推荐:将创建文件流对象的过程写在using当中,会自动帮助我们释放资源;使用try{}catch(Exceptionex){}进行一次捕获;3、FileStream操作字节,可以操作任何类型…

    2022年7月21日
    10
  • java设计模式之建造者模式

    本文属于23种设计模式系列。 介绍的是建造者模式。

    2022年3月11日
    42
  • 流量分析入门

    流量分析入门前言个人一直对流量分析…正好看到了一些相关书籍资料,自己向前辈师傅们学习以后整理一些资料来总结一下互联网五层模型在计算机网络这门课中介绍了OSI模型及互联网五层模型:在我们使用抓包软件进行流量分析的时候,抓到的包往往含有数据链路层、网络层、传输层,应用层四个部分,其中一部分在传递到不同层面的时候会被丢弃。我们的wireshark抓的包工作在数据链路层,而burpsuite抓的http包则工作在应用层wireshark的用法打开wireshark,可以看到这是我们的一些接口,我现在用的是Wif

    2022年5月1日
    36
  • c++使用json_qt读写json文件

    c++使用json_qt读写json文件目录前言一、json文件简介1、json文件2、json与其他存储数据方式比较二、C++操作json文件1、jsoncpp库下载2、C++从字符串中读取json3、C++从文件中读取json4、C++写入json文件5、主函数附:jsoncpp库配置1、解压并转移2、配置属性3、配置项目前言json文件是比较轻量级的文件,格式简单…

    2022年10月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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