2014-11-11 5 views
-1

커서를 사용하여 가장 최근에 추가 된 항목을 데이터베이스로 반환하려고합니다. 다음 코드를 보내면 제목에 오류가 발생합니다.android.database.CursorIndexOutOfBoundsException : -1 크기가 0 인 색인 -1이 요청되었습니다.

SQLiteDatabase db =getReadableDatabase(); 
    String sql = "SELECT * FROM "+SPORTS_TABLE_NAME+" ORDER BY Sport_id DESC LIMIT 1;"; 
    Cursor cursor = db.rawQuery(sql, null); 
    db.close(); 
    return cursor.getInt(0); 

아이디어가 있으십니까?

+1

당신은 첫 번째 레코드로 이동하는 것을 잊었다. 이제 첫 번째 요소 앞을 가리 킵니다 (따라서 인덱스는 여전히 -1 임). 또한, 당신의 쿼리가 전혀 레코드를 반환하지 않는 것 같습니다 (레코드 수 = 0) –

+0

그는 또한 커서에서 값을 얻기 전에 db를 닫습니다. – Selvin

+0

좋아요. 그래서 코드가 조금 복잡해져서 db가 아직 열렸을 때 나는 정보를 저장하고 오류가 변경되었습니다, 그것은 -1 크기로 요청했습니다. 어떻게 첫 번째 레코드로 이동합니까? – Donnacha

답변

1

코드는 다음과 같이해야 :

int id = 0; 
SQLiteDatabase db =getReadableDatabase(); 
String sql = "SELECT * FROM "+SPORTS_TABLE_NAME+" ORDER BY Sport_id DESC LIMIT 1"; 
Cursor cursor = db.rawQuery(sql, null); 
if(cursor != null && cursor.moveToFirst()) { 
    id = cursor.getInt(0); 
} 
if(cursor != null) 
    db.close(); 
return id; 
+0

감사합니다. 문제가 해결되었습니다. – Donnacha

관련 문제