ASP.NET 如何catch存储过程中抛出的异常信息
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                ASP.NET 如何catch存储过程中抛出的异常信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                ?
修改資料庫的時候,我們要做一些判定,比如輸入的資料不能為空、資料已存在或與其它表的資料關聯不能刪除等等。
輸入的資料不能為空,這些都直接交由邏輯層去處理,而資料已存在呀、關聯呀等等,這部分推薦讓數據層去執行,但怎么返回提示信息并提示用戶呢?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存储过程中抛出的异常信息的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: C# 调用Word(PrintOut)
 - 下一篇: 如何使用Web.config的authe