0

私は C# winforms と SQL サーバーと LINQ to SQL でプログラムを書きました。フォームの代わりにユーザー コントロールを使用します。私のユーザー コントロールでは、3 つのテキスト ボックス、txtStartNumber、txtEndNumber、txtQuantity を配置します。ユーザーがテキストボックスの値を定義し、ボタンをクリックすると、txtQuantity の値に従っていくつかのレコードが挿入されます。

重複した番号が作成されたときに、データベースに追加せず、メッセージを表示したい。私はどのように行いますか?コード ビハインドまたはサーバー サイドでコードを記述する必要がありますか? これをストア プロシージャまたはトリガーで設定する必要がありますか?

 private void btnSave_Click(object sender, EventArgs e)
        {
            long  from = Convert.ToInt64(txt_barcode_f.Text);
            long to = Convert.ToInt64(txt_barcode_t.Text);
            long quantity = Convert.ToInt64(to - from);
            int card_Type_ID=Convert.ToInt32(cmb_BracodeType .SelectedValue);
            long[] arrCardNum = new long[(to - from)];

            arrCardNum[0]=from;

            for (long i = from; i < to; i++)
             {
                 for(int j=0; j<(to-from) ;j++)
                 {
                 arrCardNum[j]=from+j;
                 string r = arrCardNum[j].ToString();
                 sp.SaveCards(r, 2, card_Type_ID, SaveDate, 2);
                 }
             }
        }

ストアド プロシージャ コード。

ALTER PROCEDURE dbo.SaveCards
@Barcode_Num int
,@Card_Status_ID int 
,@Card_Type_ID int
,@SaveDate varchar(10)
,@Save_User_ID int 


AS

BEGIN 
INSERT INTO [Parking].[dbo].[TBL_Cards]
           ([Barcode_Num]
           ,[Card_Status_ID]
           ,[Card_Type_ID]       
           ,[Save_User_ID])

     VALUES
           (@Barcode_Num
           ,@Card_Status_ID
           ,@Card_Type_ID
           ,@Save_User_ID)


    END  
4

2 に答える 2

0

データをSQLサーバーに保存している場合は、TBL_Cardsテーブルのバーコード番号列のセットPRIMARY KEYを作成できます。また、ストアド プロシージャでduplicatekeyExceptionまたは Use RAISEERRORを使用して、エラー メッセージを表示できます。

お役に立てれば

于 2012-11-18T10:53:01.093 に答える
0

データベースを正しく設定すると、重複キーを追加しようとすると例外がスローされます。その例外をキャッチして、重複キーを追加しようとした結果かどうかを確認できます。
例えば:

try
{
    sp.SaveCards(r, 2, card_Type_ID, SaveDate, 2);
}
catch (SqlException e) 
{
  // Check if exception was raised because of a duplicate key and perform your logic
}
catch (Exception ex)
{
  // Any other exceptions raised
}

LINQ について言及したので、 DuplicateKeyException例外についても読むことをお勧めします。

于 2012-11-18T10:47:37.173 に答える