0

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

按天查询:

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
4

1 回答 1

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 日期和时间函数,也许你可以尝试(我还没有测试过)这样的东西:

 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);
于 2013-01-28T15:10:17.003 回答