将SQLite数据库导出到Android中的XML文件

时间:2010-04-06 15:06:07

标签: java xml android sqlite

我知道这是可能的,但我不确定从哪里开始。有没有人能够做到这一点?

感谢。

3 个答案:

答案 0 :(得分:4)

本文中描述的DataXmlExporter类将SQL lite数据库导出到XML文件。

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

此SVN仓库中提供了完整示例。 ManageData类调用导出。

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

您需要创建一个公开数据库的应用程序类,并在AndroidManifest.xml文件中作为应用程序名称引用。然后使用该DB作为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;
   }
}

答案 1 :(得分:2)

在这里查看源代码exporting-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
    }

如果您要创建可能超出内部容量的大型文件,则测试外部存储非常有用。

答案 2 :(得分:1)

我发现这非常有帮助:

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"/>