2012-03-27 14 views
-6

私はC#でバックエンドとしてSQLサーバーを使ってアプリケーションを作成しています。私はSQL Serverのエラーをキャプチャし、C#のGUI上に表示する必要があります。例:(SQLサーバーで)列ID、名前、年齢などを持つテーブルを作成します。IDは主キーで、IDに同じ値を2回挿入するとSQLサーバーでエラーが発生します。私はこの種のエラーをC#GUIに表示して、ユーザがC#フォームからSQLサーバに重複データを入力したときにエラーが発生するようにします。私はあなたが本当にあなたの質問はC#とSQLのヘルプが必要

try 
{ 
    // ... 
    SqlCommand.ExecuteNonQuery(...); 
} 
catch(Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 
+0

問題は何ですか? –

+2

問題は、OPがコードを必要としているということです) – gbianchi

+0

高いレベル(質問に進むコードがなく、非常に広い質問です)では、データアクセスコードの例外をキャッチし、 UIにフレンドリなエラーを表示して、これらの例外を処理します。詳細はこちら:http://msdn.microsoft.com/en-us/library/ms173160.aspx – David

答えて

2

をしてください。このコードが必要です

あなたがとキャッチを試す使用することができます例外をキャプチャする必要があります。

try 
{ 
//Your command here 
} 
catch (Exception e) 
{ 
//Now you can use e.Message OR e.ToString() to get the message. 
} 
1
try 
{ 
    //Run query here 
} 
catch(SqlException e) 
{ 
    MessageBox.Show(e.Message); 
} 
1
に多くのコードやコンテキストを提供する必要があります... ... おかげで、通常エラーが.NETクラスによってスローされ
0

私はTimmerzの答えを拡張したいのですが、例外自体を表示すると全体のスタックトレースを見ることができるからです。あなたはその後、次の操作を行い参照するには、ユーザーのために、短いと正確な何かをワン場合:SqlEx.number値については

try 
{ 
    // ... 
    SqlCommand.ExecuteNonQuery(...); 
} 
catch(SqlException SqlEx) 
{ 
    string errMsg = String.Empty; 

    switch(SqlEx.number) 
    { 
    case 100: 
     errMsg = "blah blah blah"; 
     break; 
    case 200: 
     errMsg = "blah blah blah"; 
     break; 
    case 300: 
     errMsg = "blah blah blah"; 
     break; 

    } 

    if(!String.IsNullOrEmpty(errMsg)) 
    { 
    //If you want a pop up display message 
    MessageBox.Show(errMsg); 


    //If you want to display it on a label of a form 
    Form1.Labelx.text = errMsg; 
    } 


} 

を、あなたはそれをチェックするために列挙型を作成するか、またはあなたはすべてのためにhttp://msdn.microsoft.com/en-us/library/cc645603.aspxを参照することができます可能な数値がSQLサーバー例外から戻されました。

希望します。