Android 引用外部数据库(一)

有现成的数据库,需要直接引入到项目中使用。

#准备

在开始之前我们要确认现有的数据库的表结构和字段信息等。(注意要看清楚数据库的大小,后面有用)

#第一步

将外部数据库拷贝到项目中的 assets文件夹中,如图

#第二步

在你要使用数据库之前将数据库拷贝到 /data/data/包名/databases/ 目录下。
通过获取数据库的大小判断一下是否已经拷贝完成。

代码

public static void copyDbFile(Context context, String db_name) {
    InputStream in = null;
    FileOutputStream out = null;
    //String path = "/data/data/" + context.getPackageName() + "/databases/";
    File filePath = context.getDatabasePath(db_name);
    //spUtils 是为了防止多次拷贝
    if (!SharePreferenceUtils.getBoolean(GlobalContent.COPE_SUCCESS,false)){
        try {
            in = context.getAssets().open(db_name); // 从assets目录下复制
            out = new FileOutputStream(filePath);
            int length = -1;
            byte[] buf = new byte[1024];
            while ((length = in.read(buf)) != -1) {
                out.write(buf, 0, length);
            }
            out.flush();
            SharePreferenceUtils.putBoolean(GlobalContent.COPE_SUCCESS,true);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (in != null) in.close();
                if (out != null) out.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }
}

#第三步

这时就可以开始查库了

SqlLiteHelper sqlLiteHelper = new SqlLiteHelper(getContext(), "mySql.db", null, 1);
SQLiteDatabase readableDatabase = sqlLiteHelper.getReadableDatabase();

try {
        Cursor query = readableDatabase.query("message", new String[]{"_id", "message"}, null, null, null, null, null, limit);
        boolean b = query.moveToFirst();
        while (!query.isLast()) {
            int id = query.getInt(query.getColumnIndex("_id"));
            String message = query.getString(query.getColumnIndex("message"));
            mDataList.add(new LoveMessageBean(id, message));
            query.moveToNext();
        }
        query.close();
        Logger.i("mDataList : "+ mDataList.size());
    }catch (Exception e){
        UiUtils.showToast(getContext(),"error");
    }

到这里已经成功的把外部数据库拷贝到项目中,并且开始 CRUD 了。
以上的方法,是做简单也是最原始的方法,之后会尝试使用第三方的工具来查询,如 GreenDao LitePal 等。

在Android开发中使用数据库进行存储查询等操作是基本功,推荐可以看看以下文章:

  1. 郭神的LitePal 系列文章 Android数据库高手秘籍
  2. Android 数据库对比 传送门

查看数据库的工具:Sqlitebrowser
下载地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,942评论 25 709
  • 空调屋里坐,雪糕嘴上叼。 躺卧自随便,电视更换频。 零食堆如山,健身不可缺。 能知今日福,怜惜万年何?
    华客鲁俊阅读 1,475评论 0 3
  • “感谢让我遇见你。” “假如没有遇见我会怎样?”,闲聊时,她发出了这样的提问。 我也一时语塞,文不对题答道: “就...
    不随便雪糕阅读 1,664评论 0 0
  • 1 梅子是个能力很强的女孩,从十四岁开始就自己打工赚钱零花,大学里所有的费用,都是自己做生意赚的。 只可...
    曾素妍阅读 2,854评论 4 6
  • 衡关飞骐骏,将送故人行。 胡鲤随叶横的队伍行军,途中因风寒而体力不支,伏在叶横手下兵士背上走了一程。梧姑娘兀自为他...
    漪付阅读 1,885评论 2 4