Datenbankprogrammierung

ExecuteReader()

Den so konstruierten SQL-Befehl schicken Sie mit command-> ExecuteNonQuery(); des SqlCommand-Objekts ab. Während die ExecuteReader()-Methode für SELECT-Abfragen verwendet wird und passend dazu ein SqlDataReader-Objekt zurückliefert, verwenden Sie für UPDATE-, INSERT- und DELETEBefehle die Methode ExecuteNonQuery(), welche die Anzahl der betroffenen Datensätze zurückgibt.

Da es sich hier jedoch stets um nur einen handelt, machen Sie von dieser Information keinen Gebrauch. Anschließend sollten Sie dem Benutzer noch mitteilen, dass der Datensatz gespeichert wurde.

Da der neue Kontakt sowohl in der Datenbank als auch in der Liste am Ende eingefügt wird, empfiehlt es sich außerdem, den Index entsprechend zu aktualisieren (dsindex = Kontakt::Anzahl - 1;). Auch wenn ein Kontakt gelöscht werden soll (Schaltfläche Löschen), müssen Sie diesen aus der Datenbank und der Liste entfernen. Dazu durchlaufen Sie in einer for each-Schleife die komplette Liste, wobei Sie prüfen, ob die E-Mail-Adresse, die aktuell im Textfeld steht, überhaupt gespeichert ist.

Nur wenn die Bedingung k-> Email == text-Box2-> Text zutrifft, löschen Sie das Element und zwar zuerst aus der Liste. Dazu verwenden Sie die Methode Remove(), deren booleschen Rückgabewert Sie erneut überprüfen. Der Wert true bedeutet, dass das Element in der Liste vorhanden war und entfernt werden konnte: if(meineKontakte->Remove(k) == true). Nur unter dieser Voraussetzung löschen Sie den entsprechenden Datensatz aus der SQL-Datenbank und melden dies entsprechend:

command->CommandText =
"DELETE FROM Kontakte WHERE [E-Mail] =
," + textBox2->Text + "'";
command->ExecuteNonQuery();
MessageBox::Show("Kontakt wurde gelöscht");

Unbedingt notwendig ist es jetzt noch, ie Variable Anzahl um Eins zu verringernd (Kontakt::Anzahl--;). Ansonsten könnte beim Navigieren zwischen den Kontakten ein ungültiger Objektzugriff erfolgen. Vielleicht werden Sie sich jetzt fragen, warum es beim Hinzufügen eines neuen Kontaktes nicht notwendig war, die Variable Anzahl zu erhöhen.

Die Antwort lautet: Sie sparen die Arbeit, weil die Klasse Kontakt so eingerichtet ist, dass dies automatisch in den Konstruktoren erfolgt. Im .NET Framework kann der Destruktor jedoch für ähnliche Zwecke - eine Variable, welche die Gesamtzahl von Objekten wiedergibt, zu dekrementieren - nicht verwendet werden. Denn der Destruktor arbeitet unter der Regie des Garbage Collectors in der Regel zeitversetzt.

Heft-DVD

Die Heft-DVD (PC Magazin 11/2009) enthält das Projekt Kontaktverwaltung mit der SQL-Datenbank. Diese besteht aus der Datei Kontakte.mdf und der Log-Datei Kontakte_log.LDF. Die Datenbank enthält bereits drei Dummy-Kontakte, um die Funktionalität des Programms sofort testen zu können. Beachten Sie bitte im Text, wie Sie im Beispielcode die Verbindungszeichenfolge zur Datenbank anpassen.

Außerdem finden Sie auf der Heft-DVD den Beitrag der letzten Ausgabe als PDF-Dokument. Dieser Artikel zeigt, wie Sie in Visual Studio bzw. in der Visual C++ 2008 Express Edition eine SQL-Datenbank erstellen. Die Visual C++ 2008 Express Edition beziehen Sie kostenlos über: www.microsoft.com

Mehr zum Thema

HTML 5
Webgestaltung

Google Web Designer ist spezialisiert auf HTML5. Ein Vorteil dieses Standards ist das einfache Einbinden von Videos mit dem Element video. Wir zeigen…
Wir verraten, wie Sie Fritzboxen und andere Router vor Hackern schützen.
Fritzbox, Asus, Belkin und Co.

Fritzbox, Asus, Belkin oder DLink - die Liste der geknackten Router ist lang. Hacker stahlen Passwörter oder NAS-Daten. So machen Sie Ihren Router…
Wir führen Sie zur eigenen Windows-App - unserem PC-Magazin-RSS-Feed.
C# und XAML

Wir zeigen, wie Sie Windows 8.1 Apps selbst programmieren können. Lernen Sie das App erstellen an Hand unseres Beispiels: dem RSS-Feed von PC…
Windows Tipps & Tricks: Benutzerrechte unter Windows 8.1
Programme richtig installieren

Wir zeigen Ihnen, wie Sie sich unter Windows 8.1 alle Benutzerrechte verschaffen und Programme richtig installieren.
Windows 8: Starbildschirm
Microsoft Project Siena

Erstellen Sie sich selbst eine App für Windows 8, die auf alle Funktionen Ihres Tablets zugreifen kann, inklusive Kamera, Mikrofon und Lautsprecher.…