2010-04-06 97 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"/> 
相关问题