sqltransaction 如何隔离多个事务(什么是数据库事务什么是数据库脏数据并发控制技术有哪些数据库恢复)

:暂无数据 2026-04-26 23:45:02 0

sqltransaction 如何隔离多个事务(什么是数据库事务什么是数据库脏数据并发控制技术有哪些数据库恢复)

这篇文章给大家聊聊关于sqltransaction 如何隔离多个事务,以及什么是数据库事务什么是数据库脏数据并发控制技术有哪些数据库恢复对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

什么是数据库事务什么是数据库脏数据并发控制技术有哪些数据库恢复

事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元,也是恢复和并发控制的基本单位。事务处理技术主要包括数据库恢复技术和并发控制技术。本篇博文主要总结下并发控制技术。
事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。一般来说,一个程序中包含多个事务。
ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:
A:原子性(Atomicity): 事务是一个或多个行为捆绑在一起组成一个单独的工作单元,事务中的动作要不都发生,要不都不发生。
C:一致性(Consistent): 即在事务开始之前和结束之后,数据库的完整性约束没有被破坏。
 数据库层面:在一个事务执行前和执行后,数据会符合你设置的约束(例如unique约束,foreign key约束,check约束等)和触发器设置.由数据库进行保证.

.NET C#事务处理

SqlConnection con = new SqlConnection(ConnectionDb.conStr);//获取数据库连接
con.Open();//打开连接
SqlTransaction sqltra = con.BeginTransaction();//开始事务
SqlCommand cmd = new SqlCommand();//实例化
cmd.Connection = con;//获取数据连接
cmd.Transaction = sqltra;//,在执行SQL时,
try
{
string sql = "insert into OA_MEETING(meeting_id,meeting_name,meeting_title,start_time,end_time,announce_time,explain,reg_emp_id,emc_emp_id,par_emp_id,rep_emp_id,participate,MEETING_TYPE,PROJ_ID,WORK_ID)values(’" + id + "’,N’" + meetname + "’,N’" + meettitle + "’,’" + starttime + "’,’" + endtime + "’,N’" + djtime + "’,N’" + meetinfo + "’,’" + empid + "’,’" + meetperson + "’,’" + lname + "’,’" + writer + "’,’" + ccname + "’,’" + hidsort.Value + "’,’" + proid + "’,’" + workid + "’)";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
//string meetid = id;
int size = 0;
HttpFileCollection files = HttpContext.Current.Request.Files;
//遍历上传文件窗体所有Html控件
foreach (string NameId in Request.Form)
{
//找到控件ID名前四位为"txt_"的文件说明文本框
if (NameId.Substring(0, 4) == "ttx_")
{
//获取文本说明
if (Request.Form != "")
{
string Explain = Request.Form;//获取txt文本说明
HttpPostedFile pstfile = files;
string fileName = "";
string fileExtension = "";
fileName = System.IO.Path.GetFileName(pstfile.FileName);//上传的文件全名
fileExtension = System.IO.Path.GetExtension(fileName);//扩展名
string NewName = fileName.Remove(fileName.LastIndexOf("."));//去掉后缀名的文件名
string sql1 = "select isnull(max(app_id),0) from OA_MEETING_APPENDIX";

int idd = Convert.ToInt32(objConnction.getString(sql1)) + 1;
ua.Folder_Exists("Meeting");
string filepath = "..\\AtthFiles\\Meeting\\Meeting_" + idd.ToString() + fileExtension;
string sqlstr1 = "insert into OA_MEETING_APPENDIX(APP_ID,MEETING_ID,EXPLAIN,APP_PATH) values(’" + idd + "’,’" + id + "’,N’" + Explain + "’,N’" + filepath + "’)";
cmd.CommandText = sqlstr1;
int num = cmd.ExecuteNonQuery();
if (num 》 0)
{
pstfile.SaveAs(Server.MapPath("..\\AtthFiles\\Meeting\\Meeting_" + idd.ToString() + fileExtension));
size = pstfile.ContentLength / 1024;
objDocument.InsertDoc(5, idd, Explain, "", "", DateTime.Now.ToString("yyyy-MM-dd"), Convert.ToInt32(HempID.Value), filepath, size, hidwork.Value, hidpro.Value);
}
}
}
}
sqltra.Commit();
}catch(Exception ex)
{
sqltra.Rollback();
}

VBA 怎样执行多个SQL语句

Dim conn as New SqlConnection(连接字符串)
Dim cmd as new sqlcommand
cmd.CommandType = Text 或者SqlProcedure
cmd.Connection = conn
cmd.TimeOut= 30
cmd.CommandText = "Update ........." 或者 "Select ..... "

’’ 用来执行操作用这个
cmd.ExecuteNoQuery
’’ 得到数据用这个
Dim table as new datatable
Dim ad as new DataAdapter (cmd)
ad.Fill(table)
控件.DataSource = table
如果是多条操作的话,需要用到SqlTransaction, 即事务操作。
Dim Tran as SqlTransaction = conn.BeginTransaction
...
....
’’ 执行完毕后
Tran.Commit()
’’如果执行有错误
Tran.Rollback()

ASP.NET中的事务处理和异常处理

 使用SQL Transaction类和 NET提供的异常处理机制 我们就能够以一种可靠的方式处理数据库运行中的问题和发现系统异常 这篇小文章将解释事务处理和异常处理的概念和用法

   一 什么是事务?

  事务处理是由以一个单一的逻辑单位完成的一系列操作 它可以由一系列的SQL语句 SELECT INSERT UPDATE DELETE组成 如果在该单位包含的操作执行完毕后没有发生错误 那么它对数据库所作的改变就是永久的了 如果一旦有错误发生 它就不会对数据库作任何修改或改变

  要定义一个事务 需要使用Begin tran命令 在这一命令之后的任何语句都将被认为是事务的一部分 命令Commit用来完成事务 并使事务对数据库所作的修改成为永久的 Rollback命令用来取消一个事务 并还原事务对数据库所作的修改

  下面是一个事务的例子

 BEGIN TRAN  INSERT INTO PRODUCT(PRODUCTID PRODUCTNAME) VALUES( KEYBOARD )  UPDATE PRODUCT SET PRICE= WHERE PRODUCTID=   IF (@ERROR》 )   ROLLBACK  ELSE MIT

   二 什么是异常处理?

  开发一种错误消息处理机制 并向用户提供有用的 清楚 有意义的信息也是编程人员的任务之一 异常处理就是能够提供这一服务的一种机制 一旦事务失败 服务器就会向系统发出一个用于帮助用户发现并修复邦联的数据库错误信息 我们可以异常处理功能来获取这种异常信息 并修复出现的故障 异常处理功能的用法如下所示

try{//数据库操作命令}catch (Exception e){?//如果有异常发生 这部分语句将被执行}finally{?//无论是否有异常发生 这部分语句都会得到执行}    三 如何实现事务?

   在一个存储过程中编写事务语句 并使用下面的控制发现是否有错误发生 返回相应的值 互联网应用程序会根据返回的值显示正确的和容易理解的错误信息 下面是一个事务的例子

CREATE PROCEDURE PRODUCT_SAVE( ASDECLARE(@USERID CHAR( ) @LOCATION VARCHAR( ) @RETURNS INT OUTPUT)BEGIN TRANUPDATE ADDRESS SET LOCATION=@LOCATION WHERE USERID=@USERIDIF (@@ERROR》 )BEGIN@RETURNS= /* Fail to Update */ROLLBACKENDELSE@RETURNS= /* Succeed to update */MIT

RETURN @RETURNS

int values;DBClass dbc=new DBClass(); // 使用new命令生成一个数据库类values=dbc updatedb( Rain Street ); //And call its function member to update recordif (values== )Lable_message text= Update successfully ;elseLable_message text= Sorry can not update this record please contact your DBA

  上面的例子非常适合DBA等对数据库编程非常熟悉的编程人员 他们更喜欢在存储过程中完成异常处理功能 如果对数据库编程不太熟悉 则可以采取下面的方法

   在 NET框架中 我们可以使用SqlTransaction类定义一个事务 此后 我们就可以使用mit或rollback函数控制事务 当然了 我们也可以使用 NET框架提供的异常处理功能获取系统异常 下面是一个有关的例子

SqlConnection myConnection = new SqlConnection( Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI; );myConnection Open();

SqlTransaction myTrans = myConnection BeginTransaction(); //使用New新生成一个事务SqlCommand myCommand = new SqlCommand();myCommand Transaction = myTrans;

try{myCommand CommandText = Update Address set location= rain street where userid= ;myCommand ExecuteNonQuery();myTrans Commit();Console WriteLine( Record is udated );}catch(Exception e){myTrans Rollback();Console WriteLine(e ToString());Console WriteLine( Sorry Record can not be updated );}finally{myConnection Close();}

lishixinzhi/Article/program/net/201311/15760

SQL同时插入多张表

通过事务来实现,也就是说,SqlCommand的CmdText属性在一个方法当中可以赋多个SQL语句
SqlConnection sqlConnection = new SqlConnection();
...初始化连接
// 开启事务
SqlTransaction sqlTransaction = sqlConnection.BeginTransaction();
// 将事务应用于Command
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.Transaction = sqlTransaction;
sqlCommand.CmdText=第一个sql语句
sqlCommand.ExcuteNoneQuery();
sqlCommand.CmdText=第二个sql语句
sqlCommand.ExcuteNoneQuert();
try
{
// 利用sqlcommand进行数据操作
...
// 成功提交
sqlTransaction.Commit();
}
catch(Exception ex)
{
// 出错回滚
sqlTransaction.Rollback();
}
如果在执行第二次SQL语句是出错了,那么就会到Catch异常中,执行回滚,那么第一次执行的也同样回滚了,所以必须2个都一行成功才往数据库中提交
这里是用了2次SQL语句,如果你想用1个语句同时操控2个表的话,就要用到存储过程或者是触发器,存储过程和触发器你如果想知道的话加QQ吧:312976625,我给你讲.

OK,关于sqltransaction 如何隔离多个事务和什么是数据库事务什么是数据库脏数据并发控制技术有哪些数据库恢复的内容到此结束了,希望对大家有所帮助。

sqltransaction 如何隔离多个事务(什么是数据库事务什么是数据库脏数据并发控制技术有哪些数据库恢复)

本文编辑:admin

更多文章:


send out用法及例句(send out是什么意思)

send out用法及例句(send out是什么意思)

各位老铁们好,相信很多人对send out用法及例句都不是特别的了解,因此呢,今天就来为大家分享下关于send out用法及例句以及send out是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 20:30

全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)

全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)

大家好,关于全球新冠肺炎疫情背景下航运发展很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决

2026年9月7日 17:10

matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)

matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)

大家好,关于matlab求解带字母参数方程组很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数的知识点,相信应该可以解决大家的一些困惑和问题,

2026年9月7日 16:30

oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)

oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)

本篇文章给大家谈谈oracle中的循环语句,以及下面哪个不是oracle程序设计中的循环语句 a for对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 15:30

多表查询怎么做(Excel技巧:如何多表同步筛选)

多表查询怎么做(Excel技巧:如何多表同步筛选)

各位老铁们好,相信很多人对多表查询怎么做都不是特别的了解,因此呢,今天就来为大家分享下关于多表查询怎么做以及Excel技巧:如何多表同步筛选的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 15:10

服装店网站网页设计(服装网站建设目标设计要看甲方)

服装店网站网页设计(服装网站建设目标设计要看甲方)

“服装店网站网页设计”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看服装店网站网页设计(服装网站建设目标设计要看甲方)!

2026年9月7日 14:10

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

大家好,电脑里2个系统怎么删除一个相信很多的网友都不是很明白,包括电脑开机显示有两个系统,如何删除一个也是一样,不过没有关系,接下来就来为大家分享关于电脑里2个系统怎么删除一个和电脑开机显示有两个系统,如何删除一个的一些知识点,大家可以关注

2026年9月7日 12:20

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

大家好,今天小编来为大家解答以下的问题,关于苹果手机代码大全,恢复更新固件iOS未知错误代码解决大全这个很多人还不知道,现在让我们一起来看看吧!

2026年9月7日 10:20

scrollthrough意思(“scroll”是什么意思)

scrollthrough意思(“scroll”是什么意思)

今天给各位分享“scroll”是什么意思的知识,其中也会对“scroll”是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 08:00

怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)

怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)

本篇文章给大家谈谈怎么激活keygen,以及注册机如何激活cad2008一个简单激活cad2008的方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站

2026年9月7日 06:30

最近更新

热门文章

dessert(dessert是什么意思)
2026-05-03 12:45:03 浏览:7
标签列表