ASP.NETはどのようにcatchストレージ中に放出された異常情報をcatchするか

12513 ワード


リポジトリを変更するときは、入力した資料が空でない、資料がすでに存在している、または他のテーブルの資料と関連して削除できないなどの判定をします.
入力した資料を空にすることはできません.これらは論理層に直接処理されますが、資料はすでに存在しています.関連しています.この部分はデータ層に実行させることをお勧めしますが、どのようにヒント情報を返してユーザーに提示しますか?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)メソッドでいいです.どんなコードロジックも修正しなくてもいいです.あるはずのヒントは全部あります.ほほほ.トリガの上でこのようにすることができるかどうか分からないで、ほほほ.