2013-07-16 52 views
3

我想從SQLite數據庫中獲取最後一行。直到現在我已經嘗試了max,sql_sequence,但似乎沒有任何工作。我必須獲取行值並將其分配給類變量。 任何幫助表示讚賞,因爲我是SQLite和Android的新手。 謝謝..從sqlite數據庫中獲取最後一行

+0

你有一個autoincrement 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();

SELECT * FROM TABLE WHERE ID =(SELECT MAX(ID)FROM TABLE);

+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 – user2574903

+0

你可以從命令行執行相同的語句嗎?在adb shell中,嘗試執行'sqlite3 yoursqlitedatabase.db',然後鍵入和執行上面的語句。也許你的數據庫不存在? – mvp

+1

非常感謝你投入寶貴的時間幫助我。解決方案由user123幫助.. :) – user2574903

1

試一試它可以幫助你它給最後一個記錄你的表

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

現在獲取的數據從光標

1

還有你一個名爲sqlite_sequence的表格存儲了SQLite數據庫中所有表的最高主鍵。因此請使用以下內容

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