OrmLite数据库切换

来源:互联网 发布:如何设置php头部 编辑:程序博客网 时间:2024/06/14 11:15
    当应用由不同的用户登录时,我们一般会对不同的用户创建不同的数据库。所以,当用户改变时,我们也应当切换到该用户相应的数据库上。那么,如何做呢?
    我们操作数据库,最终都是通过DatabaseHelper实例来处理的,那好办,我们只要改变DatabaseHelper实例就可以了。我们把实例置为空,根据新的数据库名生成新的实例。
    以下代码在http://blog.csdn.net/dingfengnupt88/article/details/52129439基础上修改。

实现
    public void reset(Context context, String dbName) {        DB_NAME = dbName;        if (instance != null) {            instance = null;        }        getDatabaseHelper(context);    }
    当然,这个时候Dao对象也需要重新生成,不然还是处理之前的数据库,我们放到Helper类中实现,
    public void reset(String db) {        DatabaseHelper.getDatabaseHelper(mContext).reset(mContext, db);        mStudentDao = new BaseDaoImpl<>(mContext, Student.class);        mProfessionDao = new BaseDaoImpl<>(mContext, Profession.class);        mWorkerDao = new BaseDaoImpl<>(mContext, Worker.class);    }

测试
    private void add() {        ArrayList<Student> list = new ArrayList<>();        for (int i=0; i<10; i++) {            Student student = new Student(i, "zhangsan", "Computer");            list.add(student);        }        Helper.getInstance().getStudentDao().insertList(list);        updateListView();    }    private void add2() {        ArrayList<Student> list = new ArrayList<>();        for (int i=0; i<20; i++) {            Student student = new Student(i, "lisi", "English");            list.add(student);        }        Helper.getInstance().getStudentDao().insertList(list);        updateListView();    }    private void changeDb() {        String db = Helper.getInstance().getDatabaseName();        if ("new.db".equals(db)) {            Helper.getInstance().reset("ormlite.db");        } else {            Helper.getInstance().reset("new.db");        }        updateListView();    }    private void updateListView() {        List<Student> list = Helper.getInstance().getStudentDao().queryAll();        mList.clear();        mList.addAll(list);        mAdapter.notifyDataSetChanged();    }
    先在ormlite.db中添加10个学生,然后切换到new.db中,这个时候数据时空的,然后添加20个学生,再切换到ormlite.db中,数据有变成了之前添加的10个学生。
    效果如下,




源码地址

0 0
原创粉丝点击