에러 로그
08-28 18:28:54.020: E/SQLiteDatabase(20113): close() was never explicitly called on database '/data/data/sohyeon.mgr/databases/lm_v1.db'
08-28 18:28:54.020: E/SQLiteDatabase(20113): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1961)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1025)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:991)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1069)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:813)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at sohyeon.mgr.DiaryDBAdapter.open(DiaryDBAdapter.java:591)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at sohyeon.mgr.AccountBookWrite.setDBOpen(AccountBookWrite.java:938)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at sohyeon.mgr.AccountBookWrite.setAccountBookData(AccountBookWrite.java:695)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at sohyeon.mgr.AccountBookWrite.onStart(AccountBookWrite.java:425)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1135)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.app.Activity.performStart(Activity.java:4711)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1933)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1985)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.app.ActivityThread.access$600(ActivityThread.java:127)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.os.Handler.dispatchMessage(Handler.java:99)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.os.Looper.loop(Looper.java:137)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at android.app.ActivityThread.main(ActivityThread.java:4482)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at java.lang.reflect.Method.invokeNative(Native Method)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at java.lang.reflect.Method.invoke(Method.java:511)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
08-28 18:28:54.020: E/SQLiteDatabase(20113): at dalvik.system.NativeStart.main(Native Method)
08-28 18:28:54.020: E/System(20113): Uncaught exception thrown by finalizer
08-28 18:28:54.020: E/System(20113): java.lang.IllegalStateException: Don't have database lock!
08-28 18:28:54.020: E/System(20113): at android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2108)
08-28 18:28:54.020: E/System(20113): at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2200)
08-28 18:28:54.020: E/System(20113): at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2196)
08-28 18:28:54.020: E/System(20113): at android.util.LruCache.trimToSize(LruCache.java:197)
08-28 18:28:54.020: E/System(20113): at android.util.LruCache.evictAll(LruCache.java:285)
08-28 18:28:54.020: E/System(20113): at android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2161)
08-28 18:28:54.020: E/System(20113): at android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1144)
08-28 18:28:54.020: E/System(20113): at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1932)
08-28 18:28:54.020: E/System(20113): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:185)
08-28 18:28:54.020: E/System(20113): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
08-28 18:28:54.020: E/System(20113): at java.lang.Thread.run(Thread.java:856)
데이터베이스 에러인 건 분명한데...
DiaryDBAdapter .java
..
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
public DiaryDBAdapter open() throws SQLException {
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();
return this;
}




짐작컨데 setDBClose가 안된 상태에서 setDBOpen을 한 경우가 있지 않을까 싶네요.
setDBOpen을 보면 열려있나 안열려있나와 상관없이 일단 null 만들고 보는데.. 여기서 연결이 새는게 아닐지.
항상 잘 닫는다면 상관없겠지만.. 에러는 안닫혔다고 하는 것 같습니다.
close() was never explicitly called on database