내 애플 리케이션에서 나는 테이블에서 파일로 스트리밍 데이터를 보내고있는 많은 SQL 쿼리를 가지고있다. 이러한 quesries에서 기본적으로 내 열을 다른 값으로 정렬 한 다음 첫 번째 행의 값을 가져 오는 SQL 커서가 있습니다. 문제는 그 커서가 테이블의 끝에 도달하면 0 값으로 인해 응용 프로그램이 충돌한다는 것입니다.안드로이드 커서 인덱스 바운스
public static String evalLightTable(String filenamePrefix){
String[] lightcolumns = new String[] { KEY_ROWID, KEY_TID, KEY_NAME, KEY_LUXVALUE, KEY_TRANSMITTED};
Cursor elightcursor = myDatabase.query(LIGHT_TABLE, lightcolumns, KEY_TID + "=" + filenamePrefix + " AND " + KEY_TRANSMITTED + "=" + nottransmitted, null, null, null, null);
String notTransmitted = "";
int iRowId = elightcursor.getColumnIndex(KEY_ROWID);
if (elightcursor != null) {
elightcursor.moveToFirst();
String lightRowId = elightcursor.getString(0);
return lightRowId;
}
return null;
}
위의 내용은 내가 실행중인 샘플 쿼리입니다. 아래에 적용되는 logCat은 다음과 같습니다.
07-04 13:21:14.697: E/AndroidRuntime(19537): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
07-04 13:21:14.697: E/AndroidRuntime(19537): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
내 쿼리에서 커서가 뭔가를 찾으면 데이터를 검색하도록 요청합니다. 그렇지 않으면 반드시 충돌이 없어야합니다.
나는 훨씬 더이 답변을 좋아합니다. 그것은 완벽하게 이해가되었습니다. 고맙습니다 – user3805374