SQLite错误代码:sqlite_step()返回5(SQLITE_BUSY)

时间:2018-01-19 19:08:56

标签: c++ sqlite

我正在开展涉及SQLite3的学校项目。 我为DatabaseManager课程创建了一系列功能,这些功能都非常好。

现在,在添加带有 DELETE 语句的函数后,sqlite3_step()会返回SQLITE_BUSYsqlite3_errmsg()会说"数据库已被锁定& #34;

在打开此功能之前,我已拨打sqlite3_finalize()sqlite3_close()

int errorcode;

sqlite3 *db;

//sql statement
std::string statement = "DELETE FROM tbl_follower WHERE flw_ID = " + std::to_string(row);

sqlite3_stmt *binStatement;

errorcode = sqlite3_open(m_filePath.c_str(), &db);

if (errorcode != SQLITE_OK)
    std::cerr << sqlite3_errmsg(db) << std::endl;

errorcode = sqlite3_prepare_v2(db, statement.c_str(), statement.size(), &binStatement, NULL);

if(errorcode != SQLITE_OK)
    std::cerr << sqlite3_errmsg(db) << std::endl;

errorcode = sqlite3_step(binStatement);

if (errorcode == SQLITE_DONE)
{
    sqlite3_finalize(binStatement);
    sqlite3_close(db);
}
else
{
    //error
    std::cerr << sqlite3_errmsg(db) << std::endl;
    sqlite3_finalize(binStatement);
    sqlite3_close(db);
}

我很确定这个问题出现在这段代码中,因为我已经检查了所有其他函数是否存在错误(这些函数都可以正常运行而不会出错)。我的SQL语句也是正确的。

1 个答案:

答案 0 :(得分:0)

&#34;数据库被锁定&#34;表示存在其他一些活动交易。

你可能忘了在程序的其他部分完成一个声明。