0
我有我的排行榜数据库。目前,我将所有分数插入我的排行榜,并选择5个最高分数显示在我的应用程序。我认为这会占用太多的空间,以至于不能删除其他分数,所以我想删除它们。我怎样才能做到这一点?删除所有不在特定行中的SQLite行
以下是我选择的前5分,排在第一位的分数和第二的时间,如果分数等于:
public Cursor gethmLeaderboard(SQLiteDatabase db){
String[] columns = {TableInfo.LB_RANK, TableInfo.LB_SCORE, TableInfo.LB_TIME};
Cursor c = db.query(TableInfo.TABLE_HM, null, null, null, null, null, TableInfo.LB_SCORE + " DESC, " + TableInfo.LB_TIME + " ASC", "5");
return c;
}
以下是我创造我的表:
public String CREATE_HMQUERY = "CREATE TABLE " + TableInfo.TABLE_HM + "("
+ TableInfo.LB_RANK + " INTEGER PRIMARY KEY AUTOINCREMENT DEFAULT 1 ," + TableInfo.LB_SCORE +
" INT,"+ TableInfo.LB_TIME + " VARCHAR);";
我想删除不在该查询中的所有行。我怎样才能做到这一点?
我已经试过:
public String DEL_ALLBUTES = "DELETE FROM " +
TableInfo.TABLE_HM + " WHERE " +
TableInfo.LB_RANK + " NOT IN (SELECT " +
TableInfo.LB_RANK + " FROM " +
TableInfo.TABLE_HM + " ORDER BY " +
TableInfo.LB_SCORE + " DESC, " +
TableInfo.LB_TIME + " ASC LIMIT 5);";
在这种格式:
db.rawQuery(DEL_ALLBUTES, null);
但是,当我检查数据库仍有吨行,以便它不工作。
OK!我得到了不同的结果。现在我在我的execSQL()语句中得到一个运行时错误 – Milap
看起来db似乎是空的......但我不能说,因为我看不到该命令附近的上下文。 –
我从exec语句中删除了null,并且它不是db.execSQL(DEL_ROWHM5);它的工作原理。 – Milap