Autore Topic: Errore - database non chiuso  (Letto 661 volte)

Offline Christian Giupponi

  • Utente junior
  • **
  • Post: 128
  • Respect: 0
    • Google+
    • http://it.linkedin.com/pub/christian-giupponi/29/628/810
    • ultimoprofeta
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    ItalianDevTeam
  • Sistema operativo:
    Mac OSX Lion
Errore - database non chiuso
« il: 29 Settembre 2010, 19:17:55 CEST »
0
Ciao,
La mia applicazione si appoggia ad un database ma ogni volta che l'avvio e tengo sotto controllo il logcat vedo questo errore:

Codice: [Seleziona]
09-29 17:13:46.865: ERROR/Cursor(909): Finalizing a Cursor that has not been deactivated or closed. database = /data/data/christian.passwordmanager/databases/login, table = password, query = SELECT * FROM password
09-29 17:13:46.865: ERROR/Cursor(909): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
09-29 17:13:46.865: ERROR/Cursor(909):     at android.database.sqlite.SQLiteCursor.<init>(SQLiteCursor.java:210)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:53)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1229)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1184)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1264)
09-29 17:13:46.865: ERROR/Cursor(909):     at christian.passwordmanager.MyDatabase.fetchProducts(MyDatabase.java:43)
09-29 17:13:46.865: ERROR/Cursor(909):     at christian.passwordmanager.PasswordManager.onCreate(PasswordManager.java:26)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.os.Looper.loop(Looper.java:123)
09-29 17:13:46.865: ERROR/Cursor(909):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-29 17:13:46.865: ERROR/Cursor(909):     at java.lang.reflect.Method.invokeNative(Native Method)
09-29 17:13:46.865: ERROR/Cursor(909):     at java.lang.reflect.Method.invoke(Method.java:521)
09-29 17:13:46.865: ERROR/Cursor(909):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-29 17:13:46.865: ERROR/Cursor(909):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-29 17:13:46.865: ERROR/Cursor(909):     at dalvik.system.NativeStart.main(Native Method)

Faccio un po' fatica a capirlo...praticamente mi dice che non ho chiuso un database ma non capisco in che file!

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Errore - database non chiuso
« Risposta #1 il: 29 Settembre 2010, 19:36:38 CEST »
0
A me sembra parli di cursori e non di database:
Codice: [Seleziona]
Finalizing a Cursor that has not been deactivated or closed.
Gestisci manualmente il cursore in modo corretto (lo disattivi quando non utilizzato, lo chiudi quando non serve più)?

Se la risposta è no, ogni volta che crei un cursore all'interno di un'activity utilizza startManagingCursor() sul cursore appena creato:
Codice (Java): [Seleziona]
Cursor c = inizializzaQuestoCursoreColMetodoCheTiPare();
startManagingCursor(c);
« Ultima modifica: 29 Settembre 2010, 19:38:29 CEST da JD »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline Christian Giupponi

  • Utente junior
  • **
  • Post: 128
  • Respect: 0
    • Google+
    • http://it.linkedin.com/pub/christian-giupponi/29/628/810
    • ultimoprofeta
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    ItalianDevTeam
  • Sistema operativo:
    Mac OSX Lion
Re:Errore - database non chiuso
« Risposta #2 il: 30 Settembre 2010, 10:02:07 CEST »
0
ok grazie JD, era proprio quello il problema...

avendo visto la prima riga che mi restituiva la query pensavo che fosse un problema del database  :D

Grazie per la pazienza   O:-)