Connexion aux bases de données
Pour accéder à une base de données via QSqlQuery ou QSqlQueryModel, créez et ouvrez une ou plusieurs connexions à la base de données. Les connexions à la base de données sont généralement identifiées par un nom de connexion, et non par le nom de la base de données. Vous pouvez disposer de plusieurs connexions à la même base de données. QSqlDatabase prend également en charge le concept de connexion par défaut, qui est une connexion sans nom. Lorsque vous appelez les fonctions membres QSqlQuery ou QSqlQueryModel qui prennent un argument de nom de connexion, si vous ne passez pas de nom de connexion, la connexion par défaut sera utilisée. La création d'une connexion par défaut est pratique lorsque votre application ne nécessite qu'une seule connexion à la base de données.
Notez la différence entre la création d’une connexion et son ouverture. La création d’une connexion implique la création d’une instance de la classe QSqlDatabase. La connexion n’est pas utilisable tant qu’elle n’a pas été ouverte. L’extrait de code suivant montre comment créer une connexion par défaut, puis l’ouvrir :
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("bigblue");
db.setDatabaseName("flightdb");
db.setUserName("acarlson");
db.setPassword("1uTbSbAs");
bool ok = db.open();La première ligne crée l’objet de connexion, et la dernière ligne l’ouvre pour qu’il puisse être utilisé. Entre les deux, nous initialisons certaines informations de connexion, notamment ` database name`, ` host name`, ` user name` et ` password`. Dans ce cas, nous nous connectons à la base de données MySQL flightdb sur l’hôte bigblue. L’argument ` "QMYSQL" ` de la fonction ` addDatabase()` spécifie le type de pilote de base de données à utiliser pour la connexion. L'ensemble des pilotes de base de données inclus avec Qt est présenté dans le tableau des pilotes de base de données pris en charge.
La connexion dans l’extrait de code sera la connexion par défaut, car nous ne transmettons pas le deuxième argument à ` addDatabase()`, à savoir le nom de la connexion. Par exemple, nous établissons ici deux connexions à la base de données MySQL nommées ` "first" ` et ` "second"` :
QSqlDatabase firstDB = QSqlDatabase::addDatabase("QMYSQL", "first");
QSqlDatabase secondDB = QSqlDatabase::addDatabase("QMYSQL", "second");Une fois ces connexions initialisées, appelez open() pour chacune d’elles afin d’établir les connexions actives. Si l’appel à open() échoue, la fonction renvoie false. Dans ce cas, appelez QSqlDatabase::lastError() pour obtenir des informations sur l’erreur.
Une fois la connexion établie, il est possible d’appeler la fonction statique ` QSqlDatabase::database()` depuis n’importe où en lui passant un nom de connexion pour obtenir un pointeur vers cette connexion à la base de données. Si aucun nom de connexion n’est fourni, elle renvoie la connexion par défaut. Par exemple :
QSqlDatabase defaultDB = QSqlDatabase::database();
QSqlDatabase firstDB = QSqlDatabase::database("first");
QSqlDatabase secondDB = QSqlDatabase::database("second");Pour supprimer une connexion à la base de données, fermez d’abord la base de données à l’aide de QSqlDatabase::close(), puis supprimez-la à l’aide de la méthode statique 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.