簡體   English   中英

將SQLite數據庫導出到Android中的XML文件

[英]Exporting a SQLite database to an XML file in Android

我知道這是可能的,但我不確定從哪里開始。 有沒有人能夠做到這一點?

謝謝。

本文中描述的DataXmlExporter類將SQL lite DB導出到XML文件。

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

此SVN倉庫中提供了完整示例。 ManageData類調用導出。

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

您需要創建一個公開數據庫的應用程序類,並在AndroidManifest.xml文件中作為應用程序名稱引用。 然后使用該DB作為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;
   }
}

看看這里的源代碼導出-s-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"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM