(6)C#事务处理
为了方便移到了ADO.NET分类里
事务的主要特征是,任务要么全部完成,要么都不完成
事务常用于写入或更新数据库中的数据。将数据写入文件或注册表也可以使用事物。
ADO.NET不支持跨越多个连接的事物,它总是关联到一个连接上的本地事务。
1.引入dll ----- System.Transactions
2.引入命名空间
using System.Transactions
1.引入dll---- System.Data.OracleClinet
2.引入命名空间
using System.Data.OleDb;
不带事物的多表增删改
string str = ConfigurationManager.AppSettings["con_MES"];
OleDbConnection conn = new OleDbConnection(str);
using (conn)
{
conn.Open();
try
{
if (conn.State == ConnectionState.Open)
{
string sql1 = "insert into fruits (name, place, amount) values ('椰子', '海南', '500')";
string sql2 = "update pingtable set targetip='192.168.55.55' where id=1102";
OleDbCommand command1 = new OleDbCommand(sql1, conn);
OleDbCommand command2 = new OleDbCommand(sql2, conn);
command1.ExecuteNonQuery();
command2.ExecuteNonQuery();
MessageBox.Show("成功插入");
} }
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
MessageBox.Show("关闭连接");
单个Connection连接事务的多表增删改
string str = ConfigurationManager.AppSettings["con_MES"];//连接字符串
OleDbConnection conn = new OleDbConnection(str);
using (conn)
{
conn.Open();
OleDbTransaction OT=conn.BeginTransaction();//打开连接后才能赋值给事物
try
{
if (conn.State == ConnectionState.Open)
{
string sql1 = "insert into fruits (name, place, amount) values ('椰子', '海南', '500')";
string sql2 = "update pingtable set targetip='192.168.55.55' where id=1102"; OleDbCommand command1 = new OleDbCommand(sql1, conn, OT);
OleDbCommand command2 = new OleDbCommand(sql2, conn, OT);
command1.ExecuteNonQuery();
command2.ExecuteNonQuery();
OT.Commit(); //事务一定要有提交和回滚
MessageBox.Show("成功插入");
} }
catch (Exception ex)
{
OT.Rollback();
MessageBox.Show(ex.Message);
}
finally
{
conn.Close(); //using原本可以关闭连接,这里提前手动加了个关闭是为了尽早的关闭连接,这个finally方法可以不写
MessageBox.Show("关闭连接");
}
}
抽出模板
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open();
OracleTransaction transaction;
transaction = connection.BeginTransaction();
OracleCommand command = connection.CreateCommand();
try
{
transaction.Commit();
}
catch (Exception e)
{
transaction.Rollback();
throw e;
}
finally
{
connection.Close();
}
}
(6)C#事务处理的更多相关文章
- In-Memory:内存优化表的事务处理
内存优化表(Memory-Optimized Table,简称MOT)使用乐观策略(optimistic approach)实现事务的并发控制,在读取MOT时,使用多行版本化(Multi-Row ve ...
- 读书笔记--SQL必知必会20--管理事务处理
20.1 事务处理 使用事务处理(transaction processing),通过确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性. 如果没有错误发生,整组语句提交给数据库表 ...
- EntityFramework 事务处理
默认情况下,当EF调用SaveChanges()时,会把生成的所有SQL命令“包”到一个“事务(transaction)”中,只要有一个数据更新操作失败,整个事务将回滚. 在多数情况下,如果你总在数据 ...
- Java事务处理
Java事务处理总结 一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(co ...
- PHP与MYSQL事务处理
/*MYSQL的事务处理主要有两种方法.1.用begin,rollback,commit来实现begin 开始一个事务rollback 事务回滚commit 事务确认2.直接用set来改变mysql的 ...
- 已经过事务处理的 MSMQ 绑定(转载)
https://msdn.microsoft.com/zh-cn/biztalk/ms751493 本示例演示如何使用消息队列 (MSMQ) 执行已经过事务处理的排队通信. 注意 本主题的末尾介绍了此 ...
- SQLite剖析之事务处理技术
前言 事务处理是DBMS中最关键的技术,对SQLite也一样,它涉及到并发控制,以及故障恢复等等.在数据库中使用事务可以保证数据的统一和完整性,同时也可以提高效率.假设需要在一张表内一次插入20个人的 ...
- PHP系统声明式事务处理
转自:http://www.jianshu.com/p/34261804bc45 1.数据库事务 事务(Transaction)是并发控制的基本单位.所谓的事务,它是一个操作序列,这些操作要么都执行, ...
- 事务处理-回滚(转账操作)(转自http://www.cnblogs.com/void-m/p/6143540.html)
JDBC事务处理-四大原则 原子性一致性隔离性持久性 第一步:实现转账操作 假设在账户中,盖伦有余额5000元,赵信有余额2000元, 盖伦要向赵信转账1000元. 1 2 3 4 5 6 7 8 9 ...
- .NET分布式事务处理
在进行数据持久化的时候,我们会经常用到事务处理.一般情况下,ADO.NET中的事务处理就能够满足我们的需要,但是,ADO.NET中的事 务不能同事对多个数据库连接进行原子性的操作:如果在你的业务环境中 ...
随机推荐
- Python入门:Python基础笔记
(C语言:)C语言是相对C++.C#.Java等语言更接近底层,并且一些硬件编程都可以使(只能使用)C语言.另外C语言学起来相对困难,因为涉及到指针,指针也是语言接近底层语言的一个特征.目前编写较大的 ...
- token验证机制
最近在vue-cli项目实现登录的过程中用到了token验证,在此总结如下 1. 登录时,客户端通过用户名与密码请求登录 2. 服务端收到请求去验证用户名与密码 3. 验证通过,服务端会签发一个Tok ...
- python3.6:DLL load failed:找不到指定的模块(from PyQt5 import QtCore)
本人小白搭建pyqt环境时遇到问题 运行代码 from PyQt5 import QtCore' 发现错误 ImportError: DLL load failed: 找不到指定的模块 这个问题折磨了 ...
- leetcode-14-basic-breadthFirstSearch
BFS: breadth first search 107. Binary Tree Level Order Traversal II 解题思路: 本来我是用map<int,int>存所有 ...
- 通过IAR工程文件查看对应IAR版本号
IAR使用技巧——如何使用合适的版本打开IAR工程 2014年07月05日 23:49:08 xukai871105 阅读数:12895 标签: IAR 更多 个人分类: 嵌入式ARM 0.前言 ...
- loadView、viewDidLoad及viewDidUnload的关系(转)
本文目录 一.loadView 二.viewDidLoad 三.viewDidUnload 四.三个方法的关系 标题中所说的3个方法,都是UIViewController的方法,跟UIViewCont ...
- RMQ原理及实现
RMQ(Range Minimum/Maximum Query),区间最值查询问题,是指:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值. 这里介 ...
- 水题:UVa213- Message Decoding
Message Decoding Some message encoding schemes require that an encoded message be sent in two parts. ...
- nova虚拟机镜像从创建到文件系统resize完整流程
1. 虚拟机镜像的创建和resize流程 nova创建虚拟机涉及的组件比较多,调用比较复杂,这里只列出跟虚拟机镜像创建相关的流程,方便理清虚拟机状态变化的整个流程. nova-api nova.api ...
- LA 3667 Ruler 搜索
题意: 给出\(n\)个长度,要设计一个有\(m\)个刻度的刻度尺,刻度尺的刻度从\(0\)开始. 使得任意一个长度都能被该刻度尺度量出来. 首先要使\(m\)最小,在\(m\)最小的前提下尺子的长度 ...