首页 > 资讯列表 > 编程/数据库 >> ASP/.NET

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

ASP/.NET 2011-05-19 20:05:08 转载来源: AS网站目录整理

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

使用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

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

标签: ASP.NET 中的 事务处理 异常 处理


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持