2010-04-06 12 views

Respuesta

4

La clase DataXmlExporter descrita en este artículo exportará un SQL lite DB a un archivo XML.

http://www.screaming-penguin.com/node/7749

El ejemplo completo está disponible en este repositorio SVN. La clase ManageData invoca la exportación.

http://totsp.com/svn/repo/AndroidExamples/trunk/

Usted tendrá que crear una clase de aplicación que expone la base de datos y se hace referencia como el nombre de la aplicación en el archivo AndroidManifest.xml. A continuación, utilice ese DB como argumento para el constructor DataXmlExporter.

Aquí está la clase de aplicación que uso. Usted ya debe tener una clase (probablemente no es nombrado DatabaseHelper) que se extiende SQLiteOpenHelper

package com.billybobbain.android.someapp; 
import android.app.Application; 
import android.util.Log; 

public class MyApplication extends Application { 

    public static final String APP_NAME = "SomeApp"; 

    private DatabaseHelper dataHelper; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Log.d(APP_NAME, "APPLICATION onCreate"); 
     this.dataHelper = new DatabaseHelper(this);  
    } 

    @Override 
    public void onTerminate() { 
     Log.d(APP_NAME, "APPLICATION onTerminate");  
     super.onTerminate();  
    } 

    public DatabaseHelper getDataHelper() { 
     return this.dataHelper; 
    } 

    public void setDataHelper(DatabaseHelper dataHelper) { 
     this.dataHelper = dataHelper; 
    } 
} 
+0

¿Cómo se puede llamar a esta clase? – jcrowson

+0

Gracias por los detalles adicionales de Wayne. Tengo otra pregunta: si quisiera exportar la base de datos cuando un usuario presiona un botón, por ejemplo, "Enviar base de datos", ¿asignaría el botón para iniciar un intento para la clase MyApplication o la clase XMLExport ?. – jcrowson

+0

Ese ejemplo de Android vinculado anteriormente hace exactamente lo que quiere. Debería poder agregar ese código a su aplicación, cambiar un poco los nombres de los archivos, agregar el intento al manifiesto y estar listo para comenzar. Tiene un botón de copia de seguridad de DB y un botón de exportación a XML en la actividad. –

2

Tener un vistazo al código fuente aquí exporting-a-sqlite-database-to-an-xml-file-in-android

El único cambio que tenía que hacer (para detener algunas advertencias de Eclipse) fue cerrar un cursor en el método exportData(). Para que el código sea más portátil, también pasé el archivo XML y la ubicación como un argumento en lugar de como un campo final declarado.

El código escribe el archivo XML en la tarjeta SD. Ahora, @mmaitlen que enumeró el código fuente en su blog no agrega ninguna característica para probar la existencia de una unidad de almacenamiento externa. Así que eso te queda por hacer.

Sin embargo, puede incrustar un código simple de probar la existencia de una tarjeta de memoria se puede escribir con el siguiente fragmento (no probado):

sdOkToWrite = false; 
    String sdTest = Environment.getExternalStorageState(); 
    if (sdTest.equals(Environment.MEDIA_MOUNTED)) { 
     sdOkToWrite = true; 
    } else { 
    // Here's where you can code what to do without the external storage 
    } 

Las pruebas para el almacenamiento externo es útil si tiene archivos de gran tamaño a crear que puede exceder la capacidad interna.

+0

esto es lo que quiero ... excelente enlace ... gracias amigo – Thiru

1

Me pareció muy útil:

http://www.phonesdevelopers.com/1788273/

Su uso de la siguiente manera para exportar a la tarjeta SD:

File sd = Environment.getExternalStorageDirectory(); 
String path = sd + "/" + DB_NAME + ".xml"; 

DatabaseDump databaseDump = new DatabaseDump(mySQLiteOpenHelperObject.getReadableDatabase(), path); 
databaseDump.exportData(); 

Por supuesto, no se olvide:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
Cuestiones relacionadas