在很多情况下,应用程序需要连同数据库一起发布,而且数据中要带有一些记录.要满足这个需求,一般解决如下两个问题:
(1) 如何将数据库文件连同应用程序一起发布.
可以先利用可视化工具如SQLite Expert Professional 建立一个数据库文件,并向数据表中添加相应的记录,然后将数据库文件放到<Eclipse Android 工程目录>\res\raw\目录中,所有放到 raw 目录中的资源都不会被编译,而只以原始数据保存在apk包中。
(2) 如何打开与应用程序一起发布的数据库
如果数据库比较大,或出于其他的原因,可能会将数据库文件放在SD卡的某个目录中。在这种情况下,就需要使用 SQLiteDatabase类的 openOrCreateDatabase 方法来打开这个数据库文件。如果数据库文件不存在,调用该方法会创建一个新的数据库文件。openOrCreateDatabase 方法的定义如下:
public static SQLiteDatabase openOrCreateDatabase(String path, CursorFactory factory);
其中 path 参数表示数据库文件夹的完整路径,例如 /sdcard/dictionary.db。在直接调用openOrCreateDatabase 方法时,factory 参数值可以是null
这里还有一个问题,在发布apk文件时,数据库文件被打包在apk文件中, 要如何打开apk包中的数据库呢?
在第1次运行程序时,需要将数据库文件复制到内存或SD卡的相应目录。通过使用openRawResource 方法可以获得res\raw 目录中关联资源文件的 InputStream 对象。有了InputStream 对象。复制文件就简单了。在ch06_dictionary 工程中有实现代码
也可以将数据库文件与 apk 作为两个单独的文件发布,这样就省略了复制文件这一步。但这样会造成发布时需要处理多个文件,会带来一些麻烦