`
kirkcoco
  • 浏览: 12711 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android sqlite外部数据库迁移

 
阅读更多
最近开发碰到需要加载商品牌子和商品型号的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_admin 数据库管理软件

    《Android SQLite Admin 数据库管理软件详解》 在移动应用开发领域,SQLite作为一款轻量级的数据库管理系统,广泛应用于Android平台。它允许开发者在应用程序中存储、管理和检索数据,而无需依赖外部服务器。为了...

    Android操作SQLite数据库

    3. **隔离性**:SQLite将所有的数据库信息存储在一个单独的文件中,这不仅简化了数据管理,也便于备份和迁移。 4. **跨平台**:除了支持多种桌面操作系统之外,SQLite还能够在包括Android在内的各种移动平台上运行。...

    Android开发学习教程—Android使用SQLite数据库

    ### Android开发学习教程—深入解析Android使用SQLite数据库 #### SQLite数据库概述 SQLite是一款轻量级、高性能的嵌入式数据库,被广泛应用于各种资源受限的环境中,如移动设备。它支持标准的SQL语言,占用内存极...

    Android应用程序中使用自己的SQLite数据库

    在Android应用程序中使用自己的SQLite数据库是一项常见的需求,特别是在已有数据集或者希望预加载特定数据时。这个过程包括准备SQLite数据库文件、复制到应用的数据库路径以及在应用中打开和访问数据库。以下是一份...

    Android的Realm数据库增删改查实例

    在Android应用开发中, Realm是一个流行且高效的本地对象关系映射(ORM)数据库,它提供了比SQLite更简单、更快捷的API。 Realm数据库允许开发者直接在内存中操作数据,极大地提高了应用程序的性能和用户体验。本...

    轻型的数据库sqlite工具

    2. **自包含**: SQLite是完全自包含的,不依赖于任何外部库,只需要一个简单的动态链接库或者静态链接库即可。 3. **跨平台**: 支持多种操作系统,包括Windows、Linux、macOS等,可以在不同平台上无缝迁移。 4. **...

    sqlite3以及所依赖的文件 Android

    然而,如果需要在命令行环境下直接操作SQLite数据库(例如调试或数据迁移),则需要确保设备或模拟器上安装了sqlite3命令行工具。 解决"sqlite3: not found"的问题,可以从以下几个方面入手: 1. **检查环境变量**...

    Android打包APK Sqlite一起打包成APK

    在Android应用开发中,SQLite数据库通常用于存储应用的本地数据,比如用户设置、游戏进度或者任何需要...记住,每次升级数据库版本时,需要更新`DATABASE_VERSION`以触发`onUpgrade()`方法,以便进行必要的数据库迁移。

    Android SqliteManager 源码.zip

    源码中可以找到相关的实现方式,例如将数据库文件复制到外部存储或者通过ContentProvider进行数据迁移。 通过对Android SqliteManager源码的深入分析,我们可以学习到Android数据库操作的最佳实践,理解如何构建一...

    SQLite升级

    3. **数据库迁移**:在旧版本APP中,用户已有的数据需要被迁移到新的数据库结构中。这通常涉及在创建新表后,将旧表的数据导入到新表中,同时处理任何结构上的差异。 4. **备份和恢复**:在升级前,应备份旧数据库...

    android通过jxl读excel存入sqlite3数据库

    在Android开发中,有时我们需要将外部数据如Excel文件导入到应用程序内部的数据存储系统,例如SQLite3数据库。在提供的代码示例中,展示了如何使用Java的JXL库来读取Excel文件,并将数据存储到SQLite3数据库中。以下...

    CRUD-Android-SQLite:使用SQLite在Android上进行简单的CRUD

    在Android应用开发中,SQLite是一个重要的组成部分,它是一个轻量级的数据库系统,可以在设备本地存储数据。本项目“CRUD-Android-SQLite”旨在教你如何在Android应用中使用SQLite进行基本的创建(Create)、读取...

    Android应用源码之数据库文件写入SD卡-IT计算机-毕业设计.zip

    Android系统默认提供了SQLite数据库,用于本地数据存储。SQLite是一个轻量级的关系型数据库,适用于移动设备。创建一个SQLite数据库通常涉及创建`SQLiteOpenHelper`子类,重写`onCreate()`和`onUpgrade()`方法。 3...

    Sqlite数据库

    在Android平台上,SQLite是默认的本地数据存储解决方案,它允许开发者在应用程序中创建、操作和管理数据库,而无需依赖外部服务器或数据库管理系统。 SQLite数据库的核心特性包括: 1. **关系型数据库**: SQLite...

    sqlite数据库

    5. **SQL兼容**: 虽然不是完全符合SQL标准,但SQLite支持大部分标准SQL语法,使得开发人员能方便地从其他SQL数据库迁移。 6. **高效性能**: 尽管体积小巧,SQLite在处理大量数据时依然表现出良好的性能。 7. **...

    Android_数据库技术

    - **兼容性**:支持多版本数据库迁移。 #### 四、其他数据库技术 除了SQLite和Room之外,Android还支持其他类型的数据库技术,如Realm、Firebase Realtime Database等,这些技术各有千秋,在不同场景下发挥着重要...

    基于Android的数据库移植管理.pdf

    这个过程确保了数据库文件能够从开发环境顺利迁移到Android设备上,使得应用程序能够正常读取和操作SQLite数据库。 总结来说,Android应用开发者必须掌握SQLite数据库的创建和移植技术,因为这是Android应用处理...

    数据库SQLITE特性分析

    这意味着整个数据库可以轻松地在不同位置或设备间复制,无需额外的迁移工具或步骤。这种单一文件的特性使得SQLite非常适合用于需要频繁移动或备份数据的场景。 ##### 2.4 跨平台性 SQLite支持多种操作系统,包括但...

    import-external-sqlite-demo.rar

    在本文中,我们将深入探讨Android与SQLite的交互,以及如何处理外部数据库。 1. **SQLite简介** SQLite是一种关系型数据库管理系统,支持SQL标准,并以库的形式嵌入到应用程序中。它不需要单独的服务器进程,而是...

    android中SQLite(源代码)

    7. **数据备份与恢复**:Android提供了SQLiteBackupAPI,允许应用在外部存储上备份和恢复数据库。这对于用户数据的迁移或应用升级时保持数据完整性非常有用。 8. **安全性**:虽然SQLite数据库文件默认存储在应用的...

Global site tag (gtag.js) - Google Analytics