如何从ID升序排序的数据库中查询?

时间:2013-04-16 00:50:37

标签: java android sqlite

我在assets文件夹中导入了一个数据库。当我调用nextQuestion()方法时,我需要从数据库中检索第一个条目。用户回答后,我需要再次加载nextQuestion()方法并从数据库中检索下一个条目。我尝试了这个,但它没有用,我总是只得到第一个条目:

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

还试过这个:

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

5 个答案:

答案 0 :(得分:0)

当然,你总是只获得第一个,你一遍又一遍地执行相同的查询。如果数据不是很大,请使用第二个查询。只执行一次并将所有行存储在内存中。您的nextQuestion()方法不再需要进行数据库查询。

答案 1 :(得分:0)

我相信您需要使用第二个查询一次,捕获Resultset,然后使用firstnext直接遍历它,previous等等,或者将它加载到一个循环中ArrayList并使用它的方法。

答案 2 :(得分: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

答案 3 :(得分:0)

您真正想要的是ID最小的问题仍然比您之前的ID大:

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

答案 4 :(得分:0)

- >只执行String sql ="SELECT * FROM tblTable ORDER BY _ID ASC";一次,
- >将数据保存在ArrayCollection中 - >创建全局变量,whichQuestion:Number; //保留你所处的问题 - >创建一个像

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

- >那么问题+ = 1;
- >最后,只要你需要问题就调用nextQuestion()方法