2016-12-30 172 views
0

我无法理解我在这里做错了什么。我使用Qt 5.7.1,代码如下:QSqlDatabase不能打开

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()正确,但m_db.open()打印路径的目录失败,错误“数据库错误:内存不足打开数据库时出错“。

+0

使用调试器。在'sqlite3_open','sqlite3_open_v2'等设置一个断点。检查它们是否被调用了正确的参数。在Linux上,使用'strace'&'ltrace'也可能有帮助。顺便说一句,这个错误可能会超出你所显示的行数。 –

+0

事情是......当我使用Qt 5.6时,相同的代码完美工作。这可能是5.7驱动程序的问题吗? – user2522981

+0

你确定你的程序没有[未定义的行为](https://en.wikipedia.org/wiki/Undefined_behavior) - 也许是别的什么地方?而且你不显示你所有的源代码。 –

回答

0

大概点DBPATH,尝试用

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