SQL Server: So behandelt man Ausnahmefehler in der Datenschicht

Im folgenden Code verwendet die als Beispiel dienende gespeicherte Prozedur diese Features zum Aktualisieren eines einzelnen Datensatzes in der Beispieldatenbank Nordwind. Sie setzt das Feld für die Telefonnummer auf einen der Prozedur übergebenen Wert, aber nur, wenn kein Fehler auftritt. Falls Probleme den Ablauf stören, wird ein negativer Rückgabewert ausgegeben – falls alles ohne Probleme ausgeführt werden kann, ein positiver.



Rückgabewerte von gespeicherten Prozeduren verwenden

Da die gespeicherte Prozedur Rückgabewerte liefert, kann man diese in seinem .NET-Code verwenden. Das Objekt SqlCommand ermöglicht ein einfaches Hinzufügen von Parametern zum Übergeben an die Prozedur sowie das Speichern von Rückgabewerten. Die Eigenschaft Direction des Parameters wird verwendet, um Rückgabewerte vom Aufruf einer gespeicherten Prozedur zu erhalten. Sie kann zwei Werte annehmen: InputOutput und Output. Im Beispiel wird Output verwendet, um den Statuswert zu erhalten.

Der Code ist eine einfache ASP.NET-Seite, die einen neuen Wert für einen bestimmten Eintrag in der Kundentabelle der Nordwind-Datenbank übergibt. Der ID-Wert wird in einem versteckten Feld gespeichert. Er könnte einfach an das Formular übergeben werden, aber das Feld funktioniert zu Demonstrationszwecken. Der in ein Textfeld eingegebene Wert wird verwendet, um das Feld mit der Telefonnummer in der Datenbanktabelle zu aktualisieren.

Die Parameter werden dem SqlCommand-Objekt hinzugefügt. Sie müssen exakt den Parameterwerten der gespeicherten Prozedur entsprechen. Der Befehl wird mithilfe der ExecuteNonQuery-Methode des SqlCommand-Objekts ausgeführt. Sobald der Befehl ausgeführt wurde, kann der Rückgabewert über diese Parameter abgerufen werden.

Der Code überprüft den Rückgabewert (-1 zeigt ein Problem an), und eine Meldung wird in einem Label-Steuerelement angezeigt. Außerdem wird ein try/catch-Block verwendet, um schwerwiegende Fehler abzufangen, die bei der Interaktion mit der Datenbank auftreten können.


ZDNet Developer – Test

private SqlConnectionconn
= null;
private SqlCommandcmd =
null;
private String connString;
private intrvalue;
public void SubmitChanges() {
connString = „data source=localhost;uid=test;pwd=test;initial catalog=Northwind“;
try {
conn = new SqlConnection(connString);
cmd = new SqlCommand(„sp_UpdateCustomerPhone“, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(„@id“, SqlDbType.NVarChar, 5);
cmd.Parameters[„@id“].Value = lblID.Text;
cmd.Parameters.Add(„@phone“, SqlDbType.NVarChar, 24);
cmd.Parameters[„@phone“].Value = txtPhone.Text;
cmd.Parameters.Add(„@retvalue“,
System.Data.SqlDbType.Int);
cmd.Parameters[„@retvalue“].Direction
= ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();
rvalue = (int)cmd.Parameters[„@retvalue“].Value;
if (rvalue == -1) {
lblMessage.Text = „Datenbankfehler während des
Updates.“;
lblMessage.Visible = True;
} else {
lblMessage.Text = „Daten wurden aktualisiert.“; lblMessage.Visible = True;
} conn.Close();
} catch (SqlException ex) {
lblMessage.Text = „Fehler beim Datenbankzugriff: “ + ex.ToString();
} catch (Exception ex) {
lblMessage.Text = „Ausnahme: “ + ex.ToString();
} finally {
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
} }
private void btnUpdatePhone_Click(object sender, System.EventArgs e) {
SubmitChanges();
}

New Number:

ALFKI


Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Microsoft stellt kleines KI-Modell Phi-3 Mini vor

Seine Trainingsdaten umfassen 3,8 Milliarden Parameter. Laut Microsoft bietet es eine ähnliche Leistung wie OpenAIs…

4 Tagen ago

Google schließt kritische Sicherheitslücke in Chrome

Sie erlaubt eine Remotecodeausführung außerhalb der Sandbox. Betroffen sind Chrome für Windows, macOS und Linux.

4 Tagen ago

Microsoft beseitigt Fehler im März-Sicherheitsupdate für Exchange Server

Probleme treten vor allem bei Nutzern von Outlook Web Access auf. Das optionale Hotfix-Update für…

4 Tagen ago

Neue iPads: Apple kündigt Event für 7. Mai an

Die Einladung zeigt einen zeichnenden Apple Pencil. Der wiederum deutet auf neue iPads hin. Es…

4 Tagen ago

EU-Parlament stimmt für Recht auf Reparatur

Die Richtlinie erhält 584 Ja-Stimmen und 3 Gegenstimmen. Das „Recht auf Reparatur“ beinhaltet unter bestimmten…

5 Tagen ago

Forscher entwickeln Exploits per GPT-4 aus Sicherheitswarnungen

Die Tests basieren auf tatsächlich existierenden Sicherheitslücken. GPT-4 erreicht eine Erfolgsquote von 87 Prozent. Alle…

6 Tagen ago