Verbinden mit Datenbanken
Um mit QSqlQuery oder QSqlQueryModel auf eine Datenbank zuzugreifen, erstellen und öffnen Sie eine oder mehrere Datenbankverbindungen. Datenbankverbindungen werden normalerweise durch den Verbindungsnamen und nicht durch den Datenbanknamen identifiziert. Sie können mehrere Verbindungen zu derselben Datenbank haben. QSqlDatabase unterstützt auch das Konzept einer Standardverbindung, die eine unbenannte Verbindung ist. Wenn Sie die Funktionen QSqlQuery oder QSqlQueryModel aufrufen, die ein Argument für den Verbindungsnamen benötigen, wird die Standardverbindung verwendet, wenn 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 einer Verbindung. Beim Erstellen einer Verbindung wird eine Instanz der Klasse QSqlDatabase erzeugt. Die Verbindung ist erst nutzbar, wenn sie geöffnet wird. Der folgende Ausschnitt zeigt, wie man eine Standardverbindung erstellt und sie dann öffnet:
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 Verwendung 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"
in addDatabase() gibt den Typ des Datenbanktreibers an, der für die Verbindung verwendet werden soll. Die in Qt enthaltenen Datenbanktreiber sind in der Tabelle der unterstützten Datenbanktreiber aufgeführt.
Die Verbindung im Schnipsel ist die Standardverbindung, da wir das zweite Argument an addDatabase(), den Verbindungsnamen, nicht übergeben. In diesem Beispiel richten wir zwei MySQL-Datenbankverbindungen mit den Namen "first"
und "second"
ein:
QSqlDatabase firstDB = QSqlDatabase::addDatabase("QMYSQL", "first"); QSqlDatabase secondDB = QSqlDatabase::addDatabase("QMYSQL", "second");
Nachdem diese Verbindungen initialisiert wurden, wird open() für jede dieser Verbindungen ausgeführt, um die aktiven Verbindungen herzustellen. Wenn open() fehlschlägt, gibt es false
zurück. In diesem Fall rufen Sie QSqlDatabase::lastError() auf, um Fehlerinformationen zu erhalten.
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. Ein Beispiel:
QSqlDatabase defaultDB = QSqlDatabase::database(); QSqlDatabase firstDB = QSqlDatabase::database("first"); QSqlDatabase secondDB = QSqlDatabase::database("second");
Um eine Datenbankverbindung zu entfernen, schließen Sie zuerst die Datenbank mit QSqlDatabase::close() und entfernen Sie sie dann mit der statischen Methode QSqlDatabase::removeDatabase().
© 2025 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.