2017-08-02 9 views
0

私は既存のIDを持っていますが、このエラーがある場合、 'IDが存在し、挿入に失敗しました'というメッセージボックスを表示したい!!PRIMARY KEYの違反は、オブジェクト 'dbo.EventType'に重複キーを挿入できません。重複したキーの値は(6)

protected void Button1_Click(object sender, EventArgs e) 
{ 
    int result = 0; 

    EventType produ = new EventType(int.Parse(tb_id.Text), tb_Name.Text); 
    result = produ.EventTypeInsert(); 

    if (produ == null) 
    { 
     if (result > 0) 
     { 
      Response.Write("<script>alert('Insert successful');</script>"); 
     } 
     else 
     { 
      Response.Write("<script>alert('Insert NOT successful');</script>"); 
     } 
    } 
    else 
    { 
     Response.Write("<script>alert('ID already exists.Insert NOT successful');</script>"); 
    } 

} 
+1

「間違った」状態になっている理由を調べるためにデバッグを試みたことがありますか? –

+0

[PRIMARY KEY制約の違反]の可能な複製(https://stackoverflow.com/questions/6796009/violation-of-primary-key-constraint) – VDWWD

答えて

0

私はtry catchブロックを使うべきだと思います。例外をキャッチし、例外に応じて必要なメッセージを提供します。

0

あなたのケースでは、主キーが自動増分であると思います。したがって、プライマリキーに値を渡さないでください。データベースは自動的にそのフィールドをインクリメントして挿入するためです。

注:プライマリ自動増分フィールドに値を渡さないでください。

0

プロのヌルチェックが異常であることに注意してください。それを削除するか、produ!= nullかどうかを確認してください。あなたはそれを以下のようにすることができます。 EventTypeInsert関数にtry catchを配置することもできます。私はよりクリーンなコードになると思う。

int result = 0; 
try 
{ 
    EventType produ = new EventType(int.Parse(tb_id.Text), tb_Name.Text);  
    result = produ.EventTypeInsert(); 

    if (result > 0) 
    { 
     Response.Write("<script>alert('Insert successful');</script>"); 
    } 
    else 
    { 
     Response.Write("<script>alert('Insert NOT successful');</script>"); 
    } 
} 
catch (SqlException ex) 
{ 
    Response.Write("<script>alert('ID probably already exists.Insert NOT successful');</script>"); 
} 
catch (Exception ex) 
{ 
    // maybe log a general error 
} 
関連する問題