Android数据库GreenDAO3.2.2的使用(三,GreenDao操作外部数据库----操作.db数据库)

来源:互联网 发布:淘宝怎么分享购物清单 编辑:程序博客网 时间:2024/05/18 00:23

为了方便项目初期调试,需要运行后台给的数据。后台给了一个.db格式的文件,实际上就是打开已有的数据库文件。外部数据库指的就是一个在外部单独创建的.db格式的文件,是一个写死的数据。也可以是类似全国各个省各个市的一些基本信息,每个市的信息等等,可以储存在.db格式的文件里面,合不合理暂不先说,只是考虑一下怎么操作,因为我的项目初期就是这样通过操作.db文件来先实现功能的,后期再改为从接口获取,这样可以节省开发时间。

首先把.db格式的数据文件拷贝到工程项目的assets文件夹下,完后就是读取这个.db文件,不啰嗦,直接上代码:

import android.content.Context;import android.database.sqlite.SQLiteDatabase;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;/** * 创造一个临时数据 * Created by KingsleyCheng on 2017/5/17. */public class SQLdm {    String filePath = "data/data/com.*****/databases/test.db";    String pathStr = "data/data/com.*****/databases";    SQLiteDatabase database;    public SQLiteDatabase openDatabase(Context context) {        System.out.println("filePath:" + filePath);        File jhPath = new File(filePath);        if (jhPath.exists()) {            return SQLiteDatabase.openOrCreateDatabase(jhPath, null);        } else {            File path = new File(pathStr);            if (path.mkdir()) {            } else {            }            try {                InputStream is = context.getClass().getClassLoader().getResourceAsStream("assets/" + "yushi2.db");                FileOutputStream fos = new FileOutputStream(jhPath);                byte[] buffer = new byte[10240];                int count = 0;                while ((count = is.read(buffer)) > 0) {                    fos.write(buffer, 0, count);                }                fos.flush();                fos.close();                is.close();            } catch (IOException e) {                e.printStackTrace();                return null;            }            return openDatabase(context);        }    }}
其使用方法与普通数据库一样,同样是在数据库管理单例里面处理,在application里面初始化:

/** * 数据库操作类 * Created by KingsleyCheng on 2017/5/11. */public class GreenDaoUtils {    private MySQLiteOpenHelper mHelper;    private SQLiteDatabase db;    private DaoMaster mDaoMaster;    private DaoSession mDaoSession;    private static class GreenDaoUtilsHolder {        private static final GreenDaoUtils INSTANCE = new GreenDaoUtils();    }    private GreenDaoUtils() {    }    public static GreenDaoUtils getSingleton() {        return GreenDaoUtilsHolder.INSTANCE;    }    private void initGreenDao() {        //临时数据使用        SQLdm s = new SQLdm();        db = s.openDatabase(BaseApplication.getContext());        mDaoMaster = new DaoMaster(db);        mDaoSession = mDaoMaster.newSession();    }    public DaoSession getDaoSession() {        if (mDaoMaster == null) {            initGreenDao();        }        return mDaoSession;    }    public SQLiteDatabase getDb() {        if (db == null) {            initGreenDao();        }        return db;    }}

阅读全文
1 0
原创粉丝点击