So prüfen Sie, ob eine SQL-Abfrage mit C # erfolgreich ist

8

Ich bin neu in C # und SQL. Von einem Formular aus kann ich nun auf eine Funktion in einer Klasse zugreifen.

Mein Code ist

%Vor%

Wenn jetzt ein Datensatz in der Datenbank mit dem angegebenen id nicht existiert, wird die Anwendung sofort gestoppt. Wie kann ich damit umgehen? Ich möchte eine Nachricht anzeigen, dass die eingegebenen Daten falsch sind und den Benutzer auffordern, weitere Daten einzugeben

    
Aravind Bharathy 12.01.2013, 12:09
quelle

3 Antworten

16

ExecuteNonQuery () gibt die Anzahl der Zeilen zurück, die von einer INSERT-, UPDATE- oder DELETE-Anweisung betroffen sind. Wenn Sie die sql-Ausnahme überprüfen müssen, müssen Sie eine try catch-Anweisung in Ihre Funktion einfügen.

%Vor%     
sreejithsdev 12.01.2013, 12:24
quelle
15

ExecuteNonQuery gibt die Anzahl der betroffenen Zeilen zurück - wenn es 0 ist, bedeutet dies, dass keine übereinstimmenden Zeilen zum Aktualisieren vorhanden waren. Das ist natürlich nur dann der Fall, wenn das Update tatsächlich so funktioniert, dass es keine Ausnahme auslöst ... während ich vermute, dass es in Ihrem Fall eine Ausnahme auslöst, die wahrscheinlich nicht ist mit der Zeile zu tun hat nicht in der Datenbank vorhanden. (Es ist möglich, dass es Code gibt, bei dem Sie nicht gezeigt haben, welches von der vorhandenen Zeile abhängt, nicht zu vergessen.)

Zusätzlich:

  • Sie sollten parametrisiertes SQL für alle -Parameter verwenden, anstatt die Werte direkt in Ihre SQL-Datei aufzunehmen.
  • Sie sollten using -Anweisungen verwenden, um Ressourcen zuverlässig zu entsorgen.
  • Es sieht so aus, als ob Sie eine einzige Verbindung verwenden - tun Sie das nicht. Erstellen Sie jedes Mal, wenn Sie eine Datenbankoperation ausführen möchten, eine neue Verbindung (und weisen Sie sie über using zu), und lassen Sie den Verbindungspool die Effizienz
  • verarbeiten
  • Finden Sie heraus, warum die Anwendung gerade beendet wird. Es wird mit ziemlicher Sicherheit eine Ausnahme ausgelöst, und es ist sehr wichtig, dass Sie in diesem Fall die Details der Ausnahme erhalten. Sie können es abfangen und weitermachen (auf einer hohen Ebene), abhängig vom exakten Kontext ... aber Sie sollten es immer zumindest protokollieren.

Mein rate (bei einer zufälligen Überprüfung) ist, dass das Problem ist, dass Ihre Update-Anweisung versucht, die ID zu aktualisieren, die vermutlich schreibgeschützt wäre. Aber Sie werden das herausfinden, wenn Sie Ihre Ausnahmebehandlung reparieren.

    
Jon Skeet 12.01.2013 12:10
quelle
0

Ich weiß, dass es bereits eine Antwort gibt, aber lass uns etwas anderes versuchen:

%Vor%

HasRows gibt einen bool -Wert zurück

    
John the horn 25.11.2016 13:46
quelle

Tags und Links