(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中的事 务不能同事对多个数据库连接进行原子性的操作:如果在你的业务环境中 ...
随机推荐
- 20.Yii2.0框架多表关联一对多查询之hasMany
目录 新手模式 hasMany关联模式查询 新建mode层Article.php 新建mode层Category.php 新建控制器HomeController.php 新手模式 用上次的查询结果,作 ...
- python3与python2的编码问题
在讲这个问题之前,我们先说说unicode的工作原理.unicode包含了跟全球所有国家编码的映射关系,就是不管你用哪个国家的编码,unicode都能找到它在unicode中的编码.那么无论你用什么编 ...
- win7创建共享给windows和linux机器
win7创建共享给windows和linux机器 1 防火墙 允许网络共享 由nod32负责防火墙设置 2 修改主机名 3 修改工作组和域 4 设置共享用户和权限 5 查看本机所有共享
- STVP烧录教程
可以运行独立的烧录软件ST Visual Programmer (STVP)进行STM8芯片烧录.运行“开始”->ST Toolset->Development Tools -> S ...
- UVa 1452 递推 Jump
约瑟夫变形,先计算出3个数时,最后三个数字的编号. 然后以这三个数为起点,就可以递推出n个数对应的最后三个数字的编号. 递推公式都是一样的. #include <iostream> #in ...
- 03008_ServletContext
1.什么是ServletContext? (1)ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象 内部封装是该web应用的信息,Servle ...
- Selenium WebDriver- 操作JavaScript的Alert弹窗
弹层和弹框是有区别的,弹框是那种完全没样式的框子:弹层是可以直接看到html的,有样式 #encoding=utf-8 import unittest import time from seleniu ...
- Linux 使用 yum 查看安装的软件包
Linux系统下yum命令查看安装了哪些软件包: $yum list installed //列出所有已安装的软件包 yum针对软件包操作常用命令: 1.使用YUM查找软件包 命令:yum searc ...
- pat 1037
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.”现在,给定 ...
- deque 类
题外: 'A' +1='B' 1.deque被称为双端队列,它也是一种顺序容器.可通过迭代器存取元素 ,也可以通过下标顺序 存取元素 for(i=0;i<d1.size();i++) { cou ...