sqlite数据库在插入时被锁定

邪恶的海狸

有一个简单的代码

var insert = 
    @"INSERT INTO [files] (
     [Name],
     [FullName],
     [MD5])
     VALUES (@Name, @FullName, @MD5);";
using (var con = _db.OpenConnection())
{
    using (var cmd = con.CreateCommand())
    {
        cmd.CommandText = insert;
        cmd.Parameters.AddWithValue("@Name", item.Name);
        cmd.Parameters.AddWithValue("@FullName", item.FullName);
        cmd.Parameters.AddWithValue("@MD5", item.MD5);
        cmd.ExecuteNonQuery();
    }
 }

应用程序在执行时挂起一段时间

cmd.ExecuteNonQuery();

然后失败,出现异常“数据库已锁定”。为什么会这样呢?应用程序不是多线程的。数据库文件是刚刚创建的。

邪恶的海狸

问题解决了。在此代码之前,已调用SqlCommand.ExecuteReader()。尽管创建了该读取器的连接和命令已被处置,但该读取器本身并未被处置。用“ using(reader)”修复后,连接已正确关闭,上述错误消失了。

总计:即使显式处理了connection和SqlCommand,DataReader仍然可以保持连接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

插入时锁定C#sqlite数据库

来自分类Dev

Android Sqlite 数据库在执行批量插入时被锁定

来自分类Dev

SQLite 插入循环错误'SQLiteException:'数据库被锁定'

来自分类Dev

数据库被锁定错误sqlite ios

来自分类Dev

Delphi:数据库已锁定(SQLite)

来自分类Dev

SQLite数据库是否被锁定?

来自分类Dev

连接时锁定SQLite数据库

来自分类Dev

Delphi:数据库已锁定(SQLite)

来自分类Dev

SQLite 数据库被锁定 #2

来自分类Dev

javascript SQLITE_BUSY:数据库已锁定,sql:插入“用户”

来自分类Dev

目标C SQLite插入语句无法正常运行数据库被锁定

来自分类Dev

在for循环中插入查询时SQLite数据库锁定异常

来自分类Dev

将数据插入sqlite数据库

来自分类Dev

将数据插入SQLITE数据库

来自分类Dev

将数据插入sqlite数据库

来自分类Dev

将数据插入数据库SQLite

来自分类Dev

向sqlite数据库插入数据

来自分类Dev

插入时数据库记录重复

来自分类Dev

数据库插入时出现SQL查询错误

来自分类Dev

数据库插入时出现SQL查询错误

来自分类Dev

jsp在数据库中插入时间

来自分类Dev

数据库-尝试插入时查询失败

来自分类Dev

使用参数插入SQLite数据库

来自分类Dev

如何批量插入SQLITE数据库?

来自分类Dev

Android从.csv插入sqlite数据库

来自分类Dev

SQLite数据库的最大插入

来自分类Dev

Android:SQLite插入数据库

来自分类Dev

插入sqlite数据库时出错

来自分类Dev

Android插入SQLite数据库