Android:检查高分SQL表并添加分数

时间:2016-05-11 22:26:36

标签: java android sql sqlite

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

  1. 最多有5行

  2. 行始终排序

  3. 只有在新分数超过表格中的分数

  4. 时才会添加

    这是我的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" s的占位符。理想情况下,这将是我自动增加1-5的主键,但我也有点困惑。

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

1 个答案:

答案 0 :(得分:1)

要获得前5个分数,您可以查询:

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