2012-03-30 15 views
5

Ieri l'applicazione funzionava normalmente e non ho modificato i miei codici. Ma ora non funziona. il logcat èapplicazione arrestata in 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

È necessario controllare in 'ProfileActivity.java: 46' e' DBAdapter.java: 46' .È dimenticato di chiamare la funzione di chiamata di database , che potresti utilizzare in "ProfileActivity.java:46" per aprire il database. – Herry

+0

Mostra che il codice ci darà più specifiche su come si fa aprire e chiudere il database. – Herry

risposta

2

Dopo aver aperto il database e il cursore, è necessario chiuderli prima di uscire dalla classe o dall'attività. db.close(); cr.close();

si prega di utilizzare questo.

1

Non aver chiuso il cursore. È scritto nel tuo ERRORE.

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

Così come come io non riesco a vedere il codice, basta controllare che non avete chiuso il cursore.

Oppure provare a pulire il progetto e ricostruirlo.

1

Hai dimenticato a close() il tuo database; la prossima volta che verrà aperta riceverai un'eccezione DatabaseObjectNotClosedException.

1

Se si stava lavorando in precedenza e non ora ,, provare a cambiare il nome della versione del database ,,,

anche dopo, se non funziona, quindi modificare il nome della versione e il nome del database.

1

Provare questo metodo quando si finiscono di recuperare i dati dal database.
Quando si apre il database è necessario chiamare db.open() e al termine del lavoro del database è necessario chiamare il metodo close(). usa il seguente metodo.

db.close(); 

e si deve chiamare per aprire database dal Activity.java

Problemi correlati