Android编程sqlite数据库排序查询按String值到listview

时间:2013-01-28 15:06:34

标签: android sqlite sql-order-by where-clause

我有一个查询,它使用where子句根据Day值从sqlite数据库获取数据,我得到的数据是'Monday',然后将这些数据填充到listview中。除此之外,我想按时间按升序排序数据,以形成一个包含从最早到最晚开始时间的星期一所有事件的列表。

按天查询:

public Cursor getMonday () {
String Monday = "Monday";
return db.query(
    DATABASE_TABLE,
    new String[] { KEY_ID, KEY_LESSON, KEY_DAY, KEY_START, KEY_END, KEY_LOCATION}, 
    KEY_DAY + "=?", 
    new String[] {Monday},
    null, null, null);
}

我试过了:

public Cursor getMonday () {
    String Monday = "Monday";
    return db.query(DATABASE_TABLE, 
        new String[] {KEY_ID, KEY_LESSON, KEY_DAY, KEY_START,KEY_END, KEY_LOCATION},
        KEY_DAY + "=?", 
        new String[] {Monday}, 
        null, null, null, 
        KEY_START + " ASC");
  }

这通常会有效但我想WHERE子句和order by的顺序不正确,我不知道如何使它们齐声协作。有人可以建议吗?谢谢。

这是我得到的错误:

01-28 14:24:02.738: E/AndroidRuntime(1672): FATAL EXCEPTION: main
01-28 14:24:02.738: E/AndroidRuntime(1672): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.unischeduler/com.example.unischeduler.ScheduleActivity}: java.lang.IllegalArgumentException: invalid LIMIT clauses:Start ASC

1 个答案:

答案 0 :(得分:2)

你的论点顺序不正确,试试这个:

 public Cursor getMonday () {

 String Monday = "Monday";

 return db.query(DATABASE_TABLE, 
         new String[] {KEY_ID, KEY_LESSON, KEY_DAY, KEY_START,
                        KEY_END, KEY_LOCATION}, KEY_DAY + "=?", 
    new String[] {Monday}, null, null, KEY_START + " ASC", null);

  }

编辑以hh:mm格式订购的提案:

看看SQLite Date and Time Functions,也许你可以尝试(我没有测试过)这样的事情:

 return db.query(DATABASE_TABLE, 
         new String[] {KEY_ID, KEY_LESSON, KEY_DAY, KEY_START,
                        KEY_END, KEY_LOCATION}, KEY_DAY + "=?", 
    new String[] {Monday}, null, null, "strftime('%H:%M', " + KEY_START + ")", null);