Экспорт базы данных SQLite в XML-файл в Android

Я знаю, что это возможно, но я не совсем уверен, где начать. Кто-нибудь смог достичь этого?

спасибо.

3 ответов


на DataXmlExporter класс, описанный в этой статье, экспортирует БД SQL lite в XML-файл.

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

полный пример доступен в этом РЕПО SVN. The ManageData класс вызывает экспорт.

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

вам нужно будет создать класс приложения, который предоставляет БД и ссылается как приложение имя в AndroidManifest.XML-файл. Затем используйте эту БД в качестве аргумента для DataXmlExporter конструктор.

вот класс приложения, который я использую. У вас уже должен быть класс (возможно, не с именем DatabaseHelper), что расширяет 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;
   }
}

посмотрите на исходный код здесь экспорт-a-sqlite-database-to-an-xml-file-in-android

единственное изменение, которое мне нужно было сделать (чтобы остановить несколько предупреждений Eclipse), - закрыть курсор в методе exportData (). Чтобы сделать код более переносимым, я также передал XML-файл и местоположение в качестве аргумента, а не в качестве объявленного конечного поля.

код записывает XML-файл на SD-карту. Теперь @mmaitlen, который перечислил исходный код в своем блоге, не добавьте любые функции для проверки наличия внешнего запоминающего устройства. Так что тебе остается это сделать.

однако вы можете встроить простой код для проверки наличия записываемой карты памяти со следующим фрагментом (непроверенным):

    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
    }

тестирование внешнего хранилища полезно, если у вас есть большие файлы для создания, которые могут превышать внутреннюю емкость.


Я нашел это очень полезно:

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

используя его следующим образом, чтобы экспортировать его на sd-карту:

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

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

конечно, не забывайте:

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