2012-03-30 10 views
5

Ayer la aplicación funcionaba normalmente y no edité mis códigos. Pero ahora no está funcionando. la Logcat esaplicación detenida en Android/SQLITE ERROR/

close() was never explicitly called on database '/data/data/[myproject]/databases/MyDB' 
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here 
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943) 
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007) 
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986) 
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051) 
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770) 
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221) 
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157) 
at mn.emondo.parliament.DBAdapter.open(DBAdapter.java:46) 
at mn.emondo.parliament.ProfileActivity.onCreate(ProfileActivity.java:46) 
at android.app.Activity.performCreate(Activity.java:4465) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
at android.app.ActivityThread.access$600(ActivityThread.java:123) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4424) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
at dalvik.system.NativeStart.main(Native Method) 
+0

Es necesario comprobar en 'ProfileActivity.java: 46' y' DBAdapter.java: 46' .tiene se olvidó de llamar a la función de llamada de base de datos , que puede ser que tenga uso en 'ProfileActivity.java:46' para abrir la base de datos. – Herry

+0

Mostrar su código nos dará más especificaciones sobre cómo abrir y cerrar la base de datos. – Herry

Respuesta

2

Una vez que abra la base de datos y el cursor, debe cerrar estos dos antes de salir de la clase o actividad. db.close(); cr.close();

por favor use esto.

1

no ha cerrado el cursor. Está escrito en tu ERROR.

Application did not close the cursor or database object that was opened here 

Así que como no puedo ver su código, simplemente verifique que no ha cerrado el Cursor.

O intente limpiar su proyecto y reconstruirlo.

1

Olvidó close() su base de datos; la próxima vez que se abra, recibirá una excepción DatabaseObjectNotClosedException.

1

Si se trabaja con anterioridad y no ahora ,, trate de cambiar el nombre de la versión de la base de datos ,,,

incluso después si no funciona, a continuación, cambiar el nombre de la versión y el nombre de la base de datos.

1

Pruebe este método cuando termine de obtener datos de la base de datos ..
Cuando abre la base de datos, necesita llamar a db.open() y cuando termine su trabajo de base de datos debe llamar al método close(). utilice el siguiente método.

db.close(); 

y debe llamar para abrir la base de datos de su Activity.java

Cuestiones relacionadas