ASP
  项目合作 | 广告服务 | 联系我们 | 友情链接 | 链接代码 | 短信服务 | 给我留言 | 返回首页                    
设为首页
加入收藏
ASP技术 | ASP.NET技术 | JSP技术 | Servlet技术 | PHP技术 | JS技术 | C#技术 | Java技术 | B/S应用 | B/S论坛 | 下载区
 
 自定义DataGrid分页设置
 ASP.NET中使用Caching
 一个文件上传的类
 ASP.NET中在线用户统计
 网站间共享数据的WebService
 ASP.NET里的事务处理
 VS.NET下web项目源代码管理
 用TreeView实现树菜单
 在DataGrid中创建一个弹出式窗.
 有关DataGrid显示数据的问题
 让Calendar在页面调用时才显示.
 在web.config中建立数据库连接.
 实时天气及24小时天气预报
 数据库中图片存储及读取
 如何在窗体和窗体之间传送数据.
 利用ASP.NET来访问Excel文档
 使用嵌套的Repeater控件
 用asp.net画饼图
 实现DataList控件的分页
 用ASP.NET加密口令
 使用RangeValidator
 C#做的ASP.NET登錄篇
 ASP.NET图象处理详解
 在网页中动态的生成一个图片
 检测含有中文字符串的实际长度.
 用ASP.NET和XML做的新闻系统
 如何在asp.net中操作文件
 ASP.NET验证控件祥解
 ASP.NET中的事务处理和异常处理.
 ASP.NET上传文件的实例
 在ASP.NET中访问SQL Server
 ASP.NET安全身份验证的实现
 ASP.NET中密码保护
 在ASP.NET中使用.NET组件
 实现Web文件的上传
 asp.net实现pop功能
 ASP.NET创建文件并写入内容
 在ASP.NET中动态生成图形
 ASP.NET中文显示之两种解决方法.
 ASP.NET验证控件详解
 在ASP.NET中使用.NET组件
 资料验证的asp.net程序
 一个完整的案例
 在ASP+的Form中检查填写是否正.
 增加修改删除一个数据
 个性化的分页实现
 用ASP.NET识别浏览器
 DataGrid学习七
 DataGrid学习六
 DataGrid学习五
 DataGrid学习四
 DataGrid学习三
 DataGrid学习二
 DataGrid学习一
 DataTable控件的使用
 RegularExpressionValidator
 ViewState初探
 ASP.Net的Session
 ASP.Net的Application
 AdRotator控件的使用
 ASP.Net的Cookie实现
 XML、DataSet、DataGrid结合二.
 XML、DataSet、DataGrid结合一.
 ASP.NET中的Web Controls
 ASP.NET程序数组功能调用
 ASP.NET与ASP的不同
 ASP.net发送Email
 ASP.NET、JSP及PHP之间的抉
 

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

转载自:DotNET中文技术网                   人气:3318

  使用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来定义事务。

如有疑问,请赐电邮:webmaster@chinabs.net  OICQ:28194826
技术开发:深圳市百越软件工作室
中国BS网版权所有     Copyright chinabs.net