ADO.NET 快速入门(七):使用数据库事务
数据库事务用于控制数据提交到数据库。例如,在标准的账户程序,账户的借贷必须同时完成。由于电脑偶尔发生故障(电力中断、网络中断,等等),可能有些记录被更新或者添加,但是另外一些没有。为了避免这些情况,可以使用事务。ADO.NET 中的事务和 ADO 一样,是在数据库级别处理:即数据库必须支持事务。
SqlConnection myConnection = new SqlConnection("server=(local);Integrated Security=SSPI;database=northwind");
SqlCommand myCommand = new SqlCommand();
SqlTransaction myTrans;
// 打开连接
myConnection.Open();
// 指定连接属性
myCommand.Connection = myConnection;
// 开始事务
myTrans = myConnection.BeginTransaction();
// 为一个挂起的本地事务指定事务对象
myCommand.Transaction = myTrans;
try
{
myCommand.CommandText = "DELETE FROM Region WHERE (RegionID = 100) OR (RegionID = 101)";
myCommand.ExecuteNonQuery();
// 插入第一条记录
myCommand.CommandText = "INSERT INTO Region (RegionID, RegionDescription) VALUES (100, 'MidWestern')";
myCommand.ExecuteNonQuery();
// 插入第二条记录
myCommand.CommandText = "INSERT INTO Region (RegionID, RegionDescription) VALUES (101, 'MidEastern')";
myCommand.ExecuteNonQuery();
// 提交数据库事务
myTrans.Commit();
Console.WriteLine("两条记录写入数据库!");
}
catch (Exception e)
{
// 从挂起状态回滚事务
myTrans.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("没有记录写入数据库!");
}
finally
{
// 关闭连接
myConnection.Close();
}
ADO.NET 快速入门(七):使用数据库事务的更多相关文章
- ADO.NET 快速入门(五):从 DataSet 更新数据库
该主题说明了如何使用 DataSet 在数据库中更新数据.你依然可以直接使用 SqlCommand 在数据库中插入.更新.和删除数据,记住这一点也很重要.理解“从数据库填充DataSet”涵盖的概念有 ...
- ADO.NET 快速入门(四):从数据库填充 DataSet
从数据库获取数据很容易,处理数据更容易.如果想要从数据库获取只进.只读的数据流结果集,你可以使用 DataReader 执行命令并且检索它.关于如何使用 DataReader,请参考:使用 OLE D ...
- ADO.NET 快速入门(十五):ADO 应用转换为 ADO.NET
这是一个已经移植到 .NET 的 ADO 应用的例子.也演示了单向.只读.快速 DataReader 的使用.它演示如何使用 DataView 类从 DataSet 获取一个 Table 和 操作一个 ...
- ADO.NET 快速入门(一):ADO.NET 概述
ADO.NET 概述 ADO.NET是改进的ADO数据访问模型用于开发可扩展应用程序.他是专门为可伸缩性.无状态和XML核心的web而设计的. ADO.NET使用一些ADO对象,如Connecti ...
- ADO.NET 快速入门(十四):使用 SQL Server 检索数据
SqlDataReader 类提供了一种从数据源读取数据记录只进流的方法.如果想使用 OLE DB 接口的数据库或者 SQL Server7.0 之前的版本,请参考文章:使用 OLE DB 检索数据. ...
- ADO.NET 快速入门(六):读写 XML
ADO.NET 和 DataSet 可以读写 XML Schema 和 XML.获取更多信息,请参考 How do I...Use XML and the DataSet? DataSet 的 S ...
- ADO.NET 快速入门(二):执行命令
Commands发出针对数据库的数据存储动作.例如,你可以执行一条命令插入或者删除数据.获取更多从数据库移动数据相关的信息,请参考“Update a Database from a DataSet”. ...
- springboot快速入门(五)——事务管理
一.入门 概念就不再赘述了,由于一般我们是通过service控制事务,这里给出注解式的示例: package com.example.demo; import com.example.demo.bea ...
- Solr.NET快速入门(七)【覆盖默认映射器,NHibernate集成】
覆盖默认映射器 默认情况下,SolrNet使用属性映射Solr字段. 但是,您可能需要使用另一个映射程序. 替换默认映射器取决于您如何设置库: 内置容器 如果使用默认的内置容器,可以在调用Startu ...
随机推荐
- apache开源项目-- Usergrid
Ed Anuff上周宣布第一版 Usergrid 的代码已经发布,Usergrid 是一款适用于移动和富客户端应用的综合性平台.Ed 认为,良好的移动性指的是将设备中运行应用的良好交互带到云中,其中既 ...
- 多线程程序设计学习(3)immutable pattern模式
Immutable pattern[坚不可摧模式] 一:immutable pattern的参与者--->immutable(不变的)参与者 1.1:immutable参与者是一个 ...
- RubyWin32Api Win32OLE
#ruby提供了多种运行外部程序的方法 #1.%x %x不需要使用引号包含. #2. system方法 #3.exec类似system但是会中断当前的代码执行 #system和exec不能捕获执行程序 ...
- eclipse设置自定义快捷键
eclipse有很多强大且人性化的功能,而各项功能有时又隐藏得比较深(需要点击数次菜单才能找到),而系统提供的快捷键有时比较难记住甚至根本没有提供快捷键时,就需要自己手动设置快捷键了.设置方法有两种, ...
- 保护眼睛,开启浏览器的夜间模式 顺便学下!important的作用
打开笔记本程序,复制以下代码 *{background-image: none !important; background: none !important; background:#333333 ...
- HDU 4325-Flowers(线段树+离散化)
题意: 给出每个花开花的时间段,每询问一个时间点输出该时间点开花的数量 分析: 线段树的区间更新,单点查询,但发现时间很大,没法存区间,就想到了离散化. 离散化就是把要处理的数据统一起来重新标号. # ...
- Redrain仿酷狗音乐播放器开发完毕,发布测试程序
转载请说明原出处,谢谢~~ 从暑假到现在中秋刚过,我用duilib开发仿酷狗播放器大概经历了50天.做仿酷狗的意图只是看原酷狗的界面比较漂亮,想做个完整一些的工程来练习一下duilib.今天把写好的程 ...
- maven学习系列教程,第一课(web项目的搭建)
1.现在一般eclipse都已经装好了maven板块,无需自行下载安装,所以我们的第一步就是新建一个maven project 2地址使用默认的就行 3这边筛选一下,选择webapp 4. 5.建好后 ...
- java类加载与初始化
第一段: class A{ public A(){ this.list(); } public void list(){ System.out.println("in a list..&qu ...
- SCAU 1138 代码等式
1138 代码等式 时间限制:500MS 内存限制:65536K提交次数:59 通过次数:21 题型: 编程题 语言: 无限制 Description 一个代码等式就是形如x1x2...xi=y ...