我正在开展涉及SQLite3的学校项目。
我为DatabaseManager
课程创建了一系列功能,这些功能都非常好。
现在,在添加带有 DELETE 语句的函数后,sqlite3_step()
会返回SQLITE_BUSY
而sqlite3_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语句也是正确的。
答案 0 :(得分:0)
&#34;数据库被锁定&#34;表示存在其他一些活动交易。
你可能忘了在程序的其他部分完成一个声明。