网站大量收购独家精品文档,联系QQ:2885784924

基于SQL Server 的Exception Handling .doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于SQL Server 的Exception Handling .doc

  基于SQL Server 的Exception Handling   六、SqlException   在上面一节中,我给出了一个完整的例子说明了:如何在将message定义在sys.messages中保证message的一致性和可维护性;如何在Stored procedure中使用RAISERROR将一个可预知的Error抛出;如何在Stored procedure中使用TRY/CATCH进行异常的捕捉;在Application如果处理从SQL Server抛出的Exception。实际上,SQL Server database Engine抛出、被我们的.最终捕获的SqlException,我们通过SqlException的属性可以得到Error的相关信息。下面是SqlException的属性列表:   public SqlErrorCollection Errors { get; }   public int LineNumber { get; }   public int Number { get; }   public string Procedure { get; }   public string Server { get; }   public override string Source { get; }   public byte State { get; }   有了前面的内容作铺垫,相信大家都知道每个属性分别表示的什么了吧。为了使大家对   stored procedure的Error和ADO.捕获的Error的Mapping有一个更加清晰的认识。我们来写一个Sample,我们沿用Create User的例子:   在stored procedure中,遇到重名通过RAISERROR抛出异常[在整篇文章中,使用到Error和Exception,大家可以看成是等效的]:        Error Number:50001        Severity:16        State:1        Message:This user is already existent   我们来修正一下CreateUser方法: public static bool CreateUser(string userName)     {       string procedureName = P_USERS_I;       Dictionarylt;string, objectgt; parameters = neeters.Add(user_id, Guid.Neeters.Add(user_name, userName);       try       {         Executemand(procedureName, parameters);         return true;       }       catch (SqlException ex)       {         Console.essaget: {0}, ex.Message);         Console.ain()中调用这个CreateUser():   在这里我想特别说明一下SqlException.Number这个属性,它代表Database中的Error number[或者是ERROR、imessage_id],不过当我们使用RAISERROR语句,如果我们指定的一个表示error message的字符串,ADO.捕获的SqlException.Number这个属性默认为50000。比如我们将Error number换成error message: SET error_message  = ERROR_MESSAGE() SET error_serverity  =ERROR_SEVERITY() SET error_state  = ERROR_STATE() RAISERROR(error_message, error_serverity,error_state)   将会得到这样的结果: 12下一页 这篇文章来自..,。   还有一点需要特别提醒得是,我们可以在调用RAISERROR加了一个essage  上面的所以内容都围绕一个Exception handling的主题,在文章最后一部分我们想想一个和非Exception handling但是又和上面的内容很相关的主题:在Database通过Print语句输出的Message如何向Application传递。   在上面的例子中,有一个P_CLEAR_DATA的stored procedure,用于数据的清理。在操作结束后,有

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档