Actualizar base de datos Android

¿Puede alguien decirme cómo actualizar la base de datos en android. He creado una aplicación con una base de datos incrustada. He cambiado la versión de la base de datos en el manifiesto y creado el método de actualización. Quería probarlo para ver si la base de datos estaba actualizando correctamente, pero cuando uso el comando adb sólo el -r me permitirá hacer una reinstalación, pero mantiene la base de datos. ¿Hay una manera de ejecutar el comando adb que me permitirá actualizar la base de datos. Gracias.

Aquí es cómo manejaría 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); } 

Lo que funcionó para mí es cambiar el número de versión de la base de datos. Este es el número constante que utiliza 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 consulta directamente. Vea el ejemplo del código fuente aquí .

Echa un vistazo a los siguientes recursos y ver si son útiles:

Marcadores Deliciosos
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

Aprendiendo Android: Programación de bases de datos
http://learnandroid.blogspot.com/2008/01/android-database.html

Resumen del paquete de base de datos Android
http://developer.android.com/reference/android/database/package-summary.html

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.

Si al actualizar significa reconstruir (como hago durante el desarrollo cuando quiero comenzar con una base de datos nueva cada vez que se inicia mi aplicación), agregue este código antes de acceder a la base de datos de su aplicación:

 this.getContext().getApplicationContext().deleteDatabase(DATABASENAME); 

O

Encuentre la ruta 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()); 

A continuación, elimine la base de datos desde el símbolo del sistema:

 > adb devices List of devices attached 3246%$%^$&17 device > adb shell $ su su rm mydatapath 

NOTA: Es posible que no pueda acceder al comando su sin romper el teléfono

Explicación: Si no desea seguir el consejo dado por r1k0 (que es probablemente la forma correcta de hacerlo si está actualizando una aplicación ya liberada), entonces sólo puede eliminar la base de datos con los siguientes comandos adb y un reinicio de Su aplicación volverá a llamar al método onCreate.

No aconsejo utilizar 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 será vulnerable a ataques de inyección sql, la mejor manera de hacerlo 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); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.