如何在libgdx上使用SQLite(仅限核心和项目)?

时间:2018-08-01 16:26:15

标签: java android sqlite libgdx

我需要使用数据库来使用SQLite保存玩家的得分。我只有核心和android项目。我知道我需要在核心中实现一个接口并在Android项目中使用SQLite,但是我不知道该怎么办。

android项目中,使用SQLite的数据库:

public class DataBase extends SQLiteOpenHelper implements DataBaseInterface{

// Versión de la base de datos
private static final int DATABASE_VERSION = 1;

// Nombre de la base de datos
private static final String DATABASE_NAME = "gamescore";

// Nombre de la tabla
private static final String TABLE_SCORE = "score";

// Nombres de cada columna de la tabla
private static final String KEY_ID = "_id";
private static final String KEY_SCORE = "score_value";

public DataBase(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

// Creación de las tablas
@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_SCORE_TABLE = "CREATE TABLE " + TABLE_SCORE + "("
            + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
            + KEY_SCORE + " TEXT" + ")";

    db.execSQL(CREATE_SCORE_TABLE);

}

// Actualización de la base de datos
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // La BD anterior es eliminada en caso de existir
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_SCORE);

    // Se vuelve a crear la BD
    onCreate(db);
}

// Para añadir una nueva puntuación obtenida por el jugador
public void addScore(int score) {

    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();

    //Valor de la puntuación
    values.put(KEY_SCORE, score);

    // Inserción de valores
    db.insert(TABLE_SCORE, null, values);

    // Se cierra la conexión con la BD
    db.close();

}

// Obtención de todas las puntuaciones
public String[] getAllScores() {

    // Query que selecciona todos los datos de la tabla
    String selectQuery = "SELECT  * FROM " + TABLE_SCORE;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    int i = 0;

    String[] data = new String[cursor.getCount()];

    //Se van añadiendo los datos hasta que se recorra entero
    while (cursor.moveToNext()) {

        data[i] = cursor.getString(1);

        i = i++;

    }
    cursor.close();
    db.close();
    // Se devuelven los datos obtenidos
    return data;
}}

核心项目中,界面:

public interface DataBaseInterface {
public void addScore(int score);
public String[] getAllScores();}

我阅读了本指南:

https://github.com/libgdx/libgdx/wiki/Interfacing-with-platform-specific-code

但是我不知道如何使用SQLite做到这一点,我想这很简单,但是我是个傻瓜。

1 个答案:

答案 0 :(得分:1)

尝试gdx-sqlite,这是一种用于SQLite数据库处理的跨平台LibGDX扩展。

该项目不再得到积极维护,因此请在此处查看各种forks,以跟进有关此存储库的积极发展。

当前支持的平台: