Connexion aux bases de données
Pour accéder à une base de données avec QSqlQuery ou QSqlQueryModel, créez et ouvrez une ou plusieurs connexions à la base de données. Les connexions aux bases de données sont normalement identifiées par le nom de la connexion, et non par le nom de la base de données. Vous pouvez avoir 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 fournissez 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'est pas ouverte. L'extrait suivant montre comment créer une connexion par défaut et 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 connexion et la dernière ligne l'ouvre pour utilisation. 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 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 dans Qt est indiqué dans le tableau des pilotes de base de données pris en charge.
La connexion dans l'extrait sera la connexion par défaut, car nous ne transmettons pas le deuxième argument à addDatabase(), qui est 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 que ces connexions ont été initialisées, open() pour chacune d'entre elles afin d'établir les connexions actives. Si open() échoue, il renvoie false. Dans ce cas, appelez QSqlDatabase::lastError() pour obtenir des informations sur l'erreur.
Une fois qu'une connexion est établie, nous pouvons appeler la fonction statique QSqlDatabase::database() à partir de n'importe quel endroit avec un nom de connexion pour obtenir un pointeur sur cette connexion à la base de données. Si nous ne transmettons pas de nom de connexion, la fonction renverra la connexion par défaut. Par exemple, pour supprimer une connexion à une base de données, il faut d'abord la fermer :
QSqlDatabase defaultDB = QSqlDatabase::database(); QSqlDatabase firstDB = QSqlDatabase::database("first"); QSqlDatabase secondDB = QSqlDatabase::database("second");
Pour supprimer une connexion à une base de données, il faut d'abord fermer la base de données à l'aide de QSqlDatabase::close(), puis la supprimer à 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.