博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 自定义Android ORM 框架greenDAO数据库文件的路径
阅读量:6764 次
发布时间:2019-06-26

本文共 2625 字,大约阅读时间需要 8 分钟。

import android.content.Context;import android.content.ContextWrapper;import android.database.DatabaseErrorHandler;import android.database.sqlite.SQLiteDatabase;import com.tbc.android.defaults.app.business.cache.AppUserCache;import com.tbc.android.defaults.app.utils.AppPathUtil;import com.tbc.android.mc.storage.ApplicationCache;import java.io.File;/** * Created by Doraemon * Date: 16/5/12 * Time: 09:22 * Summary:该类主要用于基于GreenDao框架自定义数据库路径 */public class GreenDaoContext extends ContextWrapper {    private String currentUserId;    private Context mContext;    public GreenDaoContext() {        super(ApplicationCache.context);        this.mContext = ApplicationCache.context;        this.currentUserId = AppUserCache.userInfo.getUserId();    }    /**     * 获得数据库路径,如果不存在,则创建对象     *     * @param dbName     */    @Override    public File getDatabasePath(String dbName) {        File baseFile = AppPathUtil.getDbCacheDir(mContext);        StringBuffer buffer = new StringBuffer();        buffer.append(baseFile.getPath());        buffer.append(File.separator);        buffer.append(currentUserId);        buffer.append(File.separator);        buffer.append(dbName);        return new File(buffer.toString());    }    /**     * 重载这个方法,是用来打开SD卡上的数据库的,android 2.3及以下会调用这个方法。     *     * @param name     * @param mode     * @param factory     */    @Override    public SQLiteDatabase openOrCreateDatabase(String name, int mode,                                               SQLiteDatabase.CursorFactory factory) {        SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), factory);        return result;    }    /**     * Android 4.0会调用此方法获取数据库。     *     * @param name     * @param mode     * @param factory     * @param errorHandler     * @see android.content.ContextWrapper#openOrCreateDatabase(java.lang.String, int,     * android.database.sqlite.SQLiteDatabase.CursorFactory,     * android.database.DatabaseErrorHandler)     */    @Override    public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory,                                               DatabaseErrorHandler errorHandler) {        SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), factory);        return result;    }}

自定义一个context,然后在获取helper时,将自定义的context传入,如下:

 

DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(new GreenDaoContext(), "app.db", null);SQLiteDatabase db = helper.getWritableDatabase();// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。DaoMaster daoMaster = new DaoMaster(db);DaoSession daoSession = daoMaster.newSession();

 

转载地址:http://czbeo.baihongyu.com/

你可能感兴趣的文章
[转]win7 如何升级PowerShell
查看>>
mongodb基本操作
查看>>
工具使用——印象(汇总)
查看>>
020 RDD的理解
查看>>
Flask 2 程序的基本结构1
查看>>
sass的学习笔记
查看>>
uploadify上传带参数及接收参数的方法
查看>>
Linux的中断和系统调用 & esp、eip等寄存器
查看>>
kettle的jndi的使用
查看>>
微信小程序把玩(九)scroll-view组件
查看>>
android BroadCastRecevier笔记
查看>>
HEXO+Github,搭建属于自己的博客
查看>>
使用Java语言开发微信公众平台(三)——被关注回复与关键词回复
查看>>
Memcached、Redis OR Tair
查看>>
springcloud Ribbon自定义负载均衡插件
查看>>
Plupload上传插件中文帮助文档
查看>>
HDU2089 不要62 BZOJ1026: [SCOI2009]windy数 [数位DP]
查看>>
MySQL查询提示
查看>>
Oracle中如何判断字符串是否全为数字
查看>>
《JavaScript高级程序设计》笔记:在HTML中使用Javascript(二)
查看>>