Laden...

SQL CE (Server Compact) update Funktion

Erstellt von canada vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.435 Views
C
canada Themenstarter:in
17 Beiträge seit 2013
vor 10 Jahren
SQL CE (Server Compact) update Funktion

verwendetes Datenbanksystem: <SQL CE / MS Server Compact>

Servus Leute,

ich bin hier gerade echt am zweifeln, ich kann ohne Probleme auf die Daten in der Datenbank zugreifen, löschen, anlegen, auslesen ... nur eines bekomme ich nicht hin, einen Datensatz zu ändern (UPDATE).

Ich habe eine DB mit der Tabelle "Quarz" und möchte dort anhand der Spalte "Seriennummer" das gewünschte Teil filtern und dann die Spalte "CleanCounter" ändern (Wert +1).

SqlCeCommand update = new SqlCeCommand("UPDATE Quarz SET CleanCounter = @CleanCounter WHERE Seriennummer '" + CbSeriennummer.Text + "'");

update.Parameters.AddWithValue("@CleanCounter", acZahl + 1);

update.ExecuteNonQuery();

Nur irgendwie macht er einfach nix, nicht mal einen Fehler bringt er 😕

16.835 Beiträge seit 2008
vor 10 Jahren
  1. [Artikelserie] SQL: Parameter von Befehlen
  2. Du musst den Befehl auch ausführen. ExecuteNonQuery

Aber beide Punkte gehören zu den Grundlagen beim Arbeiten mit SQL.

3.825 Beiträge seit 2006
vor 10 Jahren

Hallo canada,

wenn keine Zeile deine Where-Klausel erfüllt bekommst Du keine Fehlermeldung.

Sicher dass Du das Sql-Kommando auch ausführst ?

Führe dein Sql-Kommando mal im SQL Management Studio aus.

Beschäftige Dich unbedingt mit Parametern.

Ist die Variable acZahl richtig gesetzt ? Wenn schon ohne Parameter dann acZahl nicht in Hochkommas setzen.

Überprüfe Deine Routine auch mit dem Debugger.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

3.825 Beiträge seit 2006
vor 10 Jahren

Hallo canada,

das nächste Mal bitte nicht den Beitrag ändern, sondern einen neuen Beitrag erstellen, denn sonst sind für fremde Leser unsere Antworten nicht verständlich.

ExecuteNonQuery() gibt die Anzahl der geänderten Zeilen zurück, hast Du das mal kontrolliert ?

Hast Du die Werte mal mit dem Debugger geprüft ?

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

C
canada Themenstarter:in
17 Beiträge seit 2013
vor 10 Jahren

Tschuldigung, hat sich alles bissl überschnitten, hab eure Beiträge erst nach dem edit gesehen.

Also bekomme folgendes zurück: ExecuteNonQuery: Connection-Eigenschaft wurde nicht Initialisiert

T
62 Beiträge seit 2012
vor 10 Jahren
SqlCeCommand update = new SqlCeCommand("UPDATE Quarz SET CleanCounter = @CleanCounter WHERE Seriennummer '" + CbSeriennummer.Text + "'");  

Dort fehlt doch im WHERE zwischen Seriennummer und dem CbSeriennummer.Text auch ein "=" oder?

...WHERE Seriennummer = '" + CbSeriennummer.Text + "'");

Schöner ist natürlich den Value der gesucht wird auch als Parameter zu übergeben, wie Abt schon schrieb.

Also bekomme folgendes zurück: ExecuteNonQuery: Connection-Eigenschaft wurde nicht Initialisiert

Da Fehlt der Rest vom Code.
Kann es sein das du vergessen hast keinen Connectionstring anzugeben, bzw. das du generell keine Verbindung zur Datenbank angegeben hast?

849 Beiträge seit 2006
vor 10 Jahren

Hallo tASven,

ExecuteNonQuery: Connection-Eigenschaft wurde nicht Initialisiert

puh, und das hast Du nicht mit Hilfe von Google, Doku etc herausfinden können? Da steht genau was Dir fehlt. Ein Command braucht auch immer eine offene Connection. Also entweder weist Du dem Command eine Connection (offen!) zu, oder erzeugst deinen Command schon mit connection.CreateCommand().

Aber bitte einmal [Hinweis] Wie poste ich richtig? durchlesen. Danke.

3.825 Beiträge seit 2006
vor 10 Jahren

Und hier lesen : http://www.seven-c.de/files/datenbankenhowto.htm#8

Kapitel 8.

Für die Variable 'CbSeriennummer.Text' auch einen Parameter einbauen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3