android 使用外部sqlite数据库

因为在项目中需要使用外部数据库的数据,找了好多资料,最终实现效果的版本,记录下过程 


首先,把xxx.db的数据库文件放到res下面的raw文件夹下面

然后复制数据库代码如下

public static boolean copyRawDBToApkDb(Context context, int copyRawDbResId, String apkDbPath, String dbName, boolean refresh)
        throws IOException {
    boolean b = false;

    File f = new File(apkDbPath);
    if (!f.exists()) {
        f.mkdirs();
    }

    File dbFile = new File(apkDbPath + dbName);
    b = isDbFileExists(dbFile, refresh);

    OutputStream outputStream = null;
    InputStream inputStream = null;
    try {
        if (!b) {

            inputStream = context.getResources().openRawResource(copyRawDbResId);
            outputStream = new FileOutputStream(dbFile);

            byte[] buffer = new byte[1024];
            int len = inputStream.read(buffer);
            while (len > 0) {
                outputStream.write(buffer, 0, len);
                len = inputStream.read(buffer);
            }
            //写完后刷新
            outputStream.flush();
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        try {
            if (inputStream != null) {//关闭流,释放资源
                inputStream.close();
            }
            if (outputStream != null) {
                outputStream.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    return !b;
}
在启动页,调用复制数据库方法 


private void copyRawDB() {
    try {
        // 拷贝res/raw/xxxx.db /data/data/com.bj**.oo/databases/ 目录下面
        boolean isSuccess = DBUtils.copyRawDBToApkDb(MainActivity.this, R.raw.student, DBUtils.APK_DB_PATH, DBUtils.ECMC_DB_NAME, true);
        selDBData();
    } catch (IOException e) {

    }
}


因为在项目中使用的greenDao数据库工具,所以注意,需要把数据库版本改为和外部数据库的版本一致。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值