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') ");
}
}
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP