简介

事务,英文名称是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 loginuse logincreate 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. Oracle 数据库直接执行本地sql文件、sql脚本实例演示

    @ + sql 文件路径即可执行 sql 文件里的 sql 语句. 实例演示: 我要执行的 sql 文件路径是 C:\Users\Administrator\Desktop\delete.sql , ...

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

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

  3. PL/SQL 数据库连接工具的下载、安装与使用实例演示

    PL/SQL 工具的安装与使用 第一章:PL/SQL 工具的安装 ① PL/SQL 工具的下载与安装 ② PL/SQL 工具的 activate ③ PL/SQL 工具的使用演示 ④ PL/SQL 远 ...

  4. SQL Server 多实例下的复制

    SQL Server 多实例下的复制 原文:SQL Server 多实例下的复制 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建步骤(P ...

  5. 国产化达梦数据库数据迁移文档:oracle11g数据库转达梦8数据库实例演示

    Oracle 数据库转达梦数据库实例演示 第一章:达梦数据库用户数据准备 ① 直接执行 sql 语句创建用户(该步执行完可直接第二章) ② 使用工具创建用户 第二章:达梦数据库转库 oracle 转达 ...

  6. 国产化人大金仓数据库转库工具:oracle12c数据库转kingbase8.6人大金仓数据库实例演示

    oracle12c数据库转人大金仓数据库实例演示 第一章:数据准备 ① 人大金仓建库建用户 ② 人大金仓授权表空间 ③ 人大金仓创建 schema 表 第二章:转库演示 ① 转库工具准备 ② 创建源库 ...

  7. Java 技术篇-java连接并操作数据库实例演示,执行查询、插入、更新和删除操作

    Java 操作数据库 第一章:Java 代码四个类实现 ① 项目结构展示 ② 数据库连接类 ③ 数据库查询类 ④ 数据库更新类 ⑤ 数据库主类 第二章:查询和更新操作实例演示 ① 查询操作演示 ② 更 ...

  8. php 中curd表达啥,CURD语句的基本语法和PDO中操作数据表的基本步骤实例演示增删改查命令 2019年07月24日 23时10分...

    一.常用的CUR 最常用的就是: `CURD` 增删改查   它代表创建(Create).更新(Update).读取(Read)和删除(Delete)操作. 新增操作语法 * SQL规范: `INSE ...

  9. c#中connect函数_Flink算子使用方法及实例演示:union和connect

    Flink的Transformation转换主要包括四种:单数据流基本转换.基于Key的分组转换.多数据流转换和数据重分布转换.读者可以使用Flink Scala Shell或者Intellij Id ...

最新文章

  1. Python 列表 insert() 方法
  2. MySQL连接问题: MySQLNonTransientConnectionException:Communications link failure during rollback()
  3. Hbase集群搭建二(Hadoop搭建)
  4. 【学术相关】数学公式如何用Markdown优雅地写出来
  5. Gauss error function
  6. Ibatis - Open quote is expected for attribute {1} associated with an element type '
  7. 键盘发展简史:144年独孤求败的QWERT键盘
  8. mysql的extra,MySQL SQL优化-重点是 extra
  9. 使用JFreeChart实现基于Web的柱状图
  10. BZOJ2595: [Wc2008]游览计划(斯坦纳树,状压DP)
  11. android 5.0三星,转自【XDA】安卓(Android 5.0)L主题
  12. SSP控制寄存器SSPCON
  13. android 终端 核心,android模块/核心板用于手持终端应用,选几米物联。
  14. atitit.提升稳定性---hibernate 增加重试retry 机制解决数据库连接关闭
  15. 使用Jest对原生TypeScript项目进行UI测试
  16. pythonturtle编程_Python编程小记:turtle库
  17. Python中随机漫步的实现
  18. VMware Workstation安装教程
  19. pythoninstaller打包 其他电脑无法运行_Pyininstaller一个软件包故障坑,Pyinstaller,打包,失败,的...
  20. MC0108白给-MC0109新河妇荡杯

热门文章

  1. 科技巨头争相入局,卫星通信领域将迎来怎样的发展?
  2. color颜色十六进制编码大全
  3. 面试时如何回答为何离开老东家
  4. 深度解析布谷鸟过滤器(上篇)
  5. 如何实现文档在线预览
  6. 基于asp.net的园林绿化服务交易网站
  7. PERTII型热力供热管道——高效节能供热首选
  8. Java面试题Tomcat的优化经验
  9. Linux系统怎么下wps,在Linux系统中安装使用WPS的方法
  10. mongodb备份脚本