【问题标题】:Exporting a SQLite database to an XML file in Android在 Android 中将 SQLite 数据库导出到 XML 文件
【发布时间】:2010-04-06 15:06:06
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: java xml android sqlite


    【解决方案1】:

    本文中描述的DataXmlExporter 类会将 SQL lite DB 导出到 XML 文件。

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

    完整示例可在此 SVN 存储库中找到。 ManageData 类调用导出。

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

    您需要创建一个应用程序类来公开数据库并在 AndroidManifest.xml 文件中作为应用程序名称引用。然后将该数据库用作DataXmlExporter 构造函数的参数。

    这是我使用的应用程序类。您应该已经有一个扩展 SQLiteOpenHelper 的类(可能不命名为 DatabaseHelper

    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;
       }
    }
    

    【讨论】:

    • 如何调用这个类?
    • 感谢韦恩补充的细节。我还有另一个问题,如果我想在用户按下按钮时导出数据库,例如“发送数据库”,我会映射按钮以启动 MyApplication 类或 XMLExport 类的意图吗?。
    • 上面链接的那个 android 例子正是你想要的。您应该能够将该代码添加到您的应用程序中,稍微更改文件名,将意图添加到清单中,然后一切顺利。它在活动上有一个备份 DB 按钮和一个导出到 XML 按钮。
    • 感谢您的回复韦恩。我想我的问题是,如果我只想包含导出 XML 部分,我需要在现有代码中添加多少上面的示例。据我了解,我需要上面的“MyApplication”类,但是由于它不扩展 Activity,我该如何开始呢?我有点困惑我需要哪些部分。谢谢。
    • @BillyBobBain 你能检查一下上面的链接吗?他们现在打不开。非常感谢。
    【解决方案2】:

    在这里查看源代码exporting-a-sqlite-database-to-an-xml-file-in-android

    我必须做的唯一改变(停止一些 Eclipse 警告)是在 exportData( ) 方法中关闭一个游标。为了使代码更具可移植性,我还将 XML 文件和位置作为参数而不是作为声明的 final 字段传递。

    代码将 XML 文件写入 SD 卡。现在,在他的博客上列出源代码的@mmaitlen 没有添加任何功能来测试外部存储单元的存在。所以这留给你做。

    但是,您可以嵌入一些简单的代码来测试是否存在具有以下 sn-p(未经测试)的可写存储卡:

        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
        }
    

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

    【讨论】:

      【解决方案3】:

      我觉得这很有帮助:

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

      【讨论】:

        猜你喜欢
        • 2015-09-30
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        • 1970-01-01
        • 2013-05-08
        • 1970-01-01
        • 1970-01-01
        • 2016-01-21
        相关资源
        最近更新 更多