none
Prüfen, ob query Tabelle verändert hat RRS feed

  • 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

    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();

    Es handelt sich hierbei um eine ACCESS-Datenbank!



    • Bearbeitet tklustig Donnerstag, 13. April 2017 10:04
    Donnerstag, 13. April 2017 10:03

Antworten

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


    Donnerstag, 13. April 2017 10:31
    Moderator
  • 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

    Donnerstag, 13. April 2017 10:32
    Moderator
  • 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
    Donnerstag, 13. April 2017 12:14
  • 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


    Donnerstag, 13. April 2017 13:36
    Moderator