数据库操作方式:ADO.NET、微软企业库AdoHelper的封装 事务以及查询方法的区别 问题。 5C
  1. ADO.NET 方式加事务
    public DataTable GetUsers()
    {
    SqlTransaction trans = null;
    SqlConnection con = new Sqlconnection("数据库连接语句");
    try
    {
    con.Open();
    trans = con.BeginTransaction();
    SqlCommand com = new SqlCommand();

    com.CommandText = @"数据库语句 条件=@变量";
    SqlParameter para = new SqlParameter("变量","值");
    com.Parameters.Add(para);
    com.CommandText=com.CommandText;

    com.Connection=con;
    com.Transaction=trans;
    com.ExecuteNonQuery();//执行方式自己选择
    trans.Commit();//执行提交事务

    }catch
    {
    trans.Rollback();//如果前面有异常则事务回滚
    }
    finally
    {
    con.Close();
    }
    }

    2.企业库方式加事务
    Database db = CreateDatabase();
    SqlConnection con = new Sqlconnection("数据库连接语句");
    SqlTransaction trans = connection.BeginTransaction();
    result = db.ExecuteNonQuery(command, trans)

企业库封装方法

public virtual int ExecuteNonQuery(DbCommand command, DbTransaction transaction);

问题:
1.企业库的方式是不是我们只需传入事务对象 事务的提交和回滚它会帮我们自动完成 是否是将其封装到ExecuteNonQuery(command, trans)这个方法内部了 如果不是这样 那么为什么要传入一个事务对象 以及是否在返回结果后自动帮我们关闭连接释放资源

2.如果企业库没有帮我们自动完成事务的提交与回滚,那么我们要加事务的话还得想ADO.NET的方式在ExecuteNonQuery(command, trans)这个方法调用后 再添加提交事务和回滚事务的代码 该怎么写

0

1个回答

回答你这个问题最直接的方式就是找源代码来看:
https://github.com/MicrosoftArchive/data-access-application-block/blob/master/source/Src/Data/Database.cs
ExecuteNonQuery调用了PrepareCommand,里面有command.Transaction = transaction;
而ADO.NET在调用ExecuteNonQuery的时候遇到错误,会自动回滚。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ado.net操作数据库基本函数,封装成SqlHelper类
将基础的操作封装成SqlHelperrnrnnamespace sanceng.DALrn{rn    public static class SqlHelperrn    {rn        private static string constr = ConfigurationManager.ConnectionStrings["service"].ConnectionString;rnrn
ADO.NET 封装的数据库帮助类
C# ADO.NET封装的数据库帮助类
C# ADO.NET_数据库操作的封装
1.App.configrnrnrnrn   rn      rn  rn  rn    rn          providerName="System.Data.SqlClient" />rn  rnrnrnrnrn2.SQLHelper.csrnrnusing System;rnusing System.Collections.Generic;rnusing System.Linq;rnus
微软企业库中的事务处理
微软企业库中的事务处理
AdoHelper 支持多数据库操作的封装
AdoHelper 支持多数据库操作的封装
VB.NET学习笔记:ADO.NET操作ACCESS数据库——ADO.NET事务处理
事务由执行的单个命令或一组命令组成。 通过事务可以将多个操作合并为单个工作单元。 如果在事务中的某一点发生故障,则所有更新都可以回滚到其事务前状态。n例如,假设应用程序执行两个任务。 首先使用订单信息更新表。 然后更新包含库存信息的表,将已订购的商品记入借方。 如果任何一项任务失败,则这两个更新将回滚。n事务的作用:n一致性:同时进行的查询和更新彼此不会发生冲突,其它用户不会看到发生了变化但尚未提...
ADO.NET操作数据库(四)
主要内容: 连接查询、左表、右表、内连接、外连接、笛卡尔积、on子句数据筛选、自连接、存储过程、连接查询、模糊查询、视图、T-SQL编程、全局变量、局部变量、事务、系统存储过程、用户自定义存储过程、ado.net调用存储过程、触发器。nnn快捷键:格式化快捷键 ctrl+K,Ynnnnn详细内容:n1、连接查询n连接查询:关键是看两张表的主外键关系n内连接:inner joi
将Ado.net中的事务抽离到业务层
最近在实现一个简单的审批功能,涉及到一些事务的处理。一个管控台项目,我使用的是最简单的三层架构。使用的是Ado.net操作数据库。先看一段我们经常用到的事务代码:SqlConnection con = new Sqlconnection("数据库连接语句");ncon.Open();nvar trans = con.BeginTransaction();ntryn{n SqlCommand
C#ado.net数据库操作封装
C#ado.net数据库操作封装,提供多种数据库的操作切换
DBHelper、DataHelper、ADO数据库操作类
废话不多说,直接上用法:查询:var dt = db.GetDataTable("select * from t1,t2 where t1.id=t2.t1_id and t2.id=@id", new { id });        分页:(排序的字段必须要在 select 的字段里面)var res = db.GetPagingTable($@"select * from t1 where i...
ADO.NET操作数据库(二)
核心内容:SqlHelper的封装、配置文件的使用、事件监视器、ado.net数据库连接池、可变参数、异常捕获、SQL漏洞注释攻击、使用带参数的sql语句、本文中出现的类的用法。n一:关于SqlHelper的封装n使用SqlHelper工具类,帮助我们操作:n1)经常爆出的一个错:类型初始化设定项引发异常,在配置文件中找不到对应名称的配置。n2)SqlHelper工具类的使用特别好,一定要
C#设计模式-单例模式以及应用之ADO.NET的简单封装
什么是单例模式:单例模式也就是保证一个类只有一个实例的一种实现方法罢了(设计模式其实就是帮助我们解决实际开发过程中的方法, 该方法是为了降低对象之间的耦合度,然而解决方法有很多种,所以前人就总结了一些常用的解决方法为书籍,从而把这本书就称为设计模式),下面给出单例模式的一个官方定义:确保一个类只有一个实例,并提供一个全局访问点。示例代码:using System;nusing System.Col...
微软企业库的使用
1、config里面配置rn   rn     rn    rn  rn rnrnrn C#后台代码:rn   Database db = DatabaseFactory.CreateDatabase("name");//创建数据库实例rn   string sql = @"select * from table where username=@username";rn   DbCommand c
C#.Net底层操作数据库及常用功能封装类
常用数据库操作功能的封装。 消息功能封装 常用加密解密方式的封装 邮件发送功能的封装 数据字符串功能的封装 等等
Ado.Net连接数据库的两种方式
一.使用Command和DataReader对象:rn(1).首先连接数据库有两种模式:rn1.混合连接模式 该模式需要输入登录名和密码rn代码如下:rnstring Myconnection ="server=服务器名称(如果是本地也可以用.来代替);database=连接的数据库名称;";uid=登录名;pwd=密码";rnSqlConnection conn=new SqlConnectio
ADO.Net操作数据库DBhelper可直接使用
ADO.Net操作数据库DBhelper可直接使用,链接SQL数据库,详细代码加注释
ADO.NET 访问数据库
前言nn最近一直在学习数据库,那么数据库是如何和客户端建立了连接呢?怎么就可以把数据库的数据传送到客户端或客户端的数据是如何存到数据库中的呢?...
基于微软企业库的数据库访问层CodeSmith模板
可以直接生成微软企业库方式访问Sql Server数据库的数据库操作类以及实体类。
C# 微软企业库(官方)
微软企业库 Enterprise Library 5.0.msi Enterprise Library 5.0 - Source Code.msi
【ADO.NET】数据库查询SQLCommand方法汇总
前言n          我们都知道要对数据库进行操作,首先要通过Sqlconnection来连接数据库,在通过SqlCommand来操纵数据库。但是SqlCommand中有很多的方法,初学者可能很糊涂,完全不明白是干什么的。在此小编给大家综合汇总一下如何对数据库进行操纵。n一、创建SqlCommand对象   可以通过三种方式创建Sqlcommand对象。 1. 用NEW关键字直接创建
ADO.NET数据查询方法
返回单一结果的查询方法ExecuteScalar()方法的使用 //编写连接字符串n string connString = "Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=aaa999a9";n //创建连接对象n SqlConnection conn = new SqlConnectio
ADO.NET操作数据库(一)
using System;nusing System.Collections.Generic;nusing System.Data.SqlClient;nusing System.Linq;nusing System.Text;nusing System.Threading.Tasks;nnnamespace 数据库操作n{n class Programn {n stat
用一个网站做例子验证关于微软企业库和Entity Framework
这几天我都在折腾这个磁力搜索引擎:IBMID.COM主要是想借此来研究下微软企业库和EF之前的效率如何,我现在是把两个技术都集成进去。微軟企業庫 n 企業庫(Enterprise Library)是微軟的模式與實踐(Patterns & Practices)的下一代應用程序塊(Application Blocks)。該企業庫的設計思想是為了協助開發商解決企業級應用開發過程中所面臨的一系列共...
SqlHelper工具类(封装了对数据库的各种操作的方法)
文件封装了所有的关于数据库的操作. 我的这个SqlHelper.cs 是同学给我的版本,可能与其它人的不太一样,但是变动不大.要连接数据库。。SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法, 工具类写的时候很费劲,但一旦写完之后,以后用起来就方便多了,所以给大家分享一下,技术宅的人其实还不是很多,我们都需 努力、共勉
C# 之 ADO.NET数据库操作连接模式
连接模式,一般是四大对象nnSqlConnectionn         nnSqlCommand        #通过SQL操作的对象nnSqlParameter         #防止SQL注入而使用的参数化SQL语句,配合SqlCommand (可以不用)nnSqlDataReader       #如何SqlCommand执行的是查询语句,这个是获取的结果集对象nn nn如下nnn/* 以...
ado.net执行多条语句,使用事务
执行多条非查询语句,使用事务,可放在SqlHelp类。笔记,只是自己看,高手请绕过。。。rnprotected void Page_Load(object sender, EventArgs e)rn{rn if (!IsPostBack)rn {rn Hashtable htb = new Hashtable();rn st...
C#-ADO.net连接数据库-进行增删改查操作
C#-ADO.net连接数据库-进行增删改查操作
SQL SERVER-Ado.net 实现事务方法二
using System;nusing System.Collections.Generic;nusing System.Configuration;nusing System.Data.SqlClient;nusing System.Linq;nusing System.Text;nusing System.Threading.Tasks;nnnamespace TransationDemon{...
基于ADO.NET的三层架构实现(修改SQL参数后可使用)
这款三层架构实现了BLL、DAL、Model,用SQLHelper与SQL Server通信。这款架构只需要修改SQL参数就可以使用,具有方便快捷的特点,既可以用于C#语言的项目开发,也可以用于教学。
ADO与EF性能对比
在OSChina里下载了一个Smark的ORM框架,然后写了个DEMO与EF一起运行,得到如果结果nn在之前做项目中,用的是EF框架,开发过程没感觉到有什么性能问题。等把项目部门到客户机中实际运行后,数据达到了3万以上更新数据库就变慢了,紧接着查询也相应变慢,达到10万就更明显了,甚至还影响到插入。nEF开发过程的确省了不少事,但带来的后果也是很严重的。n总结:开展新项目之前必须先估算出项
分布式事务 (ADO.NET)
事务是一组相关的任务,作为独立于其他任务的独立单元成功(提交)或失败(中止)。分布式事务是影响多个资源的事务。要提交分布式事务,所有参与者都必须保证对数据的任何更改是永久的。不论系统崩溃或是发生其他无法预料的事件,更改都必须是持久的。即使只有一个参与者无法保证这一点,整个事务也将失败,在事务范围内对数据的任何更改均将回滚。使用 System.Transactions在 .NET Framework...
asp.net学习总结——ADO.net(对Sql Server进行操作的数据访问类)
ADO.net(对Sql Server进行操作的数据访问类)
ADO.NET操作MySQL数据库
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghannn前言nn ADO.NET包括5大对象,分别是Connection、Command、DataReader、DataSet、DataAdapter,使用ADO.NET访问数据库有两个步骤:建立数据库连接、读取或更新数据。读取数据主要有两种方法:Command与DataReader、Da...
Oracle数据库以及微软企业库基本使用方法(对比两种区别)
Oracle数据库以及微软企业库基本使用方法 对比两种操作数据库的区别
一个简单的ADO.NET C# 数据库操作实例
本篇文章以 ADO.NET 访问SQL SERVER 数据库为例,介绍一下ADO.NET C# 对数据库的操作语法。连接其他数据库时,可能语法上稍微有一点点差别,但步骤与SQL SERVER 想类似。
封装数据库增删改查方法
BaseDaonn封装好后,我们称这个类为BaseDao.以后任何实现类要操作数据库,都需要继承这个BaseDao.而且,这个BaseDao并不仅限这3个方法,其他常用操作应该在这基本的增删改查方法再进行封装,同样也封装在这个BaseDao类里,这样会减少我们很多重复性的操作.nnnn增删改操作的封装nnnn /**n *@Author: zsbn *@Description...
ADO.NET 封装的数据库操作类库
ADO.NET 封装的数据库操作类库,可以方便的拓展,适用于不同的数据库。
MySql基于ADO.NET方式访问数据库ADOHelper封装MySqlHelper
/// rn    /// The MySql class is intended to encapsulate high performance, scalable best practices for rn    /// common uses of the MySqlClient ADO.NET provider.  It is created using the abstract fact
对ASP.net和ADO.net区别的一点点理解
ADO.net在百度百科上是这么解释的:    ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。    ado.net可让开发人员以一致的方式存取资料来源(例如 SQL Server 与 XML...
ADO.NET封装代码
一、在App.config配置文件中,配置链接字符串nnn n n nn二、SqlHelper类n class SqlHelpern {n //读取配置文件中的连接字符串n private static string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].C
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库操作培训 数据库操作培训