Me gustaría agregar una tabla adicional en mi base de datos existente sin pérdida de datos. Así que soltar las tablas y crearlas nuevas no es una opción. ¿Cuál es la mejor manera de hacerlo?Crear tabla adicional en SQLITE existente (sin pérdida de datos)
Respuesta
la forma en que lo he hecho es crear una base de datos separada, copiar todo de la actual a la nueva nueva, soltar la base de datos anterior y copiar la información de la base de datos temporal.
no está seguro de si hay otra manera de hacerlo, pero si hay me encantaría oír hablar de eso
Crear una clase que se extiende SQLiteOpenHelper, anular onOpen (SQLiteDatabase db), crear una cadena con la creación de la tabla consulta, y luego use db.execSQL (String str);
Parece ser mucho más fácil. Yo uso el SQLiteOpenHelper. Por lo tanto, nunca se ha llamado a onCreate() si el DB ya existe. Cuando el número de versión aumenta, se llama a onUpdate(). En onUpdate() he agregado mi nueva tabla con "create table if not exists". De la documentación de SQLITE.ORG: Sin embargo, si la cláusula "IF NOT EXISTS" se especifica como parte de la instrucción CREATE TABLE y ya existe una tabla o vista con el mismo nombre, el comando CREATE TABLE simplemente no tiene ningún efecto (y no mensaje de error es devuelto). Ahora la mesa está creada y está bien. Método
Si desea agregar nueva tabla en la base de datos existente, entonces usted debe hacer esto dentro de ONUPGRADE() como: -
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion == xyz) {
db.execSQL(QUERY_CREATE_TABLE_..........NEW);
}
}
Aquí xyz es la versión antigua de la base de datos en la que desea agregar nueva tabla.
Y recuerda que para aumentar la Database_Version
Cuando aumentamos la versión de base de datos entonces ONUPGRADE() llamadas de método, y utilizando la condición añadir la tabla.
y también crear nueva tabla dentro onCreate() con las tablas existentes, para instalaciones nuevas como: -
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(QUERY_CREATE_TABLE_..........OLD);
db.execSQL(QUERY_CREATE_TABLE_..........OLD);
db.execSQL(QUERY_CREATE_TABLE_..........NEW);
}
- 1. Crear DMG sin espacio adicional
- 2. problema con la base de datos sqlite, sin tabla:
- 3. Crear una secuencia en una tabla existente
- 4. Crear índice en la tabla existente Oracle
- 5. cómo convertir la tabla de base de datos sqlite existente a fts3 one?
- 6. SQLite crear tabla FTS previamente poblada
- 7. Crear base de datos SQLite en android
- 8. sqlite3: crear tabla sin columnas
- 9. ¿Cómo agrego una clave externa a una tabla SQLite existente?
- 10. Crear consulta MySQL para crear una tabla a partir de una tabla existente
- 11. ¿Cómo se pueden crear estructuras de datos cíclicas (e inmutables) en Clojure sin indirección adicional?
- 12. Crear tabla en SQLite solo si ya no existe
- 13. ¿Crear @TableVariable basado en una tabla de base de datos existente?
- 14. pitón + SQLite, insertar datos de las variables en la tabla
- 15. Crear una tabla sin columnas
- 16. Agregue argumento adicional a un NSPredicate existente
- 17. Crear tabla de unión sin clave principal
- 18. No se puede crear tabla temporal en sqlite Android
- 19. Crear todo el conjunto de datos del procedimiento almacenado existente
- 20. Problema de pérdida de Android SQlite con CursorAdapter
- 21. SQLite - ordenando una tabla
- 22. Crear tablas en la base de datos sqlite en android
- 23. Generar diagrama de relación de tabla a partir del esquema existente (para Sqlite Databse)
- 24. ¿Cómo crear una base de datos sqlite en javascript?
- 25. ¿Cómo puedo crear una base de datos sqlite en memoria?
- 26. DVCS y pérdida de datos?
- 27. Eliminar tabla existente en SQLite, cuando el operador IF EXISTS no es compatible
- 28. Uso de disco de tabla SQLite
- 29. Compresión transparente de datos SQLite
- 30. Crear tabla SQL con los datos de otra tabla
Parece que es mucho más fácil. Uso el SQLiteOpenHelper. Así que nunca se ha llamado al onCreate() si el DB ya existe. Cuando el número de versión aumenta, se llama a onUpdate(). En onUpdate() He agregado mi nueva tabla con "create table if not exists". De la documentación de SQLITE.ORG: Sin embargo, si la cláusula "IF NOT EXISTS" se especifica como parte de la instrucción CREATE TABLE y ya existe una tabla o vista con el mismo nombre, el comando CREATE TABLE simplemente no tiene ningún efecto (y no se devuelve ningún mensaje de error). Ahora la tabla está creada y está bien. – venni