ADO.NET中使用事务进行数据库读写的办法
使用事务一般是进行数据写入,数据读取一般是不需要这货的
第一种办法:
使用存储过程:
顾名思义,在存储过程中定义好变量,定义好事务开始,结束,错误回滚然后在ADO.NET中正常调用存储过程的方法就行
/// <summary>
/// 通过存储过程来使用事务
/// </summary>
/// <param name="conn">数据库链接</param>
/// <param name="id">传入的参数</param>
private void TransactionDB(SqlConnection conn, int id)
{
SqlCommand cmd = new SqlCommand("spAddOrderxxxx", conn);//第一个参数为存储过程名
cmd.CommandType = CommandType.StoredProcedure;//设置命令方式为存储过程 cmd.Parameters.Add("@CustomerID", SqlDbType.Int).Value = id;//设置参数 try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Trace.Write(ex.Message);
}
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
}
而事务提现在存储过程中
CREATE PROcedure [spAddxxxx]
@CustomerID int
AS
Begin Transaction
..........此处省略若干行
commit transaction
return ErroHandler:
rollback transaction
return
第二种方式:采用ADO.NET带有的事务处理方式(能对付不支持事务的数据库哦)
private void Transaction(SqlConnection conn)
{
SqlCommand cmd = new SqlCommand("xxxxx", conn);//xxxxx为SQL语句 SqlTransaction transaction = null; try
{
conn.Open();
transaction = conn.BeginTransaction();
cmd.Transaction = transaction;//命令绑定事务
cmd.ExecuteNonQuery();
cmd.CommandText = "xxxxxxxxxxyyyyy";//换个命令再来!
cmd.ExecuteNonQuery(); transaction.Commit();//OK,现在才开始执行哦
}
catch (Exception ex)
{
transaction.Rollback();//异常回滚
}
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
} }
结束,这就是使用事务的两种方法。在进行大量数据写入的情况下很适合用事务哦,具体原理~去翻SQL书吧。
ADO.NET中使用事务进行数据库读写的办法的更多相关文章
- 在传统的ADO.NET中使用事务
using (SqlConnection conn = new SqlConnection()) { SqlCommand cmd = conn.CreateCommand(); //启动事务 Sql ...
- Python中从SQL型数据库读写dataframe型数据
Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表格的形式储存,因此经常将sql数据库里的数据直接读取为dataframe,分析操作以后再将dataframe存到sq ...
- ADO.NET中使用事务
using (SqlConnection conn = new SqlConnection(k2ConnStr)) { SqlCommand cmd = new SqlCommand(sql, con ...
- 数据库事务及其EF中如何处理事务
一.基础知识 1) 使用事务级别ReadUnCommited 会产生脏读现像,意味着读取到的为UnCommited(未提交)的数据.怎么理解呢?在使用该隔离级别的事务开始后.更新了数据 ...
- ADO.NET 中的数据并发
当多个用户试图同时修改数据时,需要建立控制机制来防止一个用户的修改对同时操作的其他用户所作的修改产生不利的影响.处理这种情况的系统叫做“并发控制”.并发控制的类型通常,管理数据库中的并发有三种常见的方 ...
- SqlServer中的事务使用
一.事务的概念和特点 事务(transaction)是恢复和并发控制的基本单位. 事务的特点 原子性:事务是一个工作单元,要都成功,要么的失败 例子:A付款给B,A余额-100,B余额+100,只能都 ...
- Python 学习 第17篇:从SQL Server数据库读写数据
在Python语言中,从SQL Server数据库读写数据,通常情况下,都是使用sqlalchemy 包和 pymssql 包的组合,这是因为大多数数据处理程序都需要用到DataFrame对象,它内置 ...
- SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...
- SQL Server中的事务与其隔离级别之脏读, 未提交读,不可重复读和幻读
原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...
随机推荐
- MyGeneration 数据库驱动为空
重做系统后安装了MyGeneration 但是安装完成后发现驱动中没有驱动信息,查了下网上的解决方案发下下面的可以完美解决,特作备忘: The problem is because of multi ...
- libpomelo的cocos2d-x客户端使用总结
这几天看了libpomelo的cocos2dx客户端这是个聊天室,由2个场景构成,登录场景LoginScene,聊天场景ChatScene. 一. LoginScene 客户端是以Login场景来启动 ...
- JavaScript中的事件冒泡机制
事件冒泡机制 事件冒泡发生的条件:当为多个嵌套的元素设置了相同的事件处理程序,它们将触发事件冒泡机制.在事件冒泡中,最内部的元素将首先触发其事件,然后是栈内的下一个元素触发该事件,以此类推,直到到达最 ...
- 如何用chrome修改js代码,跳过网站等待时间
用chrome修改js代码 By Z.H. Fu 切问录 [maplewizard.github.io](http://maplewizard.github.io ) 网页中大部分的限制都是由js编写 ...
- Hadoop-安装过程-单虚拟机版(伪分布式)(Ubuntu13.04版本下安装)
由于新装的Ubutu默认情况下,系统只安装了SSH客户端,需要自行安装SSH服务端 如何确定是否安装了SSH服务端? 可以通过命令ssh localhost,结果如下,即未安装SSH服务端: 安装 ...
- 通过实例让你真正明白mapreduce---填空式、分布(分割)编程
本文链接:http://www.aboutyun.com/thread-8303-1-1.html 问题导读: 1.如何在讲mapreduce函数中的字符串等信息,输出到eclipse控制台?2.除了 ...
- maven 的各种命令
mvn clean : 清理旧的文件 mvn clean compile : 清理 .编译 mvn clean test : 清理 .编译 .测试 mvn clean package : ...
- chrome 在home下生成 libpeerconnection.log
chrome 在home下生成 libpeerconnection.log,比较烦恼. google了下,可以有方法绕过去,如下. /opt/google/chrome/google-chrome 找 ...
- HDU 5794 A Simple Chess (容斥+DP+Lucas)
A Simple Chess 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5794 Description There is a n×m board ...
- jquery easyui添加图标扩展
easyui中有很多通过iconCls="icon-reload"这样的属性引入小图标显示,当然我们也可以自己添加自己的小图标. 方式:1.我们可以在jquery easyui的文 ...