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

转载 2012年03月26日 22:35:02

使用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事务处理和异常处理

使用SQL-Transaction类和.NET提供的异常处理机制,我们就能够以一种可靠的方式处理数据库运行中的问题和发现系统异常。这篇小文章将解释事务处理和异常处理的概念和用法。  什么是事务?  事...
  • xiangyyy
  • xiangyyy
  • 2007年07月04日 08:12
  • 429

Spring的事务处理机制及JAVA异常

在java中,异常分为两种,运行时异常(也就是uncheckException)和已检查异常checkException,运行时异常包括平常遇到的各种异常,如空指针异常,数据格式异常等一系列异常,这种...
  • zhousenshan
  • zhousenshan
  • 2016年02月23日 18:56
  • 865

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

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

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

下面是一个有关的例子:      [Web Applicaion in C#]      SqlConnection myConnection = new SqlConnection("Data So...
  • liuxianhong
  • liuxianhong
  • 2006年09月21日 13:41
  • 591

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

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

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

 使用SQL-Transaction类和.NET提供的异常处理机制,我们就能够以一种可靠的方式处理数据库运行中的问题和发现系统异常。这篇小文章将解释事务处理和异常处理的概念和用法。  什么是事务?  ...
  • cxzhq2002
  • cxzhq2002
  • 2006年08月25日 14:51
  • 604

分布式系统常见的事务处理机制

为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。举例来说,当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副本就能继续运行下去。另外一个例子,当访问...
  • kkkloveyou
  • kkkloveyou
  • 2017年04月14日 00:11
  • 3605

ASP.NET MVC下基于异常处理的完整解决方案

EntLib的异常处理应用块(Exception Handling Application Block)是一个不错的异常处理框架,它使我们可以采用配置的方式来定义异常处理策略。而ASP.NET MVC...
  • rise51
  • rise51
  • 2016年04月17日 08:46
  • 743

Asp.net三种事务处理

事务处理是在数据处理时经常遇到的问题,经常用到的方法有以下三种总结整理如下: 方法1:直接写入到sql 中 在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBA...
  • jiangfei009003
  • jiangfei009003
  • 2014年11月05日 15:32
  • 1597

.NET开发中的事务处理大比拼 之 ASP.NET页面级别的事务

ASP.NET事务可以说是在.NET平台上事务实现方式最简单的一种,你仅仅需要一行代码即可。在aspx的页面声明中加一个额外的属性,即事务属性Transaction="Required",它有如下的值...
  • sven_xu
  • sven_xu
  • 2015年06月02日 09:12
  • 973
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET中的事务处理和异常处理
举报原因:
原因补充:

(最多只允许输入30个字)