Экспорт базы данных SQLite в файл XML в Android - PullRequest
8 голосов
/ 06 апреля 2010

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

Спасибо.

Ответы [ 3 ]

4 голосов
/ 06 апреля 2010

Класс DataXmlExporter, описанный в этой статье, экспортирует базу данных SQL lite в файл XML.

http://www.screaming -penguin.com / узел / 7749

Полный пример доступен в этом репозитории SVN. Класс 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;
   }
}
2 голосов
/ 21 июня 2012

Взгляните на исходный код здесь export-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
    }

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

1 голос
/ 24 августа 2014

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

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"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...