sqlite3解决A table inthe database is locked

在使用 SQLite3 进行数据库操作时遇到插入数据时出现表锁定的问题,错误代码为 6。通过分析,发现可能是因为 SQL 语句编译后的字节码导致的。解决方案是使用 sqlite3_finalize() 函数来销毁 SQL 声明,释放内存,确保在数据库关闭前所有准备好的声明都被释放。此外,sqlite3_reset() 函数可以重置 SQL 声明状态以便再次执行。
摘要由CSDN通过智能技术生成

昨天写sqlite3数据库插入函数,总是只能插入一条数据,第二次数据插入不了,得到的报错信息是rc = 6,A table inthe database is locked

因为我在插入之前调用了sqlite3_prepare(),被操作的表被SQL 语句编译后的字节码绑定,所以我想应该使用函数sqlite3_finalize()释放分配给字节码的内存空间

 

sqlite3_finalize

函数原型:

int sqlite3_finalize(sqlite3_stmt* pStmt);

函数功能: 销毁一个 SQL 声明,释放内存。

输入参数:pStmt,待销毁的 SQL 声明;

输出参数:无

返回值:执行成功返回SQLITE_OK,否则返回其他值

 

sqlite3_prepare接口把一条 SQL 语句编译成字节码留给后面的执行函数。

任何时候如果调用 sqlite3_finalize() 将销毁一个准备好的 SQL 声明.在数据库

关闭之前,所有准备好的声明都必须被释放销毁。sqlite3_reset() 函数用来重置

一个 SQL 声明的状态,使得它可以被再次执行。

intread_user_name(sqlite3 *db,char **errmsg,char *name)  //check online id ,compare id have no same

{

       int rc;

      

       sqlite3_stmt *stmt = NULL;

       rc = sqlite3_prepare(db,"select *fro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值