Zum Inhalt springen
Der Guide für ein smartes Leben.
Datenbankprogrammierung

Kontaktverwaltung mit Visual C++

Im letzten Beitrag haben Sie eine SQL-Datenbank geschaffen, um Kontakte darin aufzunehmen. Jetzt gehen Sie daran, Ihren Anwendern die gewünschte Funktionalität über die Benutzeroberfläche einer Windows Forms-Anwendung zur Verfügung zu stellen.

Autoren: Redaktion pcmagazin und Walter Saumweber • 4.10.2009 • ca. 2:05 Min

Datenbankprogrammierung mit Visual C++
Datenbankprogrammierung mit Visual C++
© Archiv
Inhalt
  1. Kontaktverwaltung mit Visual C++
  2. Objektvariablen
  3. SelectedIndex
  4. ExecuteReader()

Der Anfang ist Routine. Sie legen im Visual Studio oder in Visual C++ Express ein neues Projekt mit der Vorlage Windows Forms-Anwendung an. Für das Beispiel benötigen Sie acht Button-, vier TextBox-, drei Label-Steuerelemente und eine ListBox. Ordnen Sie die Steuerelemente in etwa so an, wie Sie e...

Der Anfang ist Routine. Sie legen im Visual Studio oder in Visual C++ Express ein neues Projekt mit der Vorlage Windows Forms-Anwendung an. Für das Beispiel benötigen Sie acht Button-, vier TextBox-, drei Label-Steuerelemente und eine ListBox. Ordnen Sie die Steuerelemente in etwa so an, wie Sie es im Bild Steuerelemete sehen. Das ListBox-Steuerelement erhält die Begriffe Vorname, Nachname und E-Mail. Nach diesen Kriterien sucht der Benutzer später in der Datenbank seine Kontakte.

Datenbankprogrammierung mit Visual C++

Verbindung zur SQL-Datenbank

Datenbankprogrammierung mit Visual C++
Steuerelemente: Dies Formular im Windows Forms-Designer interagiert mit der Datenbank.
© Archiv

Der letzte Beitrag hat es bereits angekündigt: Sie müssen als Visual C++-Programmierer die Funktionalität selber einrichten, die es den Benutzern Ihrer Anwendung erlaubt, mit der Datenbank zu interagieren. Zunächst stellen Sie mit dem Programmcode eine Verbindung zur Datenbank her.

Für den Zugriff auf Datenbanken ist im .NET Framework der Namespace mit seinen Unternamespaces zuständig. Die Gesamtheit aller enthaltenen Klassen bezeichnet man als ADO.NET.

Speziell für den Zugriff auf SQL-Datenbanken gibt es den Namespace System::Data::SqlClient. Binden Sie diesen am besten im Code der Formulardatei ein, um die Klassen ohne qualifizierten Zugriff verwenden zu können (using namespace System::Data::SqlClient;). Die Verbindung zur Datenbank stellen Sie mit einem Objekt der Klasse SqlConnection her. Dem Konstruktor übergeben Sie die Verbindungszeichenfolge der Datenbank. Danach rufen Sie die Open()-Methode auf.

connection = gcnew SqlConnection
("<Verbindungszeichenfolge>");
connection->Open();
Datenbankprogrammierung mit Visual C++
MSDN-Hilfe: Die ADO.NET-Klassen bilden die Datenbankschnittstelle des .NET Frameworks.
© Archiv

Der Ausdruck dient als Platzhalter, der unter anderem vom Speicherort der Datenbank abhängig ist und stets mit Data Source= beginnt. Am einfachsten erhalten Sie die korrekte Verbindungszeichenfolge, indem Sie die entsprechende Zeile im Eigenschaftenfenster kopieren, nachdem Sie zuvor den Datenbankeintrag im Datenbank-Explorer selektiert haben.

Hinterher müssen Sie noch die enthaltenen doppelten Anführungszeichen entfernen und jeden Backslash verdoppeln - und natürlich die äußeren "" für den String- Datentyp hinzufügen. Die Verbindungszeichenfolge enthält alle notwendigen Informationen für das SqlConnection-Objekt, um sich mit der Datenbank zu verbinden.

Es macht Sinn, die beiden Anweisungen in der Methode für das Load-Ereignis des Formulars zu platzieren (Form1_Load()). Dieses Ereignis tritt ein, sowie das Anwendungsfenster geladen wird. Nach einer Sitzung sollten Sie die Datenbankverbindung mit der Close()-Methode wieder schließen. Der passende Zeitpunkt ist das FormClosed-Ereignis.

if (connection != nullptr)
connection->Close();

SQL-Befehle im C++-Code

Zuerst zur Kontakt-Klasse: Um die Kontakt- Datenbank einfacher zu programmieren und den Code übersichtlicher zu gestalten, definieren Sie im Projekt eine Kontakt-Klasse mit Membern für Vorname, Nachname und E-Mail-Adresse. In der gleichen Ereignismethode Form1_Load(), in der Sie gerade die Verbindung zur Datenbank hergestellt haben, lesen Sie jetzt alle bereits in der Datenbank vorhandenen Datensätze in eine generische Liste des Typs ^Kontakt ein.

command = connection->CreateCommand();
command->CommandText =
"SELECT * FROM Kontakte";
lesen = command->ExecuteReader();
while (lesen->Read())
{ meineKontakte->Add(gcnew Kontakt
(lesen-> GetString(0),
lesen->GetString(1),
lesen->GetString(2)));
}
lesen->Close();