邮件订阅
5ucms插件,浅谈如何处理数据层错误
作者: 来源: 日期:2018/4/30 19:03:57 浏览量:1(滞后) 人气:LOADING...(实时) 【

5ucms插件,浅谈如何处理数据层错误

开发人员在努力做到妥善地处理意外,这样用户就不用担心天书般的系统错误信息。出于这个原因,异常处理是每个应用程序的一个标准部分。Try/catch块让你能够捕捉异常并从该点控制应用程序的执行。与数据库进行交互操作的时候会发生很多错误,但是很多开发人员都不知道如何处理数据库层的错误。本周我们将探讨如何利用SQLServer和T-SQL来处理你数据库代码里的错误。

 

处理T-SQL里的错误

 

SQLServer的SQL对话让你能够轻松地处理可能会在存储进程、函数里发生的非致命错误,但是并不是所有的错误都很容易处理。事实上,致命和非致命的错误有很多。什么是致命的,什么是非致命的,对此没有很完备的文档说明,但是你的应用程序代码总是可以利用try/catch块来处理致命的数据库错误。对于其他所有的错误,你可以使用下面的技术。

 

事务

 

你应该在数据库代码里使用事务,以确保在一切都没有问题的时候所有的更改都被完成。SQLServer的在线帮助将事务描述为任务的一个逻辑单元,它由一系列语句(选择、插入、更新,或者删除等)组成。如果在事务期间没有发生任何错误,那么对事务的所有改动都会成为数据库的永久部分。如果在这期间发生了错误,不会对数据库进行任何修改。

 

事务包含在BEGIN TRANSACTI> 

@@Error

 

@@Error函数让你可以实现T-SQL错误处理。它会返回由系统所返回的错误代码。如果没有错误发生就会返回“0”。@@Error函数必须紧接在一个语句之后立即被调用,因为它会在每个T-SQL语句之后被清除。

 

RAISERROR

 

RAISERROR语句让你能够生成一个自定义的错误信息或者使用一个放在sysmessages表格里的已有消息。你可以在线查看它的句法,但是它的最基本格式包括了消息(用于自定义的消息)或者消息id(用于已有的消息)和它的严重度及状态。SQLServer没有使用状态,所以随便传递给它一个数字就可以了。严重度表示了错误的严重程度,0-18供用户使用,而19-25保留给管理员使用。

在列表A里,示例存储过程使用了这些特性来更新示例Northwind数据库里的一条记录:

 

CREATE PROCEDURE sp_UpdateCustomerPh>@id nvarchar(5),

@ph>@retvalueint output

) AS

BEGIN

BEGIN TRANSACTI>UPDATE [dbo].[Customers] SET [Ph>IF (@@ERROR <> 0) -- a n>BEGIN

ROLLBACK TRANSACTI>RAISERROR(''Update Customers Error'',1,1) -- raise a custom error message

-- Custom error message appears if run from c>SET @retvalue = http://www.dedecms.com/web-art/shujuku/MS_SQLServer/20070118/-1 -- return negative value to signalproblems

END

COMMIT TRANSACTI>SET @retvalue = http://www.dedecms.com/web-art/shujuku/MS_SQLServer/20070118/1 -- a positive return value signalssuccess

RETURN

END

如果没有错误发生,它就把电话号码列设置为一个值,传递给过程。它使用一个返回值参数,如果有问题发生它就返回一个负值,如果用所有的东西都执行没有问题,它会返回一个正值。

 

用存储过程返回值

 

通过存储过程返回值,我们可以把它用在我们的代码里。SqlCommand对象允许你很容易就添加参数传递给过程以及存储返回值。参数的Directi> 

这段代码是一个简单的ASP页面,用来传递一个用于Northwind数据库的客户表格里某个数据的新值。而id值事实上被保存在一个隐藏字段里,可以被轻易地传递给表单,但是这个字段是用来说明的。在文本字段输入的值被用更新数据库表格里的电话号码字段。

 

参数被添加给SqlCommand对象(它们必须精确地符合存储过程的参数值)。命令通过SqlCommand对象的ExecuteN> 

代码会检查返回的值(-1表示有问题),而消息会显示在一个Label控件里。此外,一个try/catch块被用来捕捉在与数据库进行交互操作过程中可能发生的任何致命错误。

利用try/catch代码块来处理应用程序代码里的异常是一个简单明了的过程,但是你还可以监视数据库层的异常。SQLServer的T-SQL语言为你处理代码异常提供了所需要的一切。

 

Tony Patton的职业生涯开始于应用程序开发员,并已经获得了证明其专业水平的Java、VB、Lotus和XML认证。


无忧CMS,5ucms.org建站仿站首选!

本站推荐: 5ucms模板下载 5ucms插件下载 仿站联系Q3876307       [复制给好友] [打印] [关闭] [返回] [顶部]
上一篇:5ucms模版,让SQL Server为工作负载高峰提前准备
下一篇:5ucms仿站,求日期所属星座的T-SQL UDF(用户自定义)
本站声明:本网站所载文章等内容,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权及其它问题,请在30日内与本网联系(Email:3876307#qq.com),我们将在第一时间删除内容。若原创内容转载请注明出处。
5ucms插件,浅谈如何处理数据层错误的关键词:
评论信息
相关分类
本周热门
本月热门
关于我们 - 版权/免责 申明 - 建站服务 - 网站地图 - 稿件投递 - 联系我们 - 5ucms
Copyright © 2008-2015 www.5ucms.org