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

标签 java android sql sqlite

我有一个保存游戏高分的 SQLite 数据库。我可以成功添加新分数,并且可以显示所有分数,但我想添加一个检查,以便

  1. 最多 5 行

  2. 行始终排序

  3. 仅当新分数超过表中已有分数时才添加

这是我的排行榜.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");

关于java - Android:检查高分SQL表并添加分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37174298/

相关文章:

java - 在 Hibernate/C3P0 中处理连接池耗尽并避免死锁

android - 以编程方式设置系统设置 "use only 2g networks"

SQL 左连接和条件

mysql - 获取给定时期 MySQL 查询的可用马厩

JavaFX TableView 分页 - 无法创建基于 fxml 的解决方案

java - 部署到 Web 容器、捆绑 Web 容器或嵌入 Web 容器

java - Maven 多模块项目中的 Spring 依赖注入(inject)

android - TextView 彼此重叠 - Android XML

java - Android 应用程序中 keystore 中的空别名列表

mysql - 无法创建外键(错误 1072)