【发布时间】:2010-04-06 15:06:06
【问题描述】:
我知道这是可能的,但我不确定从哪里开始。有没有人能够做到这一点?
谢谢。
【问题讨论】:
我知道这是可能的,但我不确定从哪里开始。有没有人能够做到这一点?
谢谢。
【问题讨论】:
本文中描述的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;
}
}
【讨论】:
在这里查看源代码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
}
如果您要创建可能超出内部容量的大文件,则测试外部存储非常有用。
【讨论】:
我觉得这很有帮助:
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"/>
【讨论】: