2013-04-16 61 views
0

我有一個數據庫導入資產文件夾。當我調用nextQuestion()方法時,我需要從數據庫中檢索第一個條目。用戶回答後,我需要再次加載nextQuestion()方法並從數據庫中檢索下一個條目。我試過,但它沒有工作,我總是隻得到第一個條目:如何查詢數據庫按ID升序排列?

String sql ="SELECT * FROM tblTable ORDER BY _ID ASC LIMIT 1"; 

也試過這樣:

String sql ="SELECT * FROM tblTable ORDER BY _ID ASC"; 

回答

0

當然,你永遠只能得到第一位的,你在執行相同的查詢並重新開始。如果數據不是很大,請使用第二個查詢。只執行一次並將所有行存儲在內存中。您的nextQuestion()方法不需要再進行數據庫查詢。

+0

如何做到這一點?我嘗試過,在我的適配器類中,然後在我的下一個問題中,我打開數據庫並使用遊標。但總是得到第一排。 – marjanbaz

+0

不要每次都執行查詢!執行一次並一次獲取所有行。谷歌的例子。這裏是一個:http://www.vogella.com/articles/AndroidSQLite/article.html參見例如方法getAllComments() – SimonSays

0

我相信你需要使用你的第二個查詢一次,捕捉Resultset,然後直接使用firstnextprevious等穿越,或在一個循環加載到ArrayList和使用它的方法。

0

雖然效率不高,你可以使用下面的查詢來獲取下一個問題:

SELECT * 
FROM 
(
    SELECT * 
    FROM 
     questions 
    ORDER BY ID ASC LIMIT :questionNumber 
) ORDER BY ID DESC LIMIT 1 

其中:questionNumber是第n個問題,那就是利益。

如:http://sqlfiddle.com/#!7/a20b8/4

+0

Insead這是否是一個好主意,存儲被問及的問題,使用光標,然後當調用nextQuestion方法來檢查提問問題,並詢問第一個沒問的問題? – marjanbaz

+0

要回答自己......這不是個好主意。 :)雖然這個想法很好,但它不起作用。我剛剛嘗試過。 – marjanbaz

+0

在生產環境中,@marjanbaz通常不鼓勵使用遊標。 – Vikdor

0

你真正想要的是用最小的ID的疑問,仍然比以前的ID較大:

SELECT * 
FROM tblTable 
WHERE _ID > ? -- insert previous ID here 
ORDER BY _ID 
LIMIT 1 
0

- >執行String sql ="SELECT * FROM tblTable ORDER BY _ID ASC";只是一個時間,
- >將數據保存在ArrayCollection中
- > create global varible,whichQuestion:Number; //保留哪些問題你在
- >創建像

nextQuestion(whichQuestion:Number):String //pass which question you want to ask 
{ 
    return questionCollection[i]; 
} 

的方法 - >然後whichQuestion + = 1;
- >最後,只要在需要的時候直接調用nextQuestion()方法的問題