2013-07-16 5 views
3

SQLite 데이터베이스에서 마지막 행을 가져 오려고합니다. 지금까지 최대, sql_sequence 시도했지만 아무것도 작동하는 것. 행 값을 가져 와서 클래스 변수에 할당해야합니다. SQLite와 Android를 처음 접했을 때 도움이되었습니다. 덕분에 ..sqlite 데이터베이스의 마지막 행을 가져 오는 중

+0

자동 증가 ID가 있습니까? MAX 연산자를 사용하는 열은 무엇입니까? – conca

+0

예 KEY_ROW_ID = "_ id"가 자동 증가되었습니다. 나는 SELECT * FROM food_table WHERE _id = (SELECT MAX (_id) FROM food_table – user2574903

답변

8

이미 커서를 가지고 있다면, 이것은 당신이 커서에서 마지막 레코드 얻을 수있는 방법입니다 :

cursor.moveToPosition (cursor.getCount를() - 1);

// 다음이

커서 커서 = db.rawQuery (selectQuery, NULL)처럼

또는

그것을 할 값을 읽기 위해 커서를 사용;
cursor.moveToLast();

또는

TABLE SELECT * FROM WHERE ID = (TABLE FROM MAX (ID)를 선택);

+0

나는 이것을 시도했다. 그러나 nullPointerException을 얻는다. – user2574903

+0

나는 하나의 코드를 추가했다. 그리고 커서가 null인지 확인한다. bcoz u din't 생성 된 객체 –

+1

OMG !!!!!!!!!! aaaaahhhh !! 나는 정말 사랑해 .. 도와 주셔서 감사합니다 !! 지난 2 일 이래로이 일을하고 있었어요 .. – user2574903

3

이것은 당신이 원하는 일을해야합니다

SELECT * 
FROM food_table 
ORDER BY _id DESC 
LIMIT 1 
+0

도와 줘서 고맙지 만 난 아직도 그것을 얻을 수 없습니다. 얻을 android.database.CursorIndexOutOfBoundsException : 1 -1 크기가 요청 된 인덱스 -1 – user2574903

+0

명령 줄에서이 동일한 문을 실행할 수 있습니까? adb 셸에서'sqlite3 yoursqlitedatabase.db'를 실행하고 다음을 입력하십시오. 위의 문을 실행하십시오. 아마도 데이터베이스가 존재하지 않는 것입니까? – mvp

+1

나를 도와 주는데 소중한 시간을 투자 해 주셔서 감사합니다. user123의 해결책은 도움이되었습니다. :) – user2574903

1

이가에서 테이블 이제

Cursor mCursor = db.rawQuery("Select * from TableName", null); 
mCursor.moveToLast(); 

가져 오기의 데이터를 마지막 레코드를 제공 그것은 당신을 도울 수 있음이 시도 커서

1

suptally SQLite 데이터베이스에있는 모든 테이블의 가장 높은 기본 키를 저장 sqlite_sequence라는 테이블. 따라서 다음을 사용하십시오

String selectQuery = "SELECT * FROM sqlite_sequence WHERE name = table_name"; 
Cursor cursor = db.rawQuery(selectQuery, null); 
cursor.moveToLast(); 
관련 문제