简介

事务,英文名称是transaction。是在对数据库进行管理操作过程中一个逻辑单位,由有限的操作序列构成。

其实这个概念很好懂,简单理解就是:事务就是在使用数据库中的一个操作,由一些操作放到一起构成一个完

整的事务。例如:坐火车。假如坐火车只有两个动作,买票,上车;这样的话坐火车就需要两个操作来完成,

买票、上车,现在将买票、上车都定义到这个坐火车的操作里面。这样的话就方便了,想坐火车就直接调用坐

火车操作就完成坐火车的操作了。这里的坐火车就是一个事务,这里还有一种情况就是买票成功了,但是没有

赶上火车,这时候我就需要把票给退了,退票这个操作就称为回滚。

特性

那到底什么才是数据库事务呢?就产生了数据库事务的四个特性,通过这四个特性我们更好的理解事务,也

能够反过来来辨别什么样的操作是事务。

数据库事务的特性简单来说就是ACID。

A(Atomic)翻译为中文就是原子性

原子就是不可分割(在最初的时期是这么理解的)。所以可以理解到事务就是一个整体,一旦执行就是

执行整个事务,要么就不执行。

C(Consistency)一致性

就是事务执行后,保证数据库的所有数据都从一个状态到另一个状态。用上面的例子,可以这样理解,

你上半身进了火车、坐好了;你的脚也要上火车、放好了(有点慎得慌)。但是是这个道理。

I(Isolation)隔离行

就是事务之间在执行的时候互补干扰,这里会提到一个并发控制的概念。什么是并发控制呢?并发控制

就是针对并发操作对数据操作异常的控制。举个例子,又是买火车票;小林和小李都去网上买票,还

剩5张,他俩11:11同时去买同一张,这样两个事务同时访问这个火车票,同时将剩余张改为4.这时候

实际上卖了2张,实际上剩了3张,而数据库中为4张,这就造成了数据的异常。怎么处理呢?有一个办

法,就是当你处理这个对象的时候,将这个对象锁定(lock),当完成事务后解锁(unlock)。只有当

对象的状态为unlock的状态时,才能够对这个对象进行访问。说了多了啊,简单扩展一下。嘿嘿

D(Durability),持久性

这个就更容易理解了。简单理解就是你的对数据库的操作一定是可以永久存在数据中的。

通过上述的讲解,我们简单了解了事务和事务的回滚以及事务的特性。下面我们通过另一个简单的小例子来从

代码层面上感受一下事务,顺便熟悉泛型的使用。

环境:vs 2010  sql 2008

项目测试:通过事务来更新、添加数据

创建数据库代码

 create database login

use login

create table login
(
username varchar(20),
userpwd varchar(20),
userlevel varchar(20),
)

界面

超级简单的界面,为了整体性,还是上传下,嘿嘿

客户端代码

private void btnExcuteSQLs_Click(object sender, EventArgs e)
{
List<string > strsql=new List<string>() ;
string strone = "insert into login values('aaa','aaa','aaa')";
string strtwo = "update login set userlevel ='12' where username='cfl' ";
strsql.Add(strone);
strsql.Add(strtwo );
try
{
ExcuteSQLs(strsql);
}
catch (Exception ee )
{ MessageBox.Show(ee.Message); throw new Exception(ee.Message );
//MessageBox.Show(ee.Message );
}
}
public void ExcuteSQLs(List<string> SQLStringList)
{
//建立连接数据库
SqlConnection conn = new SqlConnection("server=“ip”;database=login;uid=sa;pwd=123456;");
//打开数据库
conn.Open();
//建立执行数据操作命令对象
SqlCommand cmd = new SqlCommand(); //将数据库连接对象赋值给命令对象
cmd.Connection = conn; //执行事务
SqlTransaction tx = conn.BeginTransaction();
//将事务赋值给命令对象
cmd.Transaction = tx; try
{
//通过for循环遍历在泛型中的sql语句
for (int i = 0; i < SQLStringList.Count ; i++)
{
string strsql = SQLStringList[i].ToString();
//当字符串不为空,则执行
if (strsql.Length >1)
{
//传入将要执行的sql语句
cmd.CommandText = strsql;
//执行无参数化查询
cmd.ExecuteNonQuery();
}
}
//事务提交
tx.Commit();
}
catch (System .Data.SqlClient .SqlException e)
{
throw new Exception (e.Message );
}
}

总结

以上就是对SQL事务的一些理解和实践,总的来说。事务根据它本身的名字理解上就可以看出是用来执行

某一连串的对数据库的操作的,常用的就是一些多个sql语句的执行。上述中就是一个简单的例子,麻雀虽小五

脏俱全。里面有事务对SQL的封装,泛型的简单实用,以及如何向事务中传入参数等等一些基本的操作。与大

家分享。

SQL 事务及实例演示的更多相关文章

  1. sql 事务运用实例

    ------------------------------ create proc SaveFinancialProduct@FinancialName nvarchar(50),--产品名称@Yi ...

  2. oracle事务处理及实例演示jdbc操作批量删除

    事务 作为逻辑处理的基本单位,对于数据库操作来说由一条或者多条sql语句来构成.当然还有针对非数据库操作的,如在计算机中设置的还原点即是一个非常好的应用. 对于事务的基本性质在还有一篇中有所叙述:SQ ...

  3. sql事务(Transaction)用法介绍及回滚实例

    sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...

  4. MySQL基准测试(三)--开源工具与实例演示

    MySQL基准测试(三)--开源工具与实例演示 针对web应用 ab ab是一个Apache HTTP服务的基准测试工具. http_load http_load是一个针对Web服务器测试工具. JM ...

  5. SQL Server 多实例下的复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建步骤(Procedure) 注意事项(Attention) 二.背景(Contexts) ...

  6. JMeter学习-030-JMeter性能测试常用之事务控制器实例

    通常进行性能测试时,我们一般仅考虑主要的数据返回,不考虑页面渲染所需要的数据(例如:css.js.图片等).但当我们需要衡量打开一个页面(页面渲染完成)的性能时,我们就需要考虑完成页面渲染所需要的图片 ...

  7. sql事务的调用

    一.数据库的SQL USE [Text]GO/****** Object: StoredProcedure [dbo].[mon] Script Date: 2017-01-03 15:59:28 * ...

  8. SQL事务

    一.事务概念    事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是一个不可分割的工作逻辑单元.在数据库系统上执行并发操作时事务是作为最小的 ...

  9. 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-Web

    实例演示使用RDIFramework.NET 框架的工作流组件 进行业务流程的定义—请假申请流程-Web 参考文章: RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系 ...

随机推荐

  1. ASP.NET MVC进阶之路:深入理解Controller激活机制并使用Ioc容器创建对象

    本文标题说是"深入理解Controller"其实有点“标题党”的味道了.本篇只会探讨"Controller"的激活机制,也就是如何创建Controller的并调 ...

  2. nginx access_log 完全关闭

    最近在配置本地nginx开发环境时,发现一个问题,当server段不指定access_log时,并且http段中也未指定任何 access_log参数时,它会默认写到logs/access.log这个 ...

  3. HDU 3033 分组背包

    给出N个物品.M金钱.W种类 给出N个物品的性质:所属种类,花费.价值 求每一种类物品至少一个的前提下,所能购买到的最大价值 dp[i][k]表示在第i种物品.总花费为k的最大价值 dp[i][k]= ...

  4. pyfits例子

    下面是一个读入fits文件,画积分强度图,再把某个星表里的天体画到图上的python程序. ====================================================== ...

  5. 用ATL写简单的ActiveX控件 .

    我正在做的项目需要用读卡器来读数据,由于系统是B/S架构的所以只能把读卡器的驱动封装成一个无界面的ActiveX控件,这样web页面中的js代码才能访问读卡器其实做起来也挺简单的,我用的环境是VS20 ...

  6. ESRI Shapefiles (SHP)

    ESRI Shapefiles (SHP) Also known as ESRI ArcView Shapefiles or ESRI Shapefiles. ESRI is the company ...

  7. ※数据结构※→☆线性表结构(list)☆============单向循环链表结构(list circular single)(四)

    循环链表是另一种形式的链式存贮结构.它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环. 单循环链表——在单链表中,将终端结点的指针域NULL改为指向表头结点或开始结点即可. 循环链表的 ...

  8. CH BR13数学(啥?-a^b≡a^b mod phi(p)+phi(p)(mod p)(b>=phi(p))公式)

    啥? Beta Round #13 (数学专场) 背景 有人写了一个RSA加密给我玩. 描述 我赌5毛前面两题的内容也就开头几句话平时会用到. 还是做点具体的东西吧. 求c^d Mod N 输入格式 ...

  9. Deamon Thread 讲解

    The daemon thread's life cycle is same with the life cycle of the application which starts this daem ...

  10. android压缩解压zip文件

    网上各种方法的收集: 1.上次写了个解压缩功能,但有局限性,比如压缩文件xx.zip 里包括子目录的情况下,执行上次解压缩的功能就不能实现我们想要的效果,于是在网上参考了一下java的解压缩功能.对上 ...