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 数据库编程事务使用示例


                    }
                }
            }

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

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

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

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

(0)
blank

相关推荐

  • PHP开发api接口安全验证的实例,值得一看

    PHP开发api接口安全验证的实例,值得一看

    2021年10月29日
  • HTTP协议

    HTTP协议

  • c/c++ 学习-open 函数

    c/c++ 学习-open 函数转自:http://blog.csdn.net/dong_007_007/article/details/16269021open函数用于打开和创建文件。以下是open函数的简单描述      #include       intopen(constchar*pathname,intoflag,…/*mode_tmode*/);   

  • 自制51单片机最小系统开发板[通俗易懂]

    自制51单片机最小系统开发板[通俗易懂]2.单片机最小系统介绍单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计

  • 2020年精心收集的十个Java开发网站

    2020年精心收集的十个Java开发网站不管谁手里都藏着些许自己觉得好用的网站,今天专门找大厂出来的同学同事觉得好用的网站分享给大家,如果这里有你没收藏还不知道觉得还蛮有用的网站可以给我点个赞,大家一起进步,一起学习,同时也可以分享你觉得好用实用的网站,分享快乐0.0好了,废话不多说,咋们上干货:一、GithubGitHub是一个面向开源及私有软件项目的托管平台,一个拥有数十亿行代码的网站,每天有数百万开发者聚集在一起,研究开源软件中存在的问题。对于我们程序猿来说,如果不想重复造轮子,就必须要站在巨人的肩膀上,那么巨人是谁呢?就是Gi

  • redis+springboot_redis部署

    redis+springboot_redis部署目录1、搭建环境2、测试Redis3、StringRedisTemplate3.1、介绍3.2、StringRedisTemplate常用操作3.3、StringRedisTemplate的使用4、RedisTemplate4.1、介绍4.2、RedisTemplate常用操作4.3、RedisTemplate的使用SpringBootData(数据)Redis中提供了RedisTemplate和StringRedisTemplate,其中StringRedisTemplate是RedisTem.

发表回复

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

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