2012-03-27 12 views
-6

Ich erstelle eine Anwendung in C# mit SQL Server als Backend. Ich muss SQL Server-Fehler erfassen und es auf C# GUI anzeigen. Zum Beispiel: (In SQL Server) Ich erstelle eine Tabelle mit den Spalten ID, Name, Alter usw., wobei ID der Primärschlüssel ist und wenn ich dieselben Werte zweimal in die ID einfüge, gibt SQL Server einen Fehler. Ich möchte diese Art von Fehler in C# GUI angezeigt werden, so dass, wenn ein Benutzer doppelte Daten über C# -Form in SQL Server eingibt dann und dort selbst ein Fehler generiert werden. Ich brauche den Code dieses bitte ... Dankbrauche Hilfe in C# und SQL

+0

Also, was ist das Problem? –

+2

Das Problem ist, dass OP den Code wollen;) – gbianchi

+0

Auf einem hohen Niveau (da es keinen Code gibt, um in der Frage weiterzugehen und es ist eine sehr breite Frage), was Sie tun möchten, fängt Ausnahmen von Ihrem Datenzugriffscode und Behandeln Sie diese Ausnahmen, indem Sie einen benutzerfreundlichen Fehler in der Benutzeroberfläche anzeigen. Weitere Informationen finden Sie hier: http://msdn.microsoft.com/en-us/library/ms173160.aspx – David

Antwort

2

Regel der Fehler durch die .net Klassen geworfen wird ... Sie wirklich mehr Code oder Kontext

try 
{ 
    // ... 
    SqlCommand.ExecuteNonQuery(...); 
} 
catch(Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 
1
try 
{ 
    //Run query here 
} 
catch(SqlException e) 
{ 
    MessageBox.Show(e.Message); 
} 
1
benötigen, um auf Ihre Frage

Sie müssen die Ausnahme erfassen Sie versuchen und fangen verwenden können:

try 
{ 
//Your command here 
} 
catch (Exception e) 
{ 
//Now you can use e.Message OR e.ToString() to get the message. 
} 
0

Ich möchte die Antwort von Timmerz erweitern, da Sie eine ganze Stack-Trace sehen können, wenn Sie die Ausnahme selbst anzeigen. Wenn Sie etwas kurz und präzise für den Benutzer wan dann zu sehen, wie folgt vorgehen:

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; 
    } 


} 

Für den SqlEx.number Wert, können Sie entweder eine ENUM erstellen für sie zu überprüfen oder können Sie auf http://msdn.microsoft.com/en-us/library/cc645603.aspx für alle auf die mögliche Zahl, die von der SQL Server-Ausnahme zurückgegeben wurde.

Hoffe, das hilft

Verwandte Themen