Sqlite-database is locked

背景:

c#编写sql语句插入的sqlite本地数据库的时候,遇到database is locked。

解决方案:

1、首先怀疑是否插入的格式不正确,一开始编写的是 insert into tablename values(?,?,?,?),尝试更换其他格式,在sqlite软件执行,可以正确插入,但是在c#中,还是会遇到database is locked。

2、怀疑是否哪里没有关闭资源,最后经过多次排查,发现是一个SqliteDataReader读取完之后,没有进行关闭,但是这个reader是写在using的语句中,猜测应该用完,垃圾回收器会进行回收。但是实际是没有,导致数据库一直被占用着,产生了这个错误。后面只需要在reader加上close方法,即可正常插入。

注意:

1、旧版本的sqlite可能存在开启一个SqliteConnection,SqliteDataReader都是需要手动关闭,执行Close方法。

2、最好都是使用using语句进行相关的资源操作。

相关环境:

图1
图2
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 6,352评论 0 4
  • #import<Foundation/Foundation.h> #import #import "sqlTest...
    lichengjin阅读 504评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,728评论 25 708
  • 师兄们早上好悟来了,继续终南山系列分享之——闻仙沟——从睁着眼瞎玩到闭着眼神游 八日早上近六点钟一行人跟着春浩师兄...
    自在行者黄春浩阅读 740评论 2 0
  • 昨天晚上,看完《最强大脑》就已经十一点了。儿子在我的督促下,洗漱上床。我准备睡觉时,想起来儿子的手机在阳台充电,于...
    画屏闲展阅读 400评论 0 1

友情链接更多精彩内容