修改资料库的时候,我们要做一些判定,比如输入的资料不能为空、资料已存在或与其它表的资料关联不能删除等等。

输入的资料不能为空,这些都直接交由逻辑层去处理,而资料已存在呀、关联呀等等,这部分推荐让数据层去执行,但怎么返回提示信息并提示用户呢?catch是个不错的选择!

当你要新增一笔资料的时候,不要做类似于“Sql  = Insert into [tableName] values(....);"这样的处理,直接调用存储过程就好了,假定存储过程的名称为[test_prc]

那它的代码类似于下面这样子:

 1  CREATE PROCEDURE [dbo].[test_prc](
 2    @formNo nvarchar(20),  --单号
 3    @formName nvarchar(10) --名称
 4  )
 5  AS
 6  BEGIN
 7    declare
 8
 9      @Error_Msg nvarchar(200)
10
11    --检查是否为空值
12    IF ISNULL(@formNo,'')='' or ISNULL(@formName,'')=''
13    BEGIN
14      set @Error_Msg = '单号、名称等不能为空值'
15      RAISERROR(@Error_Msg,16,1) WITH NOWAIT
16      return 1
17    END
18
19    --检查程序文件是否存在
20    IF exists (select 1 from [tableName] where formNo=@formNo and formName=@formName)
21    BEGIN
22      set @Error_Msg = '单号'+@formNo+',名称'+@formName+'已存在,不允许增加'
23      RAISERROR(@Error_Msg,16,1) WITH NOWAIT
24      return 1
25    END
26
27
28    --新增
29    INSERT INTO [tableName]
30             ([formNo]
31             ,[formName]
32             )
33       VALUES
34             (@formNo
35             ,@formName
36             )
37  END      

有了以上代码之后,那我们就在程序中使用try...catch对这些异常信息做捕捉处理,如下:

 1         #region 成员方法
 2         /// <summary>
 3         /// 添加资料
 4         /// </summary>
 5         /// <param name="formNo">单号</param>
 6         /// <param name="formName">名称</param>
 7         /// <returns></returns>
 8         public bool Do_Process_Add_Info(string formNo, string formName)
 9         {
10             bool result = true;
11             SqlParameter[] oSqlParameter =
12                   {
13                      new SqlParameter("@formNo",SqlDbType.NVarChar,20) ,
14                      new SqlParameter("@formName",SqlDbType.NVarChar,10)
15                     };
16             try
17             {
18                 //赋值
19                 oSqlParameter[0].Value = formNo;
20                 oSqlParameter[1].Value = formName;
21
22                 sqlHelper.SP_ExecuteNonQuery("test_prc", oSqlParameter); //sqlHelper是实例化的用于操作数据库的实例!
23             }
24             catch (Exception err)
25             {
26                 result = false;
27                 System.Windows.Forms.MessageBox.Show(err.Message);
28                 //或者在网页中弹框
29                 //Response.Write(err.Message);
30             }
31             return result;
32         }

好了,通过这样子,只要调用这个 Do_Process_Add_Info(string formNo, string formName) 方法就可以了,什么代码逻辑都不用修改,应该有的提示它全有了,呵呵。不知道触发器上面能不能这样子搞呢,呵呵。

转载于:https://www.cnblogs.com/seasons1987/archive/2012/12/07/2806689.html

ASP.NET 如何catch存储过程中抛出的异常信息相关推荐

  1. 获取线程中抛出的异常信息

    1 ScheduledExecutorService service = Executors.newScheduledThreadPool(10); 2 // 从现在开始delay毫秒之后,每隔一天执 ...

  2. 第8集析构函数中抛出的异常

    前两篇文章讨论了对象在构造过程中(构造函数)和运行过程中(成员函数)出现异常时的处理情况,本文将讨论最后一种情况,当异常发生在对象的析构销毁过程中时,又会有什么不同呢?主人公阿愚在此可以非常有把握地告 ...

  3. 第7集 构造函数中抛出的异常

    上一篇文章简单讨论了一下对象的成员函数抛出异常时的处理情况.本文中将继续讨论当在构造函数中抛出异常时,程序的执行情况又如何?这有点复杂呀!而且主人公阿愚还觉得这蛮有点意思! 构造函数中抛出的异常 1. ...

  4. 想抛就抛:Application_Error中统一处理ajax请求执行中抛出的异常

    想抛就抛:Application_Error中统一处理ajax请求执行中抛出的异常 参考文章: (1)想抛就抛:Application_Error中统一处理ajax请求执行中抛出的异常 (2)http ...

  5. 如何Mysql触发器中抛出一个异常

    当想Mysql出发其中插入或者更新一条数据的时候,我希望使用触发器进行一些检查工作.虽然这些工作可以使用PHP来完成,但考虑到公司做PHP的小伙子是个新手,为了简化PHP端的业务,使用触发器来实现可靠 ...

  6. java 抛出指定异常信息_java 抛出异常处理的方法

    java 抛出异常处理的方法 为了避免调用的人不知道有异常,才抛出异常的,所以是谁掉用的久在哪里处理.说的对吗 对. 1.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以 ...

  7. java异常怎么输出到页面_怎么把抛出的异常信息输出到SWING 界面上

    展开全部 首先抛出异常e68a84e8a2ad3231313335323631343130323136353331333337623366,然后捕获异常,最后把异常信息输出到SWING界面组件 代码参 ...

  8. NET问答: 如何将 ASP.NET Core WebAPI 中抛出的异常封装成对象?

    咨询区 rianjs: 在 ASP.NET Core WebAPI 中,我的 Controller 代码如下: [Route("create-license/{licenseKey}&quo ...

  9. 如何友好的处理 WebApi 中抛出的错误

    微软的 ASP.NET Web API 是一个轻量级的web框架,可用来构建基于 http 无状态的rest服务,异常是一种运行时错误,异常处理是一种处理运行时错误的技术,每一个开发者都应该知道如何处 ...

最新文章

  1. android 电话 状态栏,Android透明式状态栏、导航栏实现
  2. 机器学习02线性回归、多项式回归、正规方程
  3. c语言定义5个元素数组, 对数组进行从小到大排序,定义一个5行5列的二维数组,并动态赋值,将第3列的数组进行从小到大的排序...
  4. aspose.cell for java 去水印_【Java编程基本功】(十)输出杨辉三角,输出*号,数组移动...
  5. C语言——结构体数组的使用案例(如何判断两个矩形是否相交,其中一个是否包含在另外一个里面,点是否在矩形中)...
  6. VS2010 修改全局 include目录
  7. oracle查看脚本,oracle 查看表空间的脚本
  8. 【炮灰模型】 让数学建模来控制你的爱情,测测你是否是那个炮灰
  9. 关于金格电子签章的使用问题处理
  10. Java GUI+MySQL 银行管理系统初级(课程设计)
  11. 计算机系统时间错了,电脑时间同步出错怎么办
  12. c++编译STL文件反转其法线
  13. 爬取拉勾网招聘信息笔记
  14. 操作——【1.8 关于音高、时值、位置 】(二)
  15. Receptive field 感受野 原理+计算+图解+空洞卷积hole
  16. circos 可视化手册- text 篇
  17. 【汇编语言】【ARM扩展资料】硬件组成
  18. iOS - 添加代码片段(Code Snippets)
  19. 你对浏览器的兼容性有了解吗?
  20. mooc幕课零基础学Java语言(翁恺)if-else语句比较三个数, 输出最大值

热门文章

  1. R可视化lend_club 全球最大的P2P平台数据75W条
  2. reactivecocoa基础讲解
  3. 脑梗塞康复治疗,选择技术很重要!
  4. nginx安装编译,动态添加模块及其各模块的作用
  5. Java多线程超详细总结
  6. 李林APUE之进程的封装
  7. Emoji表情符号兼容方案(适用ios,android,wp等平台)
  8. 3409: [Usaco2009 Oct]Barn Echoes 牛棚回声
  9. eDMA结构及工作机理的简单介绍
  10. Data Guard出现gap sequence修复