Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Datensätze mit dem DELETE Statement löschen

Geschrieben von: Christoph Wille
Kategorie: Datenbank

Im heutigen Artikel beschäftigen wir uns mit einem weiteren SQL Statement - dem DELETE Kommando. Mit diesem kann man einfach, schnell und bequem Datensätze aus einer Tabelle löschen - und man überlässt dabei die gesamte Arbeit der Datenbank.

Im Vergleich zu INSERT oder UPDATE ist die Syntax sogar noch um einiges einfacher:

DELETE FROM TableName WHERE Condition

Wenn man also vor hat, die gesamte Tabelle unwiderbringlich (außer durch Restore) von Datensätzen zu säubern, so sieht das DELETE Statement wie folgt aus (für die titleauthor Tabelle aus der Datenbank pubs des SQL Server):

DELETE FROM titleauthor

Zugegebenermaßen kommt das wohl eher etwas selten vor - eher will man Datensätze gezielt aus der Tabelle löschen, und zwar vielleicht so:

DELETE FROM titleauthor WHERE title_id='BU2075'

Wie man sieht, gelten hier die gleichen Regeln für Zeichenketten wie überall anders in SQL auch - die Strings müssen mit Apostrophen eingegrenzt werden. Weiters gilt für DELETE auch das gleiche wie für UPDATE - entspricht mehr als ein Datensatz dem Kriterium, wird auch dieser von der Aktion berührt, was im Falle des DELETE Statements die Löschung ist.

Sehen wir uns das oben gezeigte DELETE Statement einmal in "Action" an - in einer einfachen, aber bereits sehr optimierten ASP Seite:

<%
strSQLServerName = "StrangeLove"
strDatebaseName = "pubs"
strUserName = "sa"
strPassword = ""
	
strConnection = "Provider=SQLOLEDB;Data Source=" & strSQLServerName & _
  ";Initial Catalog=" & strDatebaseName & ";User ID=" & strUserName & _
  ";Password=" & strPassword & ";"
	
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open strConnection

Const adCmdText = 1
Const adExecuteNoRecords = 128
nRowsAffected = CLng(0)
conn.Execute "DELETE FROM titleauthor WHERE title_id='BU2075'", _
    nRowsAffected, adCmdText Or adExecuteNoRecords

Response.Write nRowsAffected & " Records gelöscht"
%>

Der Grund, warum ich hier von einer hochoptimierten Seite rede, ist folgender: ich teile der Execute Methode sehr genau mit, was sie von mir bekommt (adCmdText), und was ich von ihr nicht will (adExecuteNoRecords). Der Vorteil Nummer Eins ist, ADO muß nicht herausfinden, welche Art von Kommando ich absetzen will. Der Vorteil Nummer Zwei ist, ADO erstellt kein Recordset Objekt umsonst, was eine deutliche Beschleunigung bringt.

Erwähnenswert ist sicherlich auch noch die Variable nRowsAffected. Diese liefert mir die Anzahl der Datensätze, die vom DELETE Kommando gelöscht wurden. Damit kann man eine nette Benutzerausgabe generieren.

Die beiden Konstanten adCmdText und adExecuteNoRecords sind in dieser ASP Datei händisch deklariert, ich hätte diese allerdings auch über das METADATA Statement automatisch deklarieren lassen können:

<!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" 
	TYPE="TypeLib" 
	UUID="{00000205-0000-0010-8000-00AA006D2EA4}"
-->

Schlußbemerkung

Auch das DELETE Statement kann ADO Fehler auslösen, und zwar meist dann, wenn Fremdschlüsselbeziehungen durch das Statement verletzt werden würden. Ergo - eine Fehlerbehandlung sollte man auf alle Fälle einplanen!

Verwandte Artikel

Aktualisieren von Daten mit dem UPDATE Statement
Benutzerverwaltung leicht gemacht: Teil 1
Ein einfacher Query Analyzer
Einfügen eines Datensatzes mit dem INSERT Statement
Stored Procedures einfach erstellt
Update und UpdateBatch zum Einfügen von Datensätzen in Datenbanken

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.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.