[英]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.