Dispalierungserrors, der durch gespeicherte Prozedur in ASPX-Form zurückgegeben wird

Ich habe eine gespeicherte Prozedur, die ich verwende, um Werte in eine Tabelle einzufügen … wenn ich die error handling in it mit @@ ERROR implementiere und wenn ich den Fehler in einer Variable zurückgibt @myError kann ich diesen Fehler in meinem ASPX-Formular anzeigen? Ich bin mit SQL server 2005

thanx ….

   

Sie können das InfoMessage Ereignis der SqlConnection um SQL-Warnungen und Informationsmeldungen an den Client auszugeben. Standardmäßig wird das Ereignis nur für Informationsnachrichten mit einer Schwere von weniger als 10 gefeuert. Wenn Sie die Eigenschaft FireInfoMessageEventOnUserErrors der SqlConnection auf true setzen, können Sie das InfoMessage Ereignis für Fehler der Schwere 11 bis 16 auslösen, anstatt eine exception zu InfoMessage und die Ausführung zu InfoMessage . Durch Hinzufügen eines Event- InfoMessage für das InfoMessage Ereignis können wir die Nachricht an den Client ausgeben.

 using (SqlConnection conn = new SqlConnection(connString)) { conn.Open(); conn.FireInfoMessageEventOnUserErrors = true; conn.InfoMessage += delegate(object sender, SqlInfoMessageEventArgs e) { txtMessage.Text += e.Message; }; ... } 

Siehe: WIE: Fehler und Warnungen aus einem SQL server gespeicherten Prozedur in ADO.NET zurückgeben

Ja können Sie, aber normalerweise möchten Sie keine Systemerrorsmeldungen an Benutzer anzeigen – es wäre besser, eine benutzerfreundliche Nachricht anzuzeigen.

Das heißt aber nur ein Label erstellen und die Text Eigenschaft des Labels mit dem Wert @myError .

Ich würde empfehlen, TRY / CATCH in T-SQL anstelle von @@ ERROR zu verwenden. Die spätere ist notorisch problematisch, weil nach jeder Aussage zurückgesetzt wird. Für mehr Details siehe

  • error handling in SQL server – ein background
  • Implementieren von error handling mit gespeicherten Prozeduren

Ich bevorzuge viel TRY / CATCH, mit einer Prozedurvorlage wie die hier beschriebene: exceptionbehandlung und verschachtelte transactions . Auf diese Weise wird ein Fehler in dein ASP.Net als SqlException angehoben, den du fangen kannst, wie jede andere CLR exception.