我怎样才能返回由玩游戏的玩家数量控制的 SQLite 数据库中的最后几行?

问题描述 投票:0回答:1

我试图让这段代码根据游戏中玩家的数量返回 SQLite 数据库中每个玩家的分数和姓名,因此如果有 4 行,则返回最后 4 行,如果有 2 行,则返回最后 2 行。

package dev.owen.a22006760;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.TextView;

public class GameComplete extends AppCompatActivity {

    DBHandler dbHandler;
    GameMaker get = new GameMaker();
    int PlayerCount = GameMaker.GetPlayers();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game_complete);

        dbHandler = new DBHandler(this);
        SQLiteDatabase db = dbHandler.getReadableDatabase();


        // Define your table and column names from DBHandler
        String tableName = DBHandler.tableName;
        String columnName = DBHandler.DBName;
        String columnScore = DBHandler.DBTotal;

        // Query the last 4 rows
        String query = "SELECT " + DBHandler.DBId + ", " + columnName + ", " + columnScore + " FROM " + tableName +
                " ORDER BY " + DBHandler.DBId + " DESC LIMIT " + ;

        Cursor cursor = db.rawQuery(query, null);

        // Process the results
        StringBuilder resultString = new StringBuilder();
        while (cursor.moveToNext()) {
            int id = cursor.getInt(cursor.getColumnIndex(DBHandler.DBId));
            String name = cursor.getString(cursor.getColumnIndex(columnName));
            String score = cursor.getString(cursor.getColumnIndex(columnScore));

            resultString.append("ID: ").append(id).append(", Name: ").append(name)
                    .append(", Score: ").append(score).append("\n");
        }

        // Close the cursor and database
        cursor.close();
        db.close();

        // Use the resultString as needed
        String finalResult = resultString.toString();

        TextView Results = findViewById(R.id.ResultsLab);
        Results.setText(finalResult);
    }


}

这是我当前执行此操作的代码,但光标一直指向-1,我不知道如何修复它,这是我用于获取金额的代码的布局。

这是数据库的布局

我希望代码能够输出数据库中最后 4 位玩家的总得分和姓名。所以..

4 号玩家 4. 21
5 名玩家 1. 15
6 玩家 2. 20
7 玩家 3. 19
8 玩家 1. 11

(侧面没有索引)

我试图将其放入一个字符串中,然后将其放入 Android Studio 上的 TextView 中。没有

java android sqlite
1个回答
0
投票

查询看起来不正确。 在单词

LIMIT
之后应该有一个数字。 如果您不需要限制,请删除
LIMIT
这个词。

© www.soinside.com 2019 - 2024. All rights reserved.