2016-12-30 6 views
0

ここで間違っていることを理解できません。正しくは(まだm_db.open)ディレクトリへのパスを印刷するデータベースエラー」エラーで失敗している)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を(::メモリのうち、私はQtの5.7.1を使用していますが、次のようにコードがありますエラーデータベースを開く "。

+0

デバッガを使用してみてください、DBPATHです。 'sqlite3_open'、' sqlite3_open_v2'などにブレークポイントを設定します。正しい引数で呼び出されていることを確認してください。 Linuxでは、 'strace'と' ltrace'を使っても役に立ちます。ところで、バグはあなたが表示している行の外にあるかもしれません。 –

+0

Qt 5.6を使用していたとき、同じコードが完全に機能していました。 5.7ドライバで問題になることはありますか? – user2522981

+0

あなたのプログラムには[未定義の動作](https://en.wikipedia.org/wiki/Undefined_behavior) - おそらくどこか別のものがありますか?すべてのソースコードを表示するわけではありません。 –

答えて

0

おそらくポイントは

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