前言

  如何将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,但没有测试过,不知道后续的版本会不会改进这个数据库发布的问题。

转载于:https://www.cnblogs.com/bmate/archive/2012/09/05/2672020.html

[Android]发布Sqlite数据库相关推荐

  1. Android整合SQLite数据库进行基本的增删改查

    简言 使用Android整合SQLite数据库进行数据存储,大致可以划分为三步: ①继承 SQLiteOpenHelper,创建数据库 ②继承 ContentProvider 类,重写方法 ③在清单文 ...

  2. android sqlite 操作类封装,SQLiteUtils 一个简单的基于 Android 的 Sqlite 数据库的操作封装库 @codeKK Android开源站...

    一个简单的基于 Android 的 Sqlite 数据库的操作封装,它有如下的好处: 便捷地创建表和增添表字段 通过操作对象来 insert 或者 update 表记录 支持多种查询方式,支持分页查询 ...

  3. Android studio—SQlite数据库注册登录

    Android studio-SQlite数据库注册登录 文章目录 Android studio-SQlite数据库注册登录 创建用户类 创建数据库 注册写入数据库 登录读取数据库 效果展示 布局文件 ...

  4. Android Studio SQLite数据库应用(一)

    Android Studio SQLite数据库应用(一) 版本:Android Studio 1.5.1 创建数据库 升级数据库 CRUD数据操作 SQLite (英语发音:/ˌɛskjuːɛlˈl ...

  5. android数据库isnull,Android中SQLite数据库知识点总结

    SQLite 数据库简介 SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本.它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需 ...

  6. android连接SQLite数据库-----增加改查+分页

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 ...

  7. Android之SQLite数据库学习

    (一)使用Android原生API 1. 介绍 SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎,它是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是 ...

  8. Android使用SQLite数据库(1)

    Android中使用SQLite数据库要通过SQLiteOpenHelper类. 首先,定义相关变量: // 数据库变量DatabaseHelper mDBH;SQLiteDatabase db;pu ...

  9. android 将SQLite数据库的表格导出为csv格式,并解析csv文件

    在做android的开发的时候,将数据保存到SQLite数据库中,有时候会要将保存的这些数据导出成excel表格,这样更方便查看.通过查找资料,可以将数据库中的表格转化成 csv(Comma-Sepa ...

最新文章

  1. PRT(Precomputed Radiance Transfer)球谐光照(Spherical Harmonic Lighting)
  2. python3中numpy函数tile的用法
  3. 通过syslog接收远程日志
  4. Golang并发——并发技术Goroutine和channel的使用、定时器、生产者消费者、条件变量、select
  5. linphone相关(转)
  6. confluence 统计页面访问量插件Page View Tracker
  7. 周鸿祎:做产品体验先把自己切换到二傻子模式
  8. 2014年12月1日 量产U+B+高端隐藏 UD(U深)三分区和分区表项,支持bios/uefi启动
  9. 诺基亚 XGS-PON FTTP 系统在科威特完成测试
  10. app推送-极光推送
  11. python语言由psf组织所有、这是一个商业组织_智慧职教云课堂APP店长实务答案搜题公众号...
  12. 从狂热的苹果粉丝们来看中国式“杯具”
  13. 大学本科计算机专业那些课 左飞
  14. c语言main的作用是什么,c语言main是什么意思-与非网
  15. mac、parallel是什么
  16. OpenGL with QtWidgets:练习之甜甜圈
  17. 工具及方法 - 如何保护眼睛
  18. 网络犯罪市场Deer.io俄罗斯管理员在美国被判入狱
  19. Unity制作贪吃蛇
  20. nodemcu刷鸿蒙系统,ESP01S刷入NodeMCU固件

热门文章

  1. .NET 4.5 Task异步编程学习资料
  2. 神奇的计算器dc和bc
  3. 制作mac系统安装U盘
  4. Codeforces 313
  5. Android Sqlite 数据初始化
  6. Ajax step by step
  7. Ubuntu18.04.3虚拟机安装步骤图文教程
  8. Qt-qml元素布局
  9. abc类ip地址_通信网络的IP地址分配原理
  10. 大数据翻页_【干货】大数据翻页的难点和技巧