基于sql server 的exception handling

基于sql server 的exception handling

ID:9722689

大小:57.50 KB

页数:5页

时间:2018-05-06

基于sql server 的exception handling_第1页
基于sql server 的exception handling_第2页
基于sql server 的exception handling_第3页
基于sql server 的exception handling_第4页
基于sql server 的exception handling_第5页
资源描述:

《基于sql server 的exception handling》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、基于SQLServer的ExceptionHandling  六、SqlException  在上面一节中,我给出了一个完整的例子说明了:如何在将message定义在sys.messages中保证message的一致性和可维护性;如何在Storedprocedure中使用RAISERROR将一个可预知的Error抛出;如何在Storedprocedure中使用TRY/CATCH进行异常的捕捉;在Application如果处理从SQLServer抛出的Exception。实际上,SQLServerdatabaseEn

2、gine抛出、被我们的.最终捕获的SqlException,我们通过SqlException的属性可以得到Error的相关信息。下面是SqlException的属性列表:  publicSqlErrorCollectionErrors{get;}  publicintLineNumber{get;}  publicintNumber{get;}  publicstringProcedure{get;}  publicstringServer{get;}  publicoverridestringSource{get

3、;}  publicbyteState{get;}  有了前面的内容作铺垫,相信大家都知道每个属性分别表示的什么了吧。为了使大家对  storedprocedure的Error和ADO.捕获的Error的Mapping有一个更加清晰的认识。我们来写一个Sample,我们沿用CreateUser的例子:  在storedprocedure中,遇到重名通过RAISERROR抛出异常[在整篇文章中,使用到Error和Exception,大家可以看成是等效的]:      ErrorNumber:50001      Se

4、verity:16      State:1      Message:Thisuserisalreadyexistent  我们来修正一下CreateUser方法:publicstatic boolCreateUser(stringuserName)    {      stringprocedureName=P_USERS_I;      Dictionary<string,object>parameters=neeters.Add(user_id,Guid.Neeters.Add(user_nam

5、e,userName);      try      {        Executemand(procedureName,parameters);        returntrue;      }      catch(SqlExceptionex)      {        Console.essaget:{0},ex.Message);        Console.ain()中调用这个CreateUser():  在这里我想特别说明一下SqlException.Number这个属性,它代表Databas

6、e中的Errornumber[或者是ERROR、imessage_id],不过当我们使用RAISERROR语句,如果我们指定的一个表示errormessage的字符串,ADO.捕获的SqlException.Number这个属性默认为50000。比如我们将Errornumber换成errormessage:SETerror_message  =ERROR_MESSAGE()SETerror_serverity  =ERROR_SEVERITY()SETerror_state  =ERROR_STATE()RAISE

7、RROR(error_message,error_serverity,error_state)  将会得到这样的结果:12下一页>>>>这篇文章来自..,。  还有一点需要特别提醒得是,我们可以在调用RAISERROR加了一个essage  上面的所以内容都围绕一个Exceptionhandling的主题,在文章最后一部分我们想想一个和非Exceptionhandling但是又和上面的内容很相关的主题:在Database通过Print语句输出的Message如何向Application传递。  在上面的例子中,有一

8、个P_CLEAR_DATA的storedprocedure,用于数据的清理。在操作结束后,有一个Print语句(PRINT('Alldatahavebeendeleted!'))CREATEProcedureP_CLEAR_DATAAS    DELETEFROMdbo.T_USERS_IN_ROLES  DELETEFROMdbo.T_US

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。