关闭

在android项目里使用自带的SQLite数据库

标签: 数据库sqlite
940人阅读 评论(0) 收藏 举报
分类:

最近在项目中需要在App中内置股票码表和公司名,实现在不联网状态下,第一是使用App也能搜索到公司名和码表信息,试了很多网上方法,困扰了一天,最后采取如下方法解决;使用android默认的访问sqlite的方法,访问的是:data/data/你的项目package/database/数据库名称 下的数据库,假如要在项目中打包db文件,该怎么弄呢?

有些时候我们的软件用到SQLite数据库,这个时候怎么把一个做好的数据库打包进我们的APK呢,其实很简单,就是把我们的数据库文件放到我们的手机里,所以不必局限在哪个地方写这个代码,在第一次创建数据库的时候可以,我觉得在软件起动页里效果更好一点,首先我们应该把事先写好的数据库文件比如
test.db放到res文件夹里的raw文件夹里,也可以放到assets里,因为这两个文件夹不会在生成APK的时候不会被压缩。

  /**
     * 外部数据库文件导入
     */
    private void writeFileDbToSqlite() {

        String DB_PATH = "/data/data/com.lsh.irr/databases/";
        String DB_NAME = "irr.db";

        File file = new File(DB_PATH);

        if (!file.exists()) {

            // 如 database 目录不存在,新建该目录
            if (!file.exists()) {

                file.mkdir();
            }

            try {
                // 得到 assets 目录下我们实现准备好的 SQLite 数据库作为输入流
                InputStream is = this.getAssets().open(DB_NAME);
                // 输出流
                OutputStream os = new FileOutputStream(DB_PATH + DB_NAME);

                // 文件写入
                byte[] buffer = new byte[1024];
                int length;
                while ((length = is.read(buffer)) > 0) {
                    os.write(buffer, 0, length);
                }

                // 关闭文件流
                os.flush();
                os.close();
                is.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
 */ 初始化sqlite*/
    private void initSqlite() {

        writeFileDbToSqlite();
        .......
        }
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18405次
    • 积分:428
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    最新评论