2014年7月16日水曜日

Android : SQLite で ORDER BY と LIMIT を使用する

ORDER BY と LIMIT を使う場合は

public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

を使用します。
orderBy句には "コラム名 ASC(もしくはDESC)"、でソートに使う列を、 limit句には "1" のように文字列の形で取得制限数を入れます。 以下は、一番古いエントリーの日付を取得する、というサンプルです。 (日付のエントリーとして使っている値は独自形式でただの int です。)
int getFirstRecord(long id){
    SQLiteDatabase db = getReadableDatabase();
    String[] columns = new String[]{ COLUMN_DATE };
    assert db != null;
    Cursor cursor = db.query(TABLE_NAME, columns,
            String.format("%s = %d", COLUMN_ID, id), null, null, null, String.format("%s ASC", COLUMN_DATE), "1");
    int dateEntryValue = -1;
    if(cursor.moveToNext()){
        dateEntryValue = cursor.getInt(0);
    }
    cursor.close();
    db.close();
    return dateEntryValue;
}

0 件のコメント:

コメントを投稿