最近开发碰到需要加载商品牌子和商品型号的listview功能,算上型号有5 000多条记录,用string.xml 或者web service代价够大。解决方案是导入外部db文件到应用文件中,通过查询获取速度还是可以,listview在cursor上已经自带支持了分页延迟查询。
首先在网上看了看例子,大部分的方案都是把db文件放在raw包内,然后通过转移到android 模拟器内存内,也是目前想到的较为合理方案。
首先通过以下代码将数据库文件迁移
public boolean extractDatabase(String dbfile) {
try {
if (new File(dbfile).exists()) {
return true;
}
InputStream is = this.context.getResources().openRawResource(
R.raw.models);
try {
FileOutputStream fos = new FileOutputStream(dbfile);
try {
byte[] buffer = new byte[BUFFER_SIZE];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
fos.flush();
}
} finally {
fos.close();
}
} finally {
is.close();
}
return true;
} catch (FileNotFoundException e) {
Log.e("Database", "File not found");
} catch (IOException e) {
Log.e("Database", "IO exception");
}
return false;
}
然后通过打开数据库文件来获取Sqlitedatabase实例
sqLiteDatabase = SQLiteDatabase.openOrCreateDatabase(
DB_LOCATION, null);
sqLiteDatabase.rawQuery(expression, params);
即可查询获取Cursor数据
注:在拷文件过程中,发现在部分AVD版本会出现buffer不够的问题,原因是db文件在拷贝过程中会被解压,从而占用内存,无法成功完成拷贝。后来的方案比较偏,通过将db文件重命名为mp3文件,然后拷为db文件。很可行,mp3文件属于音频压缩格式,可以躲过android的解压过程。有更好的办法,欢迎留言交流
分享到:
相关推荐
Android通过代码加载外部sqlite数据库的实现方案。
Android 数据库SQLite 详解,简单学好SQLite
SQLite 是自给自足的,这意味着不需要任何外部的依赖。 SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。 SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。 SQLite 使用 ANSI-C 编写的,并...
android应用,将外部的sqlite数据库导入到应用的私有空间中,源db文件置于assets目录下,如果源文件大小超过1M,使用Filesplit分割为不超过1M的小文件,那么就将所有分小文件置于assets目录下,本工程里已带...
安卓Android sqlite万能数据库.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android之SQLite数据库开发详解: Android 开发中使用 SQLite 数据库 简介: SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用...
Android Studio SQLite数据库使用
android sqlite数据库 demo code 小型便签 实现增加和编辑。删除数据 结构化存储数据
并添加、修改记录,创建或打开数据库,关闭数据库,插入记录,删除记录,修改记录,向文本区中添加文本,对SQLite孙熟悉的朋友,这个代码相当有参考价值哦,简单易懂的Android SQLite数据库基础操作范例,...
Android使用SQLite数据库进行增删改查详细案例...
一个android读取sqlite数据库的数据并用listview显示demo,如有问题及时提醒。
Android 操作 SQLite数据库 Android 操作 SQLite数据库 Android 操作 SQLite数据库
android对sqlite数据库的操作
这是一个简单的sqlite数据库操作,包含增删改查
Android sqlite数据库的创建和使用,入门知识
该代码实现了android的sqlite数据库的加密和解密
Android之Sqlite数据库操作实例
Android实验报告Sqlite数据库操作.pdf
SQLite(创建数据库)
android SQLite数据库操作源码,包括如何建表,增删改查等操作