Benutzer mit den meisten Antworten
Prüfen, ob query Tabelle verändert hat

Frage
-
Hi Leute,
von PHP bin ich es gewohnt, eine Rückmeldung zu bekommen, sofern eine Tabelle tatsächlich verändert wurde. Wie ist das Pendant in C#.
Fogendes Konstrukt funktionert so nicht
Es handelt sich hierbei um eine ACCESS-Datenbank!cs.Open();//set the connection cmd.Connection = cs;//get the SQL statement to be executed cmd.CommandText = sqlUpdate;//execute the query cmd.ExecuteNonQuery(); if (cmd != null) MessageBox.Show("RecordUpdated!NowRefresh"); else MessageBox.Show("Put in correct Id"); cs.Close();
- Bearbeitet tklustig Donnerstag, 13. April 2017 10:04
Antworten
-
Hallo,
ob und was du zurück erhältst hängt ganz von deinem SQL ab. Wenn du einfach einen UPDATE-Befehl ausführst, dann gibt dir ExecuteNonQuery die Anzahl betroffener Zeilen zurück, sprich die Anzahl der veränderten. Das kannst du natürlich abfragen.
var result = cmd.ExecuteNonQuery(); if(result == 0) MessagBox.Show("Fehler, nichts verändert"); else MessageBox.Show("OK");
PS: Entweder sind deinen Kommentaren die Zeilenumbrüche abhanden gekommen oder sie sind falsch zugeordnet. Denn sie gelten jeweils für die nächste Zeile.Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Donnerstag, 13. April 2017 13:11
- Als Antwort markiert Stefan FalzModerator Samstag, 15. April 2017 06:54
-
Hi,
ExecuteNonQuery gibt dir die Anzahl der betroffenen Datensätze zurück. Wenn der Rückgabewert also größer 0 ist, ist irgendwas passiert.
Deine Abfrage if( cmd != null ) ist falsch bzw. wird dir immer true zurückgeben, da Du das Objekt cmd vorher erstellst und es somit niemals null sein wird.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Donnerstag, 13. April 2017 10:32
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Donnerstag, 13. April 2017 13:11
- Als Antwort markiert Stefan FalzModerator Samstag, 15. April 2017 06:54
Alle Antworten
-
Hi,
ExecuteNonQuery gibt dir die Anzahl der betroffenen Datensätze zurück. Wenn der Rückgabewert also größer 0 ist, ist irgendwas passiert.
Deine Abfrage if( cmd != null ) ist falsch bzw. wird dir immer true zurückgeben, da Du das Objekt cmd vorher erstellst und es somit niemals null sein wird.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Donnerstag, 13. April 2017 10:32
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Donnerstag, 13. April 2017 13:11
- Als Antwort markiert Stefan FalzModerator Samstag, 15. April 2017 06:54
-
Hallo,
ob und was du zurück erhältst hängt ganz von deinem SQL ab. Wenn du einfach einen UPDATE-Befehl ausführst, dann gibt dir ExecuteNonQuery die Anzahl betroffener Zeilen zurück, sprich die Anzahl der veränderten. Das kannst du natürlich abfragen.
var result = cmd.ExecuteNonQuery(); if(result == 0) MessagBox.Show("Fehler, nichts verändert"); else MessageBox.Show("OK");
PS: Entweder sind deinen Kommentaren die Zeilenumbrüche abhanden gekommen oder sie sind falsch zugeordnet. Denn sie gelten jeweils für die nächste Zeile.Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Donnerstag, 13. April 2017 13:11
- Als Antwort markiert Stefan FalzModerator Samstag, 15. April 2017 06:54
-
Vielen Dank auch!
Folgendes Konstrukt funktioniert wie gewünscht:
if (cmd.ExecuteNonQuery()>0) MessageBox.Show("Record Updated!Now Refresh","Hint",MessageBoxButtons.OK,MessageBoxIcon.Exclamat ion,MessageBoxDefaultButton.Button1); else MessageBox.Show("Put in correct Id","ERROR",MessageBoxButtons.OK,MessageBoxIcon.Exclamat ion,MessageBoxDefaultButton.Button1);
- Bearbeitet tklustig Donnerstag, 13. April 2017 12:36
- Als Antwort markiert tklustig Donnerstag, 13. April 2017 12:48
- Tag als Antwort aufgehoben Stefan FalzModerator Donnerstag, 13. April 2017 13:32
-
Hi,
bzgl. der Markierung der Antworten wäre es besser, wenn Du die Postings, die die Antwort(en) auf deine Frage(n) beinhalten, entsprechend markieren würdest.
Auch wenn Du noch ein funktionierendes Beispiel gepostet hast, was sicher auch sehr hilfreich für andere User ist, waren die ausschlaggebenden Postings für die Lösung ja eher die von Tom und mir.
Nur so als Gedankenanstoß, letztendlich bleibt es zwar dir überlassen, ob und wie Du was als Antwort markierst und/oder als hilfreich bewertest, für andere User, die irgendwann mal dasselbe oder ein sehr ähnliches Problem haben und dabei über diesen Thread stolpern, ist es aber hilfreicher, wenn eben die richtigen Postings markiert sind, da die Antworten in der Regel hervorgehoben werden und man sich nicht erst durch den gesamten Thread kämpfen muss.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Freitag, 14. April 2017 07:50