2016-12-12 3 views
0

Indépendamment du paramètre que j'ai défini sur la fonction setDatabaseName, la fonction open renvoie toujours la valeur true. Est-ce normal?QSqlDatabase :: open() renvoie toujours vrai Qt 5.3.2

Par exemple:

Si je courais le code suivant:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 

db.setDatabaseName(""); 

if(db.open()) 
{ 
    qDebug() << "open"; 
} 

La fonction open retourne true. Ce que j'attends, c'est que la fonction open ne renvoie true que si elle a été correctement connectée à la base de données.

je trouve déjà quelques sujets, mais pas résolu mon problème:

Qt 5.5 QSqlDatabase::open() always returns true?

QSqlDatabase::open() always returns true

QSqlDatabase open always returns true after update

J'utilise SQLite et Qt 5.3.2.

+2

Pour sqlite, il crée une base de données si le fichier n'existe pas. Bien que je ne suis pas sûr de ce qu'il est censé faire si vous lui donnez un nom de fichier vide. – drescherjm

+0

@drescherjm, merci. Je ne le savais pas. Donc, si j'ai besoin de vérifier si le fichier de base de données existe, dois-je le faire "manuellement"? – KelvinS

+0

Dans mon code, je vérifie si le fichier existe. – drescherjm

Répondre

1

C'est normal, car la connexion vous réussit. Plus précisément, si une base de données n'existe pas, sqlite le créera. La connexion échouera uniquement si la base de données ne peut pas être créée avec un chemin de fichier donné. Si vous souhaitez vérifier si un fichier existe, utilisez QFile::exists().