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语句进行相关的资源操作。

相关环境:

《Sqlite-database is locked》 图1
《Sqlite-database is locked》 图2

    原文作者:haozhouxu
    原文地址: https://www.jianshu.com/p/7ecd696ce4b7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞