我有一个sqlite数据库,可以保存游戏的高分。我可以成功添加一个新分数,并且可以显示所有分数,但是我想添加一张支票,以便


最多5行
行始终排序
仅当新分数超过表中已有的分数时才添加


这是我的Leaderboard.java添加一个随机分数:

// Check if high score

// Add to leaderboard
if (Difficulty.equals("Hard")){
    BackgroundTask backgroundTask = new BackgroundTask(this);
    backgroundTask.execute("add_hminfo", rank, correct, timed);
}


我在backgroundtask.java中使用ASyncTask添加了新行

else if (method.equals("add_hminfo")){
 String rank = params[1];
 String score = params[2];
 String time = params[3];

 SQLiteDatabase db = dbops.getWritableDatabase();
 dbops.addhmLeaderboard(db, rank, score, time);
 return "High Score added";

}


然后将我的SQL插入数据库

public void addhmLeaderboard(SQLiteDatabase db,String rank, String score, String time){

    ContentValues cv = new ContentValues();

    cv.put(TableInfo.LB_RANK, rank);
    cv.put(TableInfo.LB_SCORE, score);
    cv.put(TableInfo.LB_TIME, time);

    db.insert(TableInfo.TABLE_NAME3, null, cv);
    //Log.d("Database Operations", "One row inserted");
}


目前,我在数据库中的排名只是作为所有“ 1”的占位符。理想情况下,这将是我的主键,该键会自动增加1-5,但是我对此也有些困惑。

如何检查新分数是否在分数的前5名中,然后将该新分数添加到必要的位置?

最佳答案

为了获得前5名分数,您可以查询:

db.query(TableInfo.TABLE_NAME3, null, null, null, null, null, TableInfo.LB_SCORE + " DESC, " + TableInfo.LB_TIME + " ASC", "5");

10-07 19:15
查看更多