¿Alguien me puede decir cómo actualizar la base de datos en Android. Creé una aplicación con una base de datos integrada. Cambié la versión de la base de datos en el manifiesto y creé el método de actualización. Quería probarlo para ver si la base de datos se actualizaba correctamente, pero cuando uso el comando adb, solo -r me permitirá hacer una reinstalación, pero mantiene la base de datos. ¿Hay alguna forma de ejecutar el comando adb que me permita actualizar la base de datos? Gracias.Actualizar la base de datos Android
Respuesta
Tener un vistazo a los siguientes recursos y ver si son útiles:
deliciosas Marcadores
http://delicious.com/tag/android+adb
http://delicious.com/tag/android+database
DevX: Creación y uso de bases de datos en Android
http://www.devx.com/wireless/Article/40842
Aprender Android: Programación de base de datos
http://learnandroid.blogspot.com/2008/01/android-database.html
Android Resumen Base de datos del paquete
http://developer.android.com/reference/android/database/package-summary.html
Lo que funcionó para mí está cambiando el número de versión de la base de datos. Este es el número constante que usa el método onCreate() de su proveedor de contenido. Algo similar funciona si no utiliza un proveedor de contenido para su base de datos y lo consulta directamente. Vea el ejemplo del código fuente here.
Esta publicación de blog explica un poco los conceptos básicos de cómo Android actualiza la base de datos - http://www.unwesen.de/2009/09/07/android-development-database-upgrades/2/ – r1k0
Lo que funcionó para mí es cambiar el parámetro de número de versión que proporciono a la clase DBOpenHelper que amplía el SQLiteOpenHelper (la clase utilizada para crear/leer/escribir/etc ... la base de datos de Android). Cuando se incrementa el parámetro de número de versión, la función onUpdate() se llama una vez para el nuevo valor de este parámetro.
Aquí es cómo iba a manejar mi método updateRow:
public void updateRow(long rowId, String code, String name) {
ContentValues args = new ContentValues();
args.put("code", code);
args.put("name", name);
db.update(DATABASE_TABLE, args, "_id=" + rowId, null);
}
¿Hay alguna manera de hacerlo? para múltiples filas simultáneamente, en lugar de llamar 'update' para cada una? – Gaffi
Si mediante la actualización que suponer la remodelación (como yo durante el desarrollo cuando quiero comenzar con una base de datos actualizada cada vez que se inicia mi solicitud) y luego añadir este código antes de acceder a la base de datos de la aplicación:
this.getContext().getApplicationContext().deleteDatabase(DATABASENAME);
O
Búsqueda t que camino a su base de datos:
SQLiteHelper sql_database_helper = new SQLiteHelper(this.getContext().getApplicationContext());
File dbFile = getDatabasePath(DATABASENAME);
Log.v("XIX","DB FILE PATH:"+dbFile.getAbsolutePath());
continuación, elimine la base de datos desde la línea de comandos:
> adb devices
List of devices attached
3246%$%^$&17 device
> adb shell
$ su
su
rm mydatapath
NOTA: Puede no ser capaz de acceder al comando su
sin que se agriete su teléfono
Explicación : Si no desea seguir los consejos de r1k0 (que probablemente sea la forma correcta de hacerlo si está actualizando una aplicación ya lanzada), puede eliminar la base de datos con los siguientes comandos de adb y un restar t de su aplicación llamará nuevamente al método onCreate.
no aconsejo utilizar de esta manera:
public void updateRow(long rowId, String code, String name) {
ContentValues args = new ContentValues();
args.put("code", code);
args.put("name", name);
db.update(DATABASE_TABLE, args, "_id=" + rowId, null);
}
Su aplicación va a ser vulnerables a los ataques de inyección SQL, la mejor manera de hacer esto es algo como esto:
public void updateRow(long rowId, String code, String name) {
ContentValues args = new ContentValues();
args.put("code", code);
args.put("name", name);
String whereArgs[] = new String[1];
whereArgs[0] = "" + rowId;
db.update(DATABASE_TABLE, args, "_id= ?", whereArgs);
}
- 1. Cómo actualizar la base de datos multimedia de Android
- 2. Android - Actualizar la base de datos en la aplicación desde la web
- 3. Android cómo actualizar, pero conservar la información de la base de datos
- 4. Uso de SQLBulkCopy para insertar/actualizar la base de datos
- 5. django: actualizar esquema de base de datos sin perder datos
- 6. Actualizar todas las columnas en la tabla de base de datos ormlite en Android
- 7. Estrategia para actualizar la aplicación de Android (con base de datos)
- 8. Entity Framework - actualizar objetos desde la base de datos
- 9. ¿Cómo "actualizar" la base de datos en el mundo real?
- 10. Android: Eliminar toda la base de datos
- 11. ¿Por qué usar la base de datos sqlite en Android?
- 12. ¿Actualizar la tabla de la base de datos de una tabla de base de datos de SQL Server a otra?
- 13. Android: use la base de datos SQLite en la tarjeta SD (no use la tienda de datos Android interna)
- 14. Entitiy Framework: "Actualizar la base de datos del modelo" en lugar de "Generar la base de datos del modelo"
- 15. Android - ¿Actualizar datos en un AlertDialog?
- 16. Manteniendo la misma base de datos SQLite y al actualizar la aplicación para Android de Lite a la versión Pro
- 17. Actualizar esquema de base de datos en Entity Framework
- 18. Actualizar tabla de base de datos PostgreSQL MUY GRANDE eficientemente
- 19. casilla de verificación JQgrid onClick actualizar base de datos
- 20. Base de datos: insertar nuevas filas o actualizar las existentes?
- 21. ¿Puede SQLAlchemy's session.merge() actualizar su resultado con datos más nuevos de la base de datos?
- 22. Base de datos prepoblada de Android
- 23. Cómo actualizar una base de datos con nueva información
- 24. ¿Cómo actualizar dos columnas en una base de datos MySQL?
- 25. ¿Actualizar la base de datos SQLite de una versión a otra?
- 26. Android, dos aplicaciones, una base de datos?
- 27. Crear base de datos SQLite en android
- 28. base de datos Access en Android
- 29. ¿Por qué no puedo actualizar los datos en la base de datos usando LINQ to SQL?
- 30. Android - ¿Existe una base de datos SQLite?
gracias por los enlaces, pero no vi nada que hablara de hacer una reinstalación adb y actualizar la base de datos. Es posible hacer esto, mi aplicación crea esa base de datos bien la primera vez, pero solo durante las actualizaciones es cuando se bloquea. ¿Hay una entrada manifiesta que necesito ingresar? – user237259
No importa, me enteré de lo que estaba haciendo mal, después de algunas investigaciones descubrí que no estaba soltando la mesa correctamente y cuando volvería a crear la tabla, se equivocaría. Terminé dejando caer la tabla correctamente y, en lugar de llamar al comando oncreate, escribí una consulta para recrear la tabla en el método onupdate. – user237259
Creo que sería más constructivo si ofrecieras ejemplos en lugar de un grupo de enlaces (no relacionados). –