안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
DBHandler를 사용하여 db에 접근을 합니다.
DBHandler 소스 아래와 같이 구글링해서 사용을 하고 있습니다.
public class DBHandler {
private Context ctx;
private DBHelper helper;
private SQLiteDatabase db;
public DBHandler(Context ctx) {
this.ctx = ctx;
this.helper = new DBHelper(ctx);
this.db = helper.getWritableDatabase();
}
public static DBHandler open(Context ctx) throws SQLException {
DBHandler handler = new DBHandler(ctx);
return handler;
}
public void close() {
helper.close();
}
}
제가 사용하는 방식은 onCreate() 에서 dbhandler = DBHandler.open(this); 해주고
내부에서 사용 후 onDestroy()에서 dbhandler.close(); 를 하고 있습니다.
이런 방식이 잘못된건가요?
가끔 dbhandler 를 통하여 select를 해야 할경우 제목과 같은 오류가 뜹니다.
db가 필요한 부분에서 open 해주고 끝나면 바로 close 해주는 작업을 매번 반복해서 사용을 해야 하는건가요?
조언 부탁드립니다.

give & take




자답.
원인과 해결책은 아니지만
dbhandler = DBHandler.open(this); 를 클래스변수로 선언해서 사용하지 않고
필요한 곳(메소드 내부)에서 로컬변수로 DBHandler dbhandler = DBHandler.open(this); 이렇게 선언후
사용후 close()를 해주었더니 2틀동안 오류는 발생하지 않았습니다.
좀더 지켜봐야 겠지만 일단은 이렇게 적용을 해야 할것 같습니다.