TransWikia.com

¿Donde inicializar una BD SQLite en Android?

Stack Overflow en español Asked by Antonio Ruiz on August 26, 2021

He creado una tabla de una sola fila donde la única función será actualizar unos valores. Sólo tengo que hacer un INSERT con unos valores por defecto que se ejecute la primera vez

Hago lo siguiente pero sin éxito. ¿Donde puedo hacer este insert para que solo se ejecute la primera vez que instale y abra la app?

public class BD extends SQLiteOpenHelper {

    String sqlCreate = "CREATE TABLE jugador (codigo INTEGER PRIMARY KEY AUTOINCREMENT, " +
                         "nombre TEXT DEFAULT 'Jugador')";

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(sqlCreate);
        db.execSQL("INSERT INTO jugador (nombre) VALUES ('jugador') ");

    }
}

2 Answers

Si vas agregar datos "definitivos", lo realizas en onCreate de la clase SQLiteOpenHelper. Si son datos que primero necesitas obtener, por ejemplo de algún EditText (MainActivity), entonces debe realizarse en esa clase.

@Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(sqlCreate);
        ContentValues values = new ContentValues();
        values.put(TuColumnaNombre, "jugador1");
        values.put(TuOtraColumna, "x");
        db.insert(TU_TABLA, null, values);
        // para agregar mas filas:
        values.clear();
        values.put(TuColumnaNombre, "jugador2");
        values.put(TuOtraColumna, "y");
        db.insert(TU_TABLA, null, values);
        }
    }

Para ver los cambios y que no muestre algún error elimina la app del emulador/dispositivo e ir a File-Invalidate Caches/restart

Answered by armen on August 26, 2021

¿Donde puedo hacer este insert para que solo se ejecute la primera vez que instale y abra la app?

Lo puedes realizar en el metodo onCreate(), puedes crear un metodo y llamarlo en este punto

   @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(sqlCreate);

         //Realiza insercion de datos, unicamente al iniciar.

    }

de hecho lo estas realizando pero probablemente la tabla ya existe y tiene una estructura incorrecta, te sugiero 3 opciones:

1)Borra el cachè de la aplicaciòn.

2)Elimina la aplicaciòn.

3) puedes cambiar la version que asignas a la version de la Base de datos cuando llamas al metodo :

public BD(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

Answered by Jorgesys on August 26, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP