如何将带数据的SQLite数据与apk程序一起发布
任何文件(包括SQLite数据库文件)与apk程序一起发布都必须将该文件嵌入到apk文件中。对于SQLite数据库来说,安卓的程序不能打开和操作嵌入在apk程序中的数据库文件。因此,需要想办法在程序第一次启动时就将SQLite数据库复制到手机内存或者SD卡上,然后才能再来操作SQLite数据库。
这里我把数据库文件复制到应用程序的assets或res/raw目录中,因为只有这两个目中中的资源文件才不会被编译,在应用程序第一次启动时应该使用下面的代码将数据库复制到手机内存或sd卡上,然后在操作数据库。下面是代码:
String databaseFileName = "/sdcard/test.db";
//当test.db不存在时,将res/raw目录中的数据库文件赋值到SD卡的目录中
if (!(new File(databaseFileName).exists())) {
//在res/raw目录中存在test.db文件
InputStream is = getResources().openRawResource(R.raw.test);
FileOutputStream fos = new FileOutputStream(databaseFileName);
byte[] buffer = new byte[4096];
int count = 0;
while ((count = is.read(buffer))> 0 ) {
fos.write(buffer,0,count);
}
fos.close();
is.close();
}
//打开数据库
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFileName, null);
//获取到数据库之后,下面就可以进行数据库的操作了
...