为了方便移到了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#事务处理的更多相关文章

  1. In-Memory:内存优化表的事务处理

    内存优化表(Memory-Optimized Table,简称MOT)使用乐观策略(optimistic approach)实现事务的并发控制,在读取MOT时,使用多行版本化(Multi-Row ve ...

  2. 读书笔记--SQL必知必会20--管理事务处理

    20.1 事务处理 使用事务处理(transaction processing),通过确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性. 如果没有错误发生,整组语句提交给数据库表 ...

  3. EntityFramework 事务处理

    默认情况下,当EF调用SaveChanges()时,会把生成的所有SQL命令“包”到一个“事务(transaction)”中,只要有一个数据更新操作失败,整个事务将回滚. 在多数情况下,如果你总在数据 ...

  4. Java事务处理

    Java事务处理总结     一.什么是Java事务   通常的观念认为,事务仅与数据库相关.   事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(co ...

  5. PHP与MYSQL事务处理

    /*MYSQL的事务处理主要有两种方法.1.用begin,rollback,commit来实现begin 开始一个事务rollback 事务回滚commit 事务确认2.直接用set来改变mysql的 ...

  6. 已经过事务处理的 MSMQ 绑定(转载)

    https://msdn.microsoft.com/zh-cn/biztalk/ms751493 本示例演示如何使用消息队列 (MSMQ) 执行已经过事务处理的排队通信. 注意 本主题的末尾介绍了此 ...

  7. SQLite剖析之事务处理技术

    前言 事务处理是DBMS中最关键的技术,对SQLite也一样,它涉及到并发控制,以及故障恢复等等.在数据库中使用事务可以保证数据的统一和完整性,同时也可以提高效率.假设需要在一张表内一次插入20个人的 ...

  8. PHP系统声明式事务处理

    转自:http://www.jianshu.com/p/34261804bc45 1.数据库事务 事务(Transaction)是并发控制的基本单位.所谓的事务,它是一个操作序列,这些操作要么都执行, ...

  9. 事务处理-回滚(转账操作)(转自http://www.cnblogs.com/void-m/p/6143540.html)

    JDBC事务处理-四大原则 原子性一致性隔离性持久性 第一步:实现转账操作 假设在账户中,盖伦有余额5000元,赵信有余额2000元, 盖伦要向赵信转账1000元. 1 2 3 4 5 6 7 8 9 ...

  10. .NET分布式事务处理

    在进行数据持久化的时候,我们会经常用到事务处理.一般情况下,ADO.NET中的事务处理就能够满足我们的需要,但是,ADO.NET中的事 务不能同事对多个数据库连接进行原子性的操作:如果在你的业务环境中 ...

随机推荐

  1. Python基础——字符串操作

    运算符 加(+)   str2="hello"+"python" print(str2) 乘(*)   str1="hello python" ...

  2. 请问batch_normalization做了normalization后为什么要变回来?

    请问batch_normalization做了normalization后为什么要变回来? 请问batch_normalization做了normalization后为什么要变回来? - 莫驚蟄的回答 ...

  3. Linux学习-仅执行一次的工作排程

    atd 的启动与 at 运作的方式 要使用单一工作排程时,我们的 Linux 系统上面必须要有负责这个排程的服务,那就是 atd 这个玩 意儿. 不过并非所有的 Linux distributions ...

  4. UML结构与解析——BUAA OO第四单元作业总结

    UML与解析架构 UML是什么 统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编 ...

  5. HDU 2242 双连通分量 考研路茫茫——空调教室

    思路就是求边双连通分量,然后缩点,再用树形DP搞一下. 代码和求强连通很类似,有点神奇,=_=,慢慢消化吧 #include <cstdio> #include <cstring&g ...

  6. UVa 10110 Light, more light

    开始所有的灯是灭的,不过我们只关心最后一个灯. 在第i次走动时,只有编号为i的倍数的灯的状态才会改变. 也就是说n有偶数个约数的时候,最后一个灯的状态不会改变,也就是灭的. n有奇数个约数的时候也就是 ...

  7. 深入Python底层,谈谈内存管理机制

    说到内存管理,就先说一下垃圾回收吧.垃圾回收是Python,Java等语言管理内存的一种方式,说的直白些,就是清除无用的垃圾对象.C语言及C++中,需要通过malloc来进行内存的申请,通过free而 ...

  8. Githun&HEXO建站小记

    title: 建站小记 date: 2018-03-04 11:10:54 updated: 2018-03-06 12:00:00 tags: [hexo,next,建站,学习,前端技术,折腾,博客 ...

  9. ThreeJs 3D 全景项目开发总结

    本文来自网易云社区 作者:唐钊 项目背景 那是在一个毫无征兆的下午,我还沉浸在 vue 的世界中,突然编辑跑过来说N的新官网想做一些3D全景的东西,一开始其实我的内心是拒绝的,一是没怎么实质性做过 W ...

  10. web安全测试---WebScarab工具介绍

    1.1      Webscarab [功能] WebScarab是一个用来分析使用HTTP和HTTPS协议的应用程序框架.其原理很简单,WebScarab可以记录它检测到的会话内容(请求和应答),并 ...