안드로이드 개발 질문/답변
(글 수 45,052)
코드
생략
c = db.rawQuery("SELECT seq, name FROM sqlite_sequence;", null);
while(c.moveToNext()){
Log.d("dfe", c.getInt(0)+" "+c.getString(1));
}
c.close();
c = db.rawQuery("SELECT seq FROM sqlite_sequence WHERE name = 'SubjectSetTable';", null);
int index = c.getColumnIndex("seq");
id = c.getInt(index);
생략
LogCat 출력
20 SubjectSetTable
Index - 1 requested, with a size of 1
저렇게 되어 있고 위에 써 놓은 코드의 마지막 줄에서 익셉션이 발생합니다.
밑에서 두번째 줄에 index에 디버그로 보면 0값이 저장되어 있습니다..
로그캣 맨 마지막 줄은 e.getMessage()를 출력한 것입니다만..
아마 커서에 레코드가 아무것도 없는 것 같은데 메세지가 이상한 것 같습니다.
위에서 sqlite_sequence 테이블의 내용을 미리 로그로 찍어보면 로그캣에 name에 틀림없이 SubjectSetTable가 있습니다.
where에서 name = 'SubjectSetTable'을 찾는데 위의 코드에서 에러가 발생하지는 않을 것 같습니다.
이유를 모르겠습니다.
다른 에러는 없는 걸로 보아 문법적으로도 틀린 건 아닌 듯 합니다.
일단 Cursor 의 size() 검사를 하시는 예외처리는 하셔야 할 것 같구요.
해당 Database를 루팅을 하시든지 해서 PC로 복사하신 다음에
파이어폭스의 플러그인 중 sqlite manager 가 있습니다.
쿼리를 run 할 수 있는 인터페이스가 있으니, 거기서 실험을 한번 해보시는게 좋을 것 같아요.