Aktualisieren von Daten mit dem UPDATE Statement
Geschrieben von: Christoph Wille Daten in einer Datenbank kann man mit ADO auf zweierlei Arten verändern - einerseits durch Verwendung eines Recordsets mit der Update Methode, als auch mit dem UPDATE Statement und dem Execute Befehl des Connection Objekts. Meist ist UPDATE die schnellere Wahl, und was noch hinzukommt, die flexiblere Lösung. Dieser Artikel ist ein Folgeartikel zu Einfügen eines Datensatzes mit dem INSERT Statement. Es gelten für das UPDATE Statement die gleichen Voraussetzungen für Textwerte, Datumswerte und Zahlenwerte wie für das INSERT Statement. Änderungen an einzelnen DatensätzenGenerell sieht die Syntax des UPDATE Statement vereinfacht wie folgt aus: UPDATE Tabelle SET Feld1 = 'neuer Wert', Feld2 = 'neuer Wert' WHERE SchlüsselFeld = Schlüsselwert Um also beispielweise den Nachnamen in einer Personentabelle zu ändern, könnte ein UPDATE Statement wie folgt aussehen: UPDATE tPersonendaten SET Nachname = 'Wille' WHERE SozVersNummer = 4711010100 In diesem Beispiel wird - so die Spalte SozVersNummer ein Primärschlüsselfeld ist - nur dieser eine Datensatz verändert. Wenn mehrere Zeilen das Einschränkungskriterium erfüllen, so wird jede einzelne Zeile aktualisiert. Um gleich auf eine Gefahr hinzuweisen - was passiert, wenn man auf die WHERE Clause vergisst, und folgendes Statement ausführt? UPDATE tPersonendaten SET Nachname = 'Wille' Nun, es fehlt die Einschränkung auf die Zeile, die verändert werden soll - und wenn es keine Einschränkung gibt, dann gilt das UPDATE für alle Zeilen! Und dann sollte man ein möglichst aktuelles Backup haben, um die Daten wieder in den Originalzustand versetzen zu können. Ergo - Vorsicht, immer das UPDATE Statement doppelt kontrollieren! UPDATE's an mehreren ZeilenWarum widme ich dieser Thematik eine eigene Überschrift? Der Grund ist, daß man mit dem UPDATE Statement elegant und schnell Code dieser Art beschleunigen kann: ' rs mit "SELECT * from tProducts" geöffnet While Not rs.EOF rs("Preis") = rs("Preis") * 0.02 rs.Update rs.MoveNext Wend rs.Close Das Problem ist hier, daß ich über eine potentiell sehr große Anzahl von Zeilen iteriere, und mit den einzelnen Aufrufen von Update die Performance meiner Applikation zerstöre. Man könnte es zwar mit Tricks (client-side Cursor, etc) erträglich machen, aber es gibt eine bessere Lösung: conn.Execute "UPDATE tProducts SET Preis=Preis*0.02" Der Code reduziert sich auf eine Zeile, und die Arbeit des Änderns wird von der Software durchgeführt, die es am besten kann: die Datenbank. SchlußbemerkungIm heutigen Artikel habe ich mich auf die häufigsten Anwendungsfälle beschränkt. Die vollständige Syntax des UPDATE Statements erlaubt es unter anderen auch Berechnungen für Updates über mehrere Tabellen hinweg durchzuführen, und einiges an spannenden Dingen mehr. Verwandte Artikel
Benutzerverwaltung leicht gemacht: Teil 1 Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |