Qt QSQL数据库未打开

Qt QSQL数据库未打开,qt,sqlite,qsqldatabase,Qt,Sqlite,Qsqldatabase,我无法理解我在这里做错了什么。我使用的是Qt 5.7.1,代码如下: QString filePath = QCoreApplication::applicationDirPath(); QString dbPath = QDir(filePath).absoluteFilePath("../../../Database"); m_db = QSqlDatabase::addDatabase("QSQLITE", "user_connection"); m_db

我无法理解我在这里做错了什么。我使用的是Qt 5.7.1,代码如下:

    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();
    }
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()可能点是dbpath,请尝试

m_db.setDatabaseName(dbPath.toLatin1() + "/Sensor_Objects.db");

使用调试器。在
sqlite3\u open
sqlite3\u open\u v2
等上设置断点。检查是否使用正确的参数调用它们。在Linux上,使用
strace
ltrace
也可能有帮助。顺便说一句,这个bug可能超出了您正在展示的内容。问题是..当我使用Qt5.6时,同样的代码工作得非常好。这可能是5.7驱动程序的问题吗?您确定您的程序没有-可能是在其他地方?并且您没有显示所有的源代码。请检查您是否确实在指定的路径上有Sensor_Objects.db。还要检查您是否有权读取和写入该路径和数据库。它已开始工作!我真的不知道如何…我没有改变直接处理数据库的代码中的任何内容。正如@BasileStarynkevitch所说,这个错误很可能来自其他地方。无论如何,谢谢你的帮助!