Sto sviluppando un'applicazione Android. Ha più thread che leggono e scrivono nel database SQLite di Android. Sto ricevendo il seguente errore:Come evitare errori di blocco SQLiteException
SQLiteException: error code 5: database is locked
Capisco la SQLite blocca l'intero db sull'inserimento/aggiornamento, ma questi errori sembrano accadere solo quando si inseriscono/aggiornamento, mentre sono in esecuzione una query di selezione. La query select restituisce un cursore che viene lasciato aperto piuttosto un wile (qualche secondo qualche volta) mentre lo iterò sopra. Se la query di selezione non è in esecuzione, non ottengo mai i blocchi. Sono sorpreso che la selezione potrebbe bloccare il db. È possibile o è in corso qualcos'altro?
Qual è il modo migliore per evitare tali blocchi?
Lei dice lasciando il cursore aperto per un po '. Credo di avere lo stesso problema, ma i miei cursori sono gestiti da un listView. Sei mai riuscito a risolvere questo problema? – taer
Sì, ho risolto questo problema leggendo immediatamente il contenuto del cursore in una raccolta, chiudendo il cursore e quindi iterando sulla raccolta per eseguire il lavoro che richiede molto tempo. Se stai usando un listView, dovresti essere in grado di fare lo stesso e usare un ArrayAdapter o scrivere il tuo adattatore estendendo ArrayAdapter. – TheArchedOne
http://stackoverflow.com/questions/7657223/sqlite-exception-database-is-locked-issue/9503044#9503044 – junto