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)メソッドでいいです.どんなコードロジックも修正しなくてもいいです.あるはずのヒントは全部あります.ほほほ.トリガの上でこのようにすることができるかどうか分からないで、ほほほ.