(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中的事 务不能同事对多个数据库连接进行原子性的操作:如果在你的业务环境中 ...
随机推荐
- 使用kickstart + pxe 部署无人值守安装
1.作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装. 常规的安装系统方法: 光盘安装系统:一个服务器DVD内置光驱百 ...
- Windows7_64位 NVIDIA 卡 OpenCl环境配置
序 最近做一个项目需要用到OpenCL,由于之前没有接触过,所以在环境配置第一关就遇到了一些问题,查阅很多资料才配置完成,现在记录如下,希望给一些童鞋一些帮助. 整个步骤也很简单: 了解系统配置,选择 ...
- CentOS 7 安装 配置 Nginx + PHP
. CentOS 7 下配置 yum 安装 Nginx. 进入/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vim ngi ...
- 2018 Multi-University Training Contest 10 CSGO(HDU - 6435)(最远曼哈顿距离)
有 n 种主武器,m 种副武器.每种武器有一个基础分数k种属性值 X[i] . 选出一种主武器 mw 和一种副武器 sw,使得两种武器的分数和 + 每个属性的差值尽量大.(参考下面的式子) 多维的最远 ...
- bash数组操作-定义/初始化/赋值…
数组: 连续的多个独立内存空间,每个内存空间相当于一个变量 数组元素:数组名+索引 索引:从0开始编号 声明数组: declar ...
- hdu4864不是一般的贪心
题目表达的非常清楚,也不绕弯刚开始以为最大权匹配,仔细一想不对,这题的数据双循环建图都会爆,只能先贪心试一下,但一想贪心也要双循环啊,怎么搞? 想了好久没头绪,后来经学长提醒,可以把没用到的先记录下来 ...
- HDU 4781 Assignment For Princess 构造
题意: 构造一个\(N(10 \leq N \leq 80)\)个顶点\(M(N+3 \leq M \leq \frac{N^2} {7})\)条边的有向图,要满足如下条件: 每条边有一个\([1,M ...
- [转] vuex最简单、最直白、最全的入门文档
前言 我们经常用element-ui做后台管理系统,经常会遇到父组件给子组件传递数据,下面一个简单的例子,点击按钮,把弹框显示变量数据通过子组件的props属性传递,子组件通过$emit事件监听把数据 ...
- 理解Linux虚拟文件系统VFS
当前,除了linux标准的文件系统Ext2/Ext3/Ext4外,还有很多种文件系统,比如reiserfs, xfs, Windows的vfat NTFS,网络文件系统nfs 以及flash 文件系统 ...
- SVM 与 LR的异同
LR & SVM 的区别 相同点 LR和SVM都是分类算法. 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的. LR和SVM都是监督学习算法. LR和SVM ...