我正在做一个涉及SQLite3的学校项目。我为我的DatabaseManager类创建了一系列函数,它们都运行得很好。
现在,在添加了一个带有DELETE语句的函数之后,sqlite3_step()返回SQLITE_BUSY,sqlite3_errmsg()说“数据库是锁定的”。
在打开这个函数之前,我已经调用了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语句也是正确的。
发布于 2018-01-19 21:15:32
“数据库被锁定”意味着有一些其他的活动事务。
您可能忘了在程序的其他部分完成一条语句。
https://stackoverflow.com/questions/48347966
复制相似问题