3

exeで同じフォルダ内のデータベースファイルに接続しようとすると、何か変です。エラー メッセージは表示されず、データベースからのデータはロードされません。

sdb = QSqlDatabase::addDatabase("QSQLITE");
sdb.setDatabaseName("lang.sqlite");

if (!sdb.open())
{
    qDebug() << sdb.lastError().text();

    QMessageBox msgBox;
    msgBox.setIcon(QMessageBox::Critical);
    msgBox.setText(sdb.lastError().text());
    msgBox.setStandardButtons(QMessageBox::Ok);
    msgBox.exec();
}

しかし、データベースを別のフォルダーに移動すると、すべて正常に動作します。

sdb = QSqlDatabase::addDatabase("QSQLITE");
sdb.setDatabaseName("db\\lang.sqlite");

if (!sdb.open())
{
    qDebug() << sdb.lastError().text();

    QMessageBox msgBox;
    msgBox.setIcon(QMessageBox::Critical);
    msgBox.setText(sdb.lastError().text());
    msgBox.setStandardButtons(QMessageBox::Ok);
    msgBox.exec();
}

何か案は?

4

1 に答える 1

4

これを試して:

sdb.setDatabaseName(qApp->applicationDirPath()
                    + QDir::separator()
                    + "lang.sqlite" );
于 2012-05-12T15:02:45.000 に答える