C ++:关闭后不能删除sqlite文件

时间:2014-11-19 15:59:36

标签: c++ sqlite

我用这些函数编写了一个sqlite类:

bool Csqlite::init (string _InFile)
{
    if (sqlite3_open_v2(_InFile.c_str (), &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQLITE_ERROR)
         return false;

    return true;
}

void Csqlite::quit ()
{
    sqlite3_reset (stmt);
    sqlite3_clear_bindings (stmt);

    sqlite3_close(db);
}

bool Csqlite::execute (string _InOperation)
{
    if (sqlite3_prepare_v2 (db, _InOperation.c_str (), _InOperation.size () + 1, &stmt, NULL) != 0)
        return false;

    if (sqlite3_step (stmt) == SQLITE_ERROR)
        return false;

    return true;
}

现在,奇怪的是,如果我调用init,而不调用其他内容quit,那么我可以删除Windows中的本地文件。但是当我在这两个函数之间调用execute并再次尝试删除该文件时,Windows表示文件已经打开了。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您忘记使用sqlite3_finalize释放声明。