update delete c# sqlite hang

delete - update sql c#



La base de datos sqlite está bloqueada en la inserción (1)

Hay un código simple

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(); } }

aplicaciones se bloquea durante algún tiempo al ejecutar

cmd.ExecuteNonQuery();

y luego falla con la excepción "la base de datos está bloqueada". ¿Por qué está pasando esto? La aplicación no es multiproceso. El archivo DB acaba de crearse.


Problema resuelto. Antes de este código, había una llamada a SqlCommand.ExecuteReader (). Aunque la conexión y el comando que creó este lector fueron eliminados, este lector en sí no fue eliminado. Después de corregir con "using (reader)" la conexión se cerró correctamente y el error anterior desapareció.

En total: DataReader aún puede contener una conexión incluso si la conexión y SqlCommand se eliminaron explícitamente.