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

Was kann die Apple Watch Series 10?

Seit Ende September ist sie also verfügbar: die Apple Watch 10. Auch in Deutschland kann…

4 Tagen ago

Microsoft-Clouds: GenAI verändert Servicegeschäft

ISG sieht engere Vernetzung zwischen Hyperscaler, IT-Partnern und Endkunden. Treiber ist das Zusammenspiel von KI…

4 Tagen ago

Agentforce Testing Center: Management autonomer KI-Agenten

Mit dem Tool können Unternehmen KI-Agenten mithilfe synthetisch generierter Daten testen, um präzise Antworten und…

5 Tagen ago

NiPoGi AM06 PRO Mini PC: Perfekte Kombination aus Leistung, Flexibilität und Portabilität

Kostengünstiger Mini-PC mit AMD Ryzen 7 5825U-Prozessor, 16 GB Arbeitsspeicher (RAM) und 512 GB SSD.

5 Tagen ago

Black Friday: Vorsicht vor schädlichen QR-Codes

Bösartige QR-Codes, die per E-Mail versendet werden, eignen sich sehr gut, um Spam-Filter zu umgehen.

1 Woche ago

Black Friday: Zahl der ominösen Shopping-Websites steigt

Unsichere Websites und Phishing-Mails in Verbindung mit Black Friday können kauffreudigen Konsumenten zum Verhängnis werden.

1 Woche ago