sqlite3如何解决 *** 作数据库,文件一直占用,关闭数据库后,文件仍无法删除,c语言调用。

sqlite3如何解决 *** 作数据库,文件一直占用,关闭数据库后,文件仍无法删除,c语言调用。,第1张

在数据删除后,手动执行VACUUM命令,执行方式很简单

sqlite>vacuum;

VACUUM命令会清空“空闲列表”,把数据库尺寸压缩到最小。但是要耗费一些时间。

FQA里面说,在Linux的环境下,大约0.5秒/M。并且要使用两倍于数据库文件的空间。

我憎恨此FQA,他只说系统环境,不说机器硬件环境。我在测试手机上执行用了将近13秒时间压缩了将近3M的空间。至于它所占用的另一部分空间,是生成了一个.db-journal后缀名的临时文件。

关于数据库句柄,每次用完是必须手动调用close()方法关掉的;关于cursor一般情况也是要求关掉的,如果只获取了一次结果集,不关掉cursor对程序的逻辑没有影响,只是会抛一个非必要性异常,但是如果多次获取结果集,就必须先关掉cursor,再重新获取结果集,否则cursor没释放,之后的结果集是获取不到的,且会报错。所以,总的来说,都要关掉。

跟你举个例子,

内存是一个有10个蹲位的厕所

而你上面那个就代表了有一个人进入一个蹲位,当这个人解决问题后,则必须db.close(),也就是你要离开这个蹲位,不离开可以吗,不离开当然可以,但问题是如果你不离开,对你也没有什么好处,如果10个人都这样不离开(不进行db.close()),那么第11个人只能在外面忍着了。简直就是损人不利己的事


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10027623.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存