`
dss16694
  • 浏览: 148409 次
社区版块
存档分类
最新评论

发布Sqlite数据库

 
阅读更多

前言

  如何将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文件一起发布,raw目录下

    本主题主要围绕如何将SQLite数据库与apk文件一起发布,并存放在`res/raw`目录下进行详细讲解。 首先,我们要理解`res/raw`目录的作用。这个目录是用来存放应用的原始资源文件,这些文件在打包时会被编译成对应的...

    sqlite3数据库操作示例

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个... 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。 这个sqlite3数据库操作示例,里面有详细教程和sqlite打开工具。

    btree_rb.rar_sqlite数据库_嵌入 sqlite

    标题中的“btree_rb.rar”可能是指一个关于SQLite数据库内部实现的B树(B-Tree)数据结构的源码压缩包,而“rb”通常代表“Red-Black Tree”,这是一种自平衡的二叉查找树,用于优化数据库的查询性能。 在SQLite中...

    2014.06.22,最新sqlite数据库相关

    这个压缩包包含了与SQLite数据库相关的多个重要组件,适合开发者用于学习、编译或在Windows平台上使用SQLite。 首先,`sqlite-doc-3080500.zip`是SQLite的官方文档,包含了详细的API参考、用户指南和设计哲学等内容...

    SQLite数据库入门与分析技术白皮书

    SQLite数据库是一种轻量级、开源的嵌入式关系数据库,由D. Richard Hipp在2000年发布。它的设计理念是减少应用程序管理数据的开销,提供高度的可移植性和低资源占用。SQLite数据库不依赖于网络配置或独立服务器,...

    Android代码(sqlite数据库上).zip

    - 对于发布应用,使用ProGuard进行代码混淆,保护SQLite数据库相关类不被逆向工程分析。 以上就是关于Android中SQLite数据库使用的一些核心知识点,通过理解并掌握这些,开发者可以有效地管理和操作本地数据,提升...

    Unity3D教程:Unity3D与Sqlite数据库直连1

    在Unity3D中与SQLite数据库进行交互是一项常见的需求,特别是在游戏开发中需要持久化存储数据时。本教程主要讲解如何在Unity3D中直接连接SQLite数据库,并通过JavaScript脚本进行基本的数据库操作。 首先,你需要...

    android sqlite数据库升级及使用loader异步加载

    在Android应用开发中,SQLite数据库是常用的本地数据存储方式,它轻量级、高效且易于使用。本篇文章将深入探讨如何进行SQLite数据库的升级以及利用Loader实现数据的异步加载,提升用户体验。 SQLite数据库升级: 当...

    Access数据库导入SQLite

    然后,我们需要使用SQLite Expert Professional工具创建数据库,并使用“Data Transfer Wizard”将Access数据库中的数据导入到SQLite数据库中。 在使用“Data Transfer Wizard”时,我们需要输入Provider=Microsoft...

    dotnet_sqlite_winform

    标题中的“dotnet_sqlite_winform”表明这是一个基于.NET Framework(通常称为.dotNET)的Windows Forms(WinForm)应用程序,该程序集成了SQLite数据库。SQLite是一个轻量级、开源的嵌入式SQL数据库引擎,适合在不...

    python模块之sqlite数据库

    ### Python模块之SQLite数据库知识点详解 #### 一、SQLite简介 SQLite是一款轻量级的数据库管理系统,它以源代码的形式免费发布,支持多种操作系统。由于其体积小、速度快、使用简单等特点,在移动设备和嵌入式系统...

    Qt4访问sqlite数据库.doc

    1. **免配置**:SQLite数据库只需一个文件,无需复杂的服务器配置,可通过FTP等方式轻松部署。 2. **备份简单**:数据库备份就是复制数据库文件,易于实现快速备份和恢复。 3. **大容量支持**:单个数据库文件可支持...

    sqlite 数据库源程序 3.6.5 版本

    SQLite的源代码通常以“amalgamation”形式发布,即所有必要的源文件被整合到一起,方便用户一次性编译。"sqlite-amalgamation-3.6.5.tar.gz"就是这样一个文件,它是一个tar归档文件,gz是gzip的压缩格式,里面包含...

    DelphiXE控制跨平台数据库SQLite

    2. **创建数据库连接**:在Delphi的设计视图中,从组件面板拖拽一个SQLite连接组件到表单上,设置相应的属性,如DatabaseName指向SQLite数据库文件的位置,DriverName指定为SQLite驱动。 3. **创建数据表**:通过...

    SQLite数据库复制工具rqlite.zip

    rqlite 是一个用 Go 语言开发的分布式系统,提供 SQLite 数据库的复制功能。rqlite 使用 Raft来确保所有 SQLite ... rqlite 提供了数据库的容错以及复制,而且安装、发布和运维都非常简单。 标签:rqlite

    python模块之sqlite数据库.pdf

    ### Python模块之SQLite数据库知识点详解 #### 一、SQLite简介 SQLite是一款轻量级的数据库管理系统,它以源代码的形式免费发布,支持多种操作系统。SQLite的特点在于它无需独立的服务器进程,可以作为应用程序的一...

    sqlite数据库查看软件

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源... 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

    嵌入式Linux及SQLite数据库在智能监控中的应用研究.pdf

    智能实验室监控系统由多个组成部分构成,包括数据采集模块(传感器网络)、数据处理模块(SQLite数据库)、用户界面模块(Qt/E)、以及远程通信模块(嵌入式Web服务器)。该系统可以实时监测实验室环境参数,并通过...

    基于python和SQLite数据库的学生社团管理系统设计与实现.docx

    在本篇毕业论文《基于Python和SQLite数据库的学生社团管理系统设计与实现》中,作者探讨了如何利用Python编程语言和SQLite数据库构建一个高效、实用的学生社团管理信息系统。论文旨在为专科和本科毕业生提供一个原创...

    无涯教程(LearnFk)-SQLite教程完整离线版.pdf

    3. 整个SQLite数据库存储在单个跨平台磁盘文件中,简化了数据管理。 4. 它非常小巧且轻量级,完全配置后小于400KiB,省略了可选功能后则小于250KiB。 5. SQLite独立无外部依赖,数据库事务完全兼容ACID,允许从多个...

Global site tag (gtag.js) - Google Analytics