我用这些函数编写了一个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表示文件已经打开了。
有什么想法吗?