PersesTitan(페르) 기술블로그

[안드로이드][에러] android.database.CursorIndexOutOfBoundsException: Index 1 requested, with a size of 1 본문

Error

[안드로이드][에러] android.database.CursorIndexOutOfBoundsException: Index 1 requested, with a size of 1

PersesTitan(페르) 2023. 7. 26. 16:54

문제 발생

android.database.CursorIndexOutOfBoundsException: Index 1 requested, with a size of 1  
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:521)  
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:139)  
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:53)  
at co m.vane.toramonlineguide.db.BossDBTest.createItem(BossDBTest.kt:57)   
at co m.vane.toramonlineguide.db.BossDBTest.getResult$app\_debugAndroidTest(BossDBTest.kt:73)   
at co m.vane.toramonlineguide.system.DBToramTest.selectBoss(DBToramTest.kt:52)   
at co m.vane.toramonlineguide.DBTest.insertLocal(DBTest.java:107)

Android에서 SQLite를 사용하면서 데이터를 가져올때 보통 이러한 에러가 발생했을때는 에러 메세지가 Index 1이 아닌 Index -1일때 발생하는데 -1일때는 -1번째 값을 가져올려고 하기 때문에 (보통 매칭 값을 못 찾을때 -1을 반환해서 생기는 문제)이지만 -1이 아닌 양수로 메세지가 출력되는 문제가 발생했습니다.

해결방법

해결 방법은 의왜로 간단했는데요. 보통 cursor.moveToNext()를 사용하여 다음 값을 가져오게 되는데 존재하는 값 이상의 횟수를 사용하여 값을 가져올때 문제가 발생 하였습니다. 예를 들어 2개값이 존재할때 moveToNext()를 3번사용해서 가져온다거나 하면 문제가 발생하는데 저 같은 경우 외래키 참조하는곳에서도 1번쓰고 기본 테이블에서 조회하는데에서도 1번 사용하다보니 이런 문제가 생겼던 것이 였습니다.
가볍게 사용하는 분들에게는 이런 실수 하시는 분들이 많지는 않겠지만 저와 같은 실수를 하신 분들에게 도움이 되셨길를 바랍니다.