0
Je suis incapable de comprendre ce que je fais mal ici. J'utilise Qt 5.7.1 et le code est le suivant:QSqlDatabase ne s'ouvre pas
QString filePath = QCoreApplication::applicationDirPath();
QString dbPath = QDir(filePath).absoluteFilePath("../../../Database");
m_db = QSqlDatabase::addDatabase("QSQLITE", "user_connection");
m_db.setDatabaseName(dbPath + "/Sensor_Objects.db");
qDebug() << filePath << " & " << dbPath;
if (!m_db.open())
qDebug() << "Database Error: " + m_db.lastError().text();
else
{
qDebug() << "Database: connection ok";
createDatabase("Sensor_Objects");
m_db.close();
}
qDebug() est l'impression des chemins d'accès aux répertoires correctement et encore m_db.open() échoue avec l'erreur « base de données Erreur: mémoire Erreur d'ouverture de la base de données ".
Utilisez un débogueur. Définissez un point d'arrêt sur 'sqlite3_open',' sqlite3_open_v2', etc. Vérifiez qu'ils sont appelés avec les arguments corrects. Sous Linux, utiliser 'strace' &' ltrace' pourrait aussi aider. BTW, le bug peut être en dehors des lignes que vous montrez. –
La chose est ... le même code a parfaitement fonctionné quand j'utilisais Qt 5.6. Pourrait-il être un problème avec le pilote 5.7? – user2522981
Etes-vous sûr que votre programme n'a pas [comportement indéfini] (https://en.wikipedia.org/wiki/Undefined_behavior) - peut-être ailleurs? Et vous ne montrez pas tout votre code source. –