All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
String.Empty、NULL、“”的不同之处_[Asp.Net教程]
C#减少图片文件大小和尺寸_[Asp.Net教程]
浅淡PHP生成HTML的思路_[PHP教程]
Apache服务器攻略,用户认证简单配置方案集_php资料_编程技术
PHP漏洞中的战争_[PHP教程]
.net读取扩展名为xml的资源文件_[Asp.Net教程]
asp.net2.0服务器控件之CheckBox控件
关于ASP.NET编程里Session的用法_.net资料_编程技术
C#网络应用编程基础练习题与答案(九)_.net资料_编程技术
ASP.NET重定向方法大总结_.net资料_编程技术
Reading number is top 10 pictures
Forced sex girl living abroad1
XuRe xuan cool and refreshing photoes1
哥斯达黎加的门将是如何练成的
Beauty ZhiHuiLin1
The money of more than 100 countries and regions12
Exquisite decoration is not paying too much4
So beauty, will let you spray blood6
007 James. bond's new lover
美女浴室写真1
锄禾日了几个人?
Download software ranking
jdk1.6 for windows
Tram sex maniac 2 (H) rar bag10
Unix video tutorial6
变速齿轮3.26
打鸟视频
传奇私服架设教程
Unix video tutorial5
Dance with duck(male prostitution)
Tram sex maniac 2 (H) rar bag17
电脑知识及技巧大合集
归海一刀 published in(发表于) 2014/2/1 0:12:30 Edit(编辑)
SQL,Server处理数据层错误_[SQL,Server教程]

SQL,Server处理数据层错误_[SQL,Server教程]

SQL Server处理数据层错误_[SQL Server教程]

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


处理T-SQL里的错误


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


事务


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


事务包含在BEGIN TRANSACTION和END TRANSACTION语句之间。ROLLBACK TRANSACTION语句可以取消所有的更改,因此不会发生任何变化。用COMMIT TRANSACTION语句可以进行永久的更改。现在,就让我们把注意力放在如何处理T-SQL里的错误上。


@@Error


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


RAISERROR


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


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


CREATE PROCEDURE sp_UpdateCustomerPhone(

@id nvarchar(5),

@phone nvarchar(24),

@retvalueint output

) AS

BEGIN

BEGIN TRANSACTION

UPDATE [dbo].[Customers] SET [Phone] = @phone WHERE([CustomerID] = @id)

IF (@@ERROR <> 0) -- a non-negative value signals an error

BEGIN

ROLLBACK TRANSACTION -- changes are not permanent

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

-- Custom error message appears if run from console

SET @retvalue = -1 -- return negative value to signalproblems

END

COMMIT TRANSACTION -- make the changes permanent, so record is updated

SET @retvalue = 1 -- a positive return value signalssuccess

RETURN

END

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


用存储过程返回值


通过存储过程返回值,我们可以把它用在我们的.NET代码里。SqlCommand对象允许你很容易就添加参数传递给过程以及存储返回值。参数的Direction属性被用来接收来自存储过程调用的值。它有两个属性值:InputOutput和Output。在我们的例子里,我们将使用Output来接收状态值。


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


参数被添加给SqlCommand对象(它们必须精确地符合存储过程的参数值)。命令通过SqlCommand对象的ExecuteNonQuery方法被执行。一旦它已经被执行,返回的值可以通过参数来取回。


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

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


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


作者:Tony Patton 来源:zdnet





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.