2016-12-30 173 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");