Estoy desarrollando una aplicación de Android. Tiene múltiples hilos que leen y escriben en la base de datos SQLite de Android. Estoy recibiendo el siguiente error:Cómo evitar los errores de bloqueo de SQLiteException
SQLiteException: error code 5: database is locked
entiendo la SQLite bloquea toda la db en la inserción/actualización, pero estos errores sólo se parecen suceder al insertar/actualizar mientras estoy ejecutando una consulta de selección. La consulta de selección devuelve un cursor que se deja bastante abierto (unos segundos algunas veces) mientras lo recorro. Si la consulta de selección no se está ejecutando, nunca obtengo los bloqueos. Me sorprende que el select pueda bloquear el db. ¿Es esto posible o está sucediendo algo más?
¿Cuál es la mejor manera de evitar dichos bloqueos?
Usted dice dejando el cursor abierto por un tiempo. Creo que tengo el mismo problema, pero mis cursores están siendo mantenidos por ListView. ¿Alguna vez lograste arreglar esto? – taer
Sí, lo arreglé leyendo el contenido del cursor inmediatamente en una colección, cierro el cursor y luego se itera sobre la colección para hacer el trabajo que consume mucho tiempo. Si está utilizando listView, debería poder hacer lo mismo y usar un ArrayAdapter o escribir su propio adaptador extendiendo ArrayAdapter. – TheArchedOne
http://stackoverflow.com/questions/7657223/sqlite-exception-database-is-locked-issue/9503044#9503044 – junto