2010-04-06 64 views

回答

4

本文中介紹的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

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

怎麼會打電話給這個班? – jcrowson 2010-04-06 18:26:00

+0

感謝您爲Wayne添加的細節。我還有另一個問題,如果我想在用戶按下按鈕時導出數據庫,例如「發送數據庫」,我是否會映射按鈕以啓動MyApplication類或XMLExport類的意圖? – jcrowson 2010-04-06 22:23:17

+0

上面鏈接的android例子完全符合你的要求。您應該能夠將該代碼添加到您的應用程序中,稍微更改文件名,將該意圖添加到清單並且可以繼續。它有一個備份數據庫按鈕和一個導出到XML按鈕的活動。 – 2010-04-07 00:40:11

2

看一看源代碼在這裏exporting-a-sqlite-database-to-an-xml-file-in-android

我不得不做出的唯一改變一個類(可能未命名DatabaseHelper)(停止一些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 
    } 

測試爲外部存儲是非常有用的創造可能超過內部能力。

+0

這就是我想要的...優秀的鏈接..謝謝你的朋友 – Thiru 2012-10-10 04:56:04

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"/> 
相關問題