前言
如何将Sqlite数据库与apk一同发布?刚开始用时有朋友告诉我直接用adb命令手工发布,或者写sql语句动态创建,感觉不太理想。得益于银河使者的实现基于Android的英文电子词典这篇文章,再经过文章2的补充以及实践得以完成,感谢大家的分享!
文章
1. 实现基于Android的英文电子词典
2. Using your own SQLite database in Android applications
3. Android Asset,res/raw限制文件大小UNCOMPRESS为1MB
声明
欢迎转载,但请保留文章原始出处:)
博客园:http://www.cnblogs.com
农民伯伯: http://www.cnblogs.com/over140/
正文
一、准备
1.1 准备目录
在Android项目工程res下新建raw文件夹,在这个文件夹里面的文件不会被编译压缩。
1.2 准备数据库
新建或拷贝一个数据库,然后打开,依次执行以下两条SQL语句:
CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'zh_CN')
INSERT INTO "android_metadata" VALUES ('zh_CN')
这个表用途不太清楚,但是如果用Android sqlite API创建一个数据库的话,会默认带上这个表,而且少了还不行,会报错。
二、实现代码
/**
* 是否完成初始化
*/
private static boolean isInit = false;
/**
* 初始化数据库
* @param context
*/
synchronized public static void init(Context context)
{
if(isInit)
return;
// 输出路径
String outFileName = DATABASE_PATH + DATABASE_NAME;
//检测是否已经创建
File dir = new File(outFileName);
if(dir.exists())
return;
// 检测/创建数据库的文件夹
dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();
InputStream input = null;
OutputStream output = null;
// 从资源中读取数据库流
input = context.getResources().openRawResource(R.raw.db);
try {
output = new FileOutputStream(outFileName);
// 拷贝到输出流
byte[] buffer = new byte[2048];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭输出流
try {
output.flush();
output.close();
} catch (IOException e) {
}
// 关闭输入流
try {
input.close();
} catch (IOException e) {
}
}
isInit = true;
}
代码说明:
a). 在主窗口(Activity)中调用一次即可,随后直接用SQLiteDatabase.openDatabase操作使用即可。
结束
注意文章3,但没有测试过,不知道后续的版本会不会改进这个数据库发布的问题。
分享到:
相关推荐
本主题主要围绕如何将SQLite数据库与apk文件一起发布,并存放在`res/raw`目录下进行详细讲解。 首先,我们要理解`res/raw`目录的作用。这个目录是用来存放应用的原始资源文件,这些文件在打包时会被编译成对应的...
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个... 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。 这个sqlite3数据库操作示例,里面有详细教程和sqlite打开工具。
标题中的“btree_rb.rar”可能是指一个关于SQLite数据库内部实现的B树(B-Tree)数据结构的源码压缩包,而“rb”通常代表“Red-Black Tree”,这是一种自平衡的二叉查找树,用于优化数据库的查询性能。 在SQLite中...
这个压缩包包含了与SQLite数据库相关的多个重要组件,适合开发者用于学习、编译或在Windows平台上使用SQLite。 首先,`sqlite-doc-3080500.zip`是SQLite的官方文档,包含了详细的API参考、用户指南和设计哲学等内容...
SQLite数据库是一种轻量级、开源的嵌入式关系数据库,由D. Richard Hipp在2000年发布。它的设计理念是减少应用程序管理数据的开销,提供高度的可移植性和低资源占用。SQLite数据库不依赖于网络配置或独立服务器,...
- 对于发布应用,使用ProGuard进行代码混淆,保护SQLite数据库相关类不被逆向工程分析。 以上就是关于Android中SQLite数据库使用的一些核心知识点,通过理解并掌握这些,开发者可以有效地管理和操作本地数据,提升...
在Unity3D中与SQLite数据库进行交互是一项常见的需求,特别是在游戏开发中需要持久化存储数据时。本教程主要讲解如何在Unity3D中直接连接SQLite数据库,并通过JavaScript脚本进行基本的数据库操作。 首先,你需要...
在Android应用开发中,SQLite数据库是常用的本地数据存储方式,它轻量级、高效且易于使用。本篇文章将深入探讨如何进行SQLite数据库的升级以及利用Loader实现数据的异步加载,提升用户体验。 SQLite数据库升级: 当...
然后,我们需要使用SQLite Expert Professional工具创建数据库,并使用“Data Transfer Wizard”将Access数据库中的数据导入到SQLite数据库中。 在使用“Data Transfer Wizard”时,我们需要输入Provider=Microsoft...
标题中的“dotnet_sqlite_winform”表明这是一个基于.NET Framework(通常称为.dotNET)的Windows Forms(WinForm)应用程序,该程序集成了SQLite数据库。SQLite是一个轻量级、开源的嵌入式SQL数据库引擎,适合在不...
### Python模块之SQLite数据库知识点详解 #### 一、SQLite简介 SQLite是一款轻量级的数据库管理系统,它以源代码的形式免费发布,支持多种操作系统。由于其体积小、速度快、使用简单等特点,在移动设备和嵌入式系统...
1. **免配置**:SQLite数据库只需一个文件,无需复杂的服务器配置,可通过FTP等方式轻松部署。 2. **备份简单**:数据库备份就是复制数据库文件,易于实现快速备份和恢复。 3. **大容量支持**:单个数据库文件可支持...
SQLite的源代码通常以“amalgamation”形式发布,即所有必要的源文件被整合到一起,方便用户一次性编译。"sqlite-amalgamation-3.6.5.tar.gz"就是这样一个文件,它是一个tar归档文件,gz是gzip的压缩格式,里面包含...
2. **创建数据库连接**:在Delphi的设计视图中,从组件面板拖拽一个SQLite连接组件到表单上,设置相应的属性,如DatabaseName指向SQLite数据库文件的位置,DriverName指定为SQLite驱动。 3. **创建数据表**:通过...
rqlite 是一个用 Go 语言开发的分布式系统,提供 SQLite 数据库的复制功能。rqlite 使用 Raft来确保所有 SQLite ... rqlite 提供了数据库的容错以及复制,而且安装、发布和运维都非常简单。 标签:rqlite
### Python模块之SQLite数据库知识点详解 #### 一、SQLite简介 SQLite是一款轻量级的数据库管理系统,它以源代码的形式免费发布,支持多种操作系统。SQLite的特点在于它无需独立的服务器进程,可以作为应用程序的一...
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源... 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
智能实验室监控系统由多个组成部分构成,包括数据采集模块(传感器网络)、数据处理模块(SQLite数据库)、用户界面模块(Qt/E)、以及远程通信模块(嵌入式Web服务器)。该系统可以实时监测实验室环境参数,并通过...
在本篇毕业论文《基于Python和SQLite数据库的学生社团管理系统设计与实现》中,作者探讨了如何利用Python编程语言和SQLite数据库构建一个高效、实用的学生社团管理信息系统。论文旨在为专科和本科毕业生提供一个原创...
3. 整个SQLite数据库存储在单个跨平台磁盘文件中,简化了数据管理。 4. 它非常小巧且轻量级,完全配置后小于400KiB,省略了可选功能后则小于250KiB。 5. SQLite独立无外部依赖,数据库事务完全兼容ACID,允许从多个...