0
私はエントリの範囲を与えるSQLクエリを実装したいと思います。例:私はこのようなすべてのエントリを取得する瞬間SQLiteインターバル内のエントリの範囲を照会
public List<Entry> getEntries(int lowerValue, int upperValue){
//Select upper - lower entries.
}
getEntries(0, 20) --> First 20 Entries
getEntries(21, 40) --> Entry 21 to 40
getEntries(12, 200) --> Entry 12 to 200
:
public List<Log> getLogs(){
List<Log> list = new ArrayList<>();
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + TABLE_LOGS + " WHERE 1";
//Cursor points to a location in your results
Cursor c = db.rawQuery(query, null);
//Move to the first row in your results
c.moveToFirst();
//Position after the last row means the end of the results
while (!c.isAfterLast()) {
if (c.getString(c.getColumnIndex("type")) != null) {
int id = c.getInt(c.getColumnIndex("_id"));
int type = c.getInt(c.getColumnIndex("type"));
long date = c.getLong(c.getColumnIndex("date"));
int refId = c.getInt(c.getColumnIndex("refId"));
String extra = c.getString(c.getColumnIndex("extra"));
list.add(new Log(id, type, date, refId, extra));
}
c.moveToNext();
}
db.close();
c.close();
return list;
}
私はLIMIT句がある知っているが、それは最初のエントリから常に開始します。あなたは
LIMIT <skip>, <count>
または
LIMIT <count> OFFSET <skip>
を使用することができますあなたが必要なもの
これは素晴らしい動作します。あなたがこれを手伝ってもらえますか?エントリを注文しようとするとこのエラーが出る: android.database.sqlite.SQLiteException: "WHERE"の近く:構文エラー(コード1):、コンパイル中:SELECT * FROM logs ORDER BY _id DESC WHERE 1 LIMIT 3 OFFSET 0 –
うん。私は答える前にそれを見つけたはずですが、列を比較するためにWHEREを設定する必要があります。したがって、 'WHERE type = 1'のようなものです。 – Sean
いいえ以前はすでに働いていません。しかし、私がIDで注文しようとすると、私はこのエラーを受け取りました! –