Exception : android.database.sqlite.SQLiteException: unable to close due to unfinalised statements

위와 같은 exception이 발생하는 것은
db connect 이후 cursor를 생성하거나 execSQL, insert, update, delete 등을 통해 database 변경이 있을때
생성된 cursor나 transaction을 종료하지 않음으로 인해 발생한다.
또한 대용량(얼마 만큼의 사이즈 인지는 명확하지 않음)을 변경한 경우 transaction 처리에 다소의 시간이 걸리는 것으로 보이며
transaction 후 바로 db를 close 하는 경우에도 exception이 발생하므로
대용량을 변경한 경우 일정시간 동안 Thread를 sleep 처리한 후 close하는 것이 안전하다.

cursor를 생성한 경우
cursor.close() 이후에 db.close()를 처리하고

기타 database를 변경한 경우 beginTransaction, setTransactionSuccessful, endTransaction 처리하여
transaction을 마무리한 후 db.close()를 한다.
        db.beginTransaction();
        dbID = db.insert("tablename", null, cv);
        db.setTransactionSuccessful();
        db.endTransaction();










'programmer > database' 카테고리의 다른 글

SQLite order 문제  (0) 2011.10.24

+ Recent posts