`
leonardleonard
  • 浏览: 772717 次
社区版块
存档分类
最新评论

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

阅读更多

刘彦青编译 来自:yesky

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

  什么是事务?

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

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

  下面是一个事务的例子:

[SQL SERVER7.0 or SQL SERVER2000]
 BEGIN TRAN
  INSERT INTO PRODUCT(PRODUCTID, PRODUCTNAME) VALUES("0001", "KEYBOARD")
  UPDATE PRODUCT SET PRICE=12 WHERE PRODUCTID= "0002"
  IF (@ERROR>0)
   ROLLBACK
  ELSE
 COMMIT

  什么是异常处理?

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

  [c#]

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

如何实现事务?

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

[Store Procedure]
CREATE PROCEDURE PRODUCT_SAVE( AS
DECLARE
(@USERID CHAR(5),
@LOCATION VARCHAR(50),
@RETURNS INT OUTPUT
)
BEGIN TRAN
UPDATE ADDRESS SET LOCATION=@LOCATION WHERE USERID=@USERID
IF (@@ERROR>0)
BEGIN
@RETURNS=-1 /* Fail to Update */
ROLLBACK
END
ELSE
@RETURNS=0 /* Succeed to update */
COMMIT

RETURN @RETURNS


[Web Application in C#]
int values;
DBClass dbc=new DBClass(); // 使用new命令生成一个数据库类
values=dbc.updatedb("0001", "23 Rain Street"); //And call its function member to update record
if (values==0)
Lable_message.text= "Update successfully";
else
Lable_message.text= "Sorry, can not update this record, please contact your DBA."

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

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

[Web Applicaion in C#]
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=’23 rain street’ where userid=’0001’";
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();
}

  需要注意的是,如果使用OleDb类而不是Sqlclient类来定义SQL命令和连接,我们就必须使用OleTransation来定义事务。
分享到:
评论

相关推荐

    ASP.Net事务和异常处理

    包括邵志东讲ASP.Net事务和异常处理的视频文件、pdf、文档及源代码。讲解了事务处理简介、事务处理的方法、异常处理简介及异常处理技术。

    ASP.NET事务和异常处理.

    ASP.NET事务和异常处理实例,对希望掌握ASP.NET事务和异常的学者很有用!~

    ASP.NET事务和异常处理 PDF

    讲座内容: 事务和异常处理是整个程序开发过程中必然要考虑的问题,那么在编写ASP.NET应用程序时,如何进行事务和异常处理呢?在本次讲座中,我们将给大家详细介绍这方面的知识。 <br/> <br/>课程讲师:...

    ASP.NET事务和异常处理 Demo

    讲座内容: 事务和异常处理是整个程序开发过程中必然要考虑的问题,那么在编写ASP.NET应用程序时,如何进行事务和异常处理呢?在本次讲座中,我们将给大家详细介绍这方面的知识。 <br/> <br/>课程讲师:...

    ASP.NET事务和异常处理 Video.part2

    讲座内容: 事务和异常处理是整个程序开发过程中必然要考虑的问题,那么在编写ASP.NET应用程序时,如何进行事务和异常处理呢?在本次讲座中,我们将给大家详细介绍这方面的知识。 <br/> <br/>课程讲师:...

    ASP.NET事务和异常处理 Video.part1

    讲座内容: 事务和异常处理是整个程序开发过程中必然要考虑的问题,那么在编写ASP.NET应用程序时,如何进行事务和异常处理呢?在本次讲座中,我们将给大家详细介绍这方面的知识。 <br/> <br/>课程讲师:...

    ASP.NET事务以及异常出路--vs2003

    ASP.NET事务以及异常出路,ASP.NET事务以及异常出路

    Asp.Net事务和异常处理 (三)

    事务处理是一组组和成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性。 如果在事务过程中没有遇到错误,事务中的所有修改都将永久成为数据库中的一部分,如果遇到...

    Asp.Net事务和异常处理 (一)

    事务处理是一组组和成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性。 如果在事务过程中没有遇到错误,事务中的所有修改都将永久成为数据库中的一部分,如果遇到...

    Asp.Net事务和异常处理 (二)

    事务处理是一组组和成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性。 如果在事务过程中没有遇到错误,事务中的所有修改都将永久成为数据库中的一部分,如果遇到...

    asp.net开发常用整理集合

     Asp.net中My97DatePicker4.2日期的使用  Asp.net中DataList控件添加删除  Asp.net获取请求的用户信息IP地址  获取世界IP地址库显所在城市信息  MySQL事务处理  SQL内部常用函数  为gridview“删除”...

    Asp.net Core 3.1基于AspectCore实现AOP实现事务、缓存拦截器功能

    最近想给我的框架加一种功能,就是比如给一个方法加一个事务的特性Attribute,那这个方法就会启用事务处理。给一个方法加一个缓存特性,那这个方法就会进行缓存。 这个也是网上说的面向切面编程AOP。 AOP的概念也很...

    ASP.NET基础控件-教程

    内容:  Asp.net页面内传参数... Asp.net中My97DatePicker4.2日期的使用  Asp.net中DataList控件添加删除  Asp.net获取请求的用户信息IP地址  获取世界IP地址库显所在城市信息  MySQL事务处理  SQL内部常用函数

    asp.net知识库

    在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...

    ASP.NET应用视频教程

    ASP.NET应用视频教程-------ASP.NET事务和异常处理

    spring.net中文手册在线版

    11.7.在ASP.NET中的使用技巧 11.7.1.显示验证错误 11.7.1.1.配置错误显示类 第十二章. 使用Spring.NET进行面向方面的编程 12.1.简介 12.1.1.AOP基本概念 12.1.2.Spring.NET AOP的功能 12.1.3.Spring.NET的AOP代理 ...

    ASP.NET 2.0网络开发详解 源代码 和Net电子书

    第7章 处理异常和错误 第8章 XML编程 第9章 应用程序部署 第10章 时间跟踪系统 4.dot NET学习电子书\dot NET数据库开发技术(154页) 第1章 操作数据库 第2章 使用数据库 第3章 使用数据绑定和DataSet 第4章 SQL ...

    3.ASP.NET 2.0 入门经典(第4版) [压缩包1/10]

    本书全面介绍了ASP.NET 2.0的新特性和各方面的编程知识,是ASP.NET初学者以及想了解ASP.NET 2.0新技术的读者的理想参考书。该书从初版、1.0版、1.1版到现在的2.0版,内容更加完善,技术更加实用。.. 本书...

    亮剑.NET深入体验与实战精要2

    3.4 ASP.NET编程中的技巧 142 3.4.1 页面之间传值的7种方法 142 3.4.2 get与post方法的区别 146 3.4.3 ASP.NET服务器控件和 HTML控件的区别 146 3.4.4 Server.Transfer和Response.Redirect的区别 148 3.4.5 刷新...

Global site tag (gtag.js) - Google Analytics