Voy a agregar una tabla a la base de datos SQLite de mi aplicación. Toda mi sintaxis está bien, no el problema. Pero estoy teniendo problemas para que la nueva tabla se cree correctamente. Agregué la nueva tabla ...¿Cómo actualizar una base de datos SQLite y NO perder todos los datos existentes?
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
db.execSQL(CREATE_REQUESTS);
db.execSQL(CREATE_OVERRIDE);
}
Método My on create. Tengo 3 tablas. Cuando actualicé el número de versión, recibí un mensaje de error que decía "ya se han creado las solicitudes de tabla (haciendo referencia a CREATE_REQUESTS)". Una mirada a mi método ONUPGRADE ...
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS contacts");
onCreate(db);
}
me llevó a entender que la línea db.execSQL("DROP TABLE IF EXISTS contacts")
, que se refiere a mi mesa DATABASE_CREATE en el método onCreate, se utiliza para eliminar la tabla de edad, entonces la línea siguiente, onCreate(db);
lo recrea No agregué solicitudes en esa línea execSQL, que es la causa del error. Aquí está el problema: preferiría no perder los datos en las dos tablas que ya tengo. ¿Hay alguna manera de agregar una tabla como lo estoy intentando hacer, y no perder todos los datos antiguos? Gracias.
Hm, OK. Supongo que mi preocupación es que si lo hiciste en Ongrade no se crearía cuando alguien use la aplicación desde cero, pero supongo que siempre que lo ponga en el método onCreate no es gran cosa. ¡Gracias! – JMRboosties
onUpgrade solo se llama si se actualiza una aplicación existente. Si inicia la aplicación desde cero, solo recibirá una llamada a onCreate. – EboMike
Se llama solo cuando se incrementa la versión de la base de datos. –