Verbindung zu Datenbanken herstellen

Um mit QSqlQuery oder QSqlQueryModel auf eine Datenbank zuzugreifen, erstellen und öffnen Sie eine oder mehrere Datenbankverbindungen. Datenbankverbindungen werden normalerweise anhand des Verbindungsnamens und nicht anhand des Datenbanknamens identifiziert. Sie können mehrere Verbindungen zur selben Datenbank unterhalten. „ QSqlDatabase “ unterstützt zudem das Konzept einer Standardverbindung, bei der es sich um eine unbenannte Verbindung handelt. Wenn Sie die Memberfunktionen „ QSqlQuery “ oder „ QSqlQueryModel “ aufrufen, die ein Argument für den Verbindungsnamen erwarten, wird die Standardverbindung verwendet, sofern Sie keinen Verbindungsnamen übergeben. Das Erstellen einer Standardverbindung ist praktisch, wenn Ihre Anwendung nur eine Datenbankverbindung benötigt.

Beachten Sie den Unterschied zwischen dem Erstellen einer Verbindung und dem Öffnen derselben. Das Erstellen einer Verbindung umfasst das Erzeugen einer Instanz der Klasse ` QSqlDatabase`. Die Verbindung ist erst nach dem Öffnen nutzbar. Der folgende Codeausschnitt zeigt, wie Sie eine Standardverbindung erstellen und anschließend öffnen:

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("bigblue");
    db.setDatabaseName("flightdb");
    db.setUserName("acarlson");
    db.setPassword("1uTbSbAs");
    bool ok = db.open();

In der ersten Zeile wird das Verbindungsobjekt erstellt, und in der letzten Zeile wird es zur Nutzung geöffnet. Dazwischen initialisieren wir einige Verbindungsinformationen, darunter ` database name`, ` host name`, ` user name` und ` password`. In diesem Fall stellen wir eine Verbindung zur MySQL-Datenbank ` flightdb ` auf dem Host ` bigblue` her. Das Argument ` "QMYSQL" ` der Funktion ` addDatabase()` gibt den Typ des für die Verbindung zu verwendenden Datenbanktreibers an. Die in Qt enthaltenen Datenbanktreiber sind in der Tabelle der unterstützten Datenbanktreiber aufgeführt.

Die Verbindung im Codeausschnitt ist die Standardverbindung, da wir das zweite Argument an ` addDatabase()` – nämlich den Verbindungsnamen – nicht übergeben. Hier stellen wir beispielsweise zwei MySQL-Datenbankverbindungen mit den Namen ` "first" ` und ` "second"` her:

    QSqlDatabase firstDB = QSqlDatabase::addDatabase("QMYSQL", "first");
    QSqlDatabase secondDB = QSqlDatabase::addDatabase("QMYSQL", "second");

Nachdem diese Verbindungen initialisiert wurden, rufen wir für jede einzelne ` open()` auf, um die aktiven Verbindungen herzustellen. Wenn ` open()` fehlschlägt, gibt sie ` false` zurück. In diesem Fall rufen Sie ` QSqlDatabase::lastError()` auf, um Fehlerinformationen abzurufen.

Sobald eine Verbindung hergestellt ist, können wir die statische Funktion ` QSqlDatabase::database()` von überall aus mit einem Verbindungsnamen aufrufen, um einen Zeiger auf diese Datenbankverbindung zu erhalten. Wenn wir keinen Verbindungsnamen übergeben, wird die Standardverbindung zurückgegeben. Zum Beispiel:

    QSqlDatabase defaultDB = QSqlDatabase::database();
    QSqlDatabase firstDB = QSqlDatabase::database("first");
    QSqlDatabase secondDB = QSqlDatabase::database("second");

Um eine Datenbankverbindung zu entfernen, schließen Sie zunächst die Datenbank mit ` QSqlDatabase::close()` und entfernen Sie sie anschließend mit der statischen Methode ` QSqlDatabase::removeDatabase()`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.