gpt4 book ai didi

java - 使用 "ORDER BY"对 SQLite 表进行排序 - Android

转载 作者:行者123 更新时间:2023-12-01 18:55:13 27 4
gpt4 key购买 nike

我的高分表有一个 SQLite 数据库。目前,我无法检查新分数是否达到高分以及对高分表进行排序。

当游戏结束时,会调用 Results.java。

结果.java

total_score = dh.calculateTotalScore(score, percentage);
low_score = dh.check(score, percentage, total_score);
if(total_score > low_score) {
dh.delete(10);
dh.insert(score, percentage, total_score);
} else {
dh.insert(score, percentage, 9999999);
}
dh.sort();

Results.java 中调用的所有方法均来自 DatabaseHelper.java

DatabaseHelper.java

public void sort() {
db.rawQuery("SELECT * FROM " + DB_TABLE + " ORDER BY " + TOTAL_SCORE, null);
}

public long calculateTotalScore(long score, int percentage) {
long i;
return i = (percentage * 1000) + score;
}

public long check(long score, int percentage, long sum) {
Cursor c = db.rawQuery("SELECT " + TOTAL_SCORE + " FROM " + DB_TABLE, null);
long count = c.getCount();
long low_score;
if(count == 10) {
c.moveToLast();
low_score = c.getInt(c.getColumnIndex(TOTAL_SCORE));
return low_score;
} else {
return count;
}
}

public long insert(long score, int percentage, long total_score) {
ContentValues values = new ContentValues();
values.put(SCORE, score);
values.put(PERCENTAGE, percentage);
values.put(TOTAL_SCORE, total_score);

return db.insert(DB_TABLE, null, values);
}

public void delete(int row) {
db.delete(DB_TABLE, RANK + "=" + row, null);
}

TOTAL_SCORE 的输出显示如下:

  • 1
  • 2
  • 40851
  • 1
  • 2
  • 40804
  • 60811
  • 60811
  • 50816

我希望输出按数字顺序排列。像这样:

  • 1
  • 1
  • 2
  • 2
  • 40804
  • 40851
  • 50816
  • 60811
  • 60811

它们上面的顺序(我认为)就是它们插入数据库的顺序。程序运行时不会出现错误,程序不会崩溃。如果需要,可以提供更多代码。

最佳答案

SELECT 不会修改任何内容;您的 sort 函数没有任何效果。(rawQuery 函数返回已排序的记录列表,但您可以忽略它。)

您必须将 ORDER BY 子句放入用于显示分数的查询中。

关于java - 使用 "ORDER BY"对 SQLite 表进行排序 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220651/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com