1

SQLite データベースで動作するコードを書いています。データベースのすべてのコードは機能しますが、最後にデータベースを削除しようとすると、データベース ファイルが削除されません。close 関数を呼び出したのに、データベースを削除できないのはなぜですか? db.isOpen(); 関数は false を返し、QFile::remove(path); を返します。も false を返します。注: Windows エクスプローラーでは、プログラム ウィンドウを閉じた後にのみデータベースを削除できます。

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QString path = "path_to_db";
db.setDatabaseName(path);

if(db.open())
{
    qDebug() << "Opened";
    qDebug() << path;
}
else
{
    qDebug() << db.lastError();
    return a.exec();
}
QSqlQuery query(db);

//code to work with the database

db.close();
qDebug() << db.isOpen();
qDebug() << QFile::remove(path);
4

1 に答える 1

4

query.clear();解決策を見つけました。接続を閉じる前に呼び出すだけです。

于 2013-02-19T01:57:31.587 に答える