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