package me.bell.killprocess.db;
import android.content.Context;
import org.greenrobot.greendao.query.QueryBuilder;
import me.bell.killprocess.db.gen.DaoMaster;
import me.bell.killprocess.db.gen.DaoSession;
/**
* @Info 创建数据库、创建数据库表、包含增删改查的操作以及数据库的升级
* @Auth Bello
* @Time 17-11-2 下午2:12
* @Ver
*/
public class DBManager {
private static final String TAG = DBManager.class.getSimpleName();
private static final String DB_NAME = "apps";
private Context mContext;
//多线程中要被共享的使用volatile关键字修饰
private volatile static DBManager manager = new DBManager();
private static DaoMaster mDaoMaster;
private static DaoMaster.DevOpenHelper mHelper;
private static DaoSession mDaoSession;
/**
* 单例模式获得操作数据库对象
* @return
*/
public static DBManager getInstance(){
return manager;
}
public void init(Context mContext){
this.mContext = mContext;
}
/**
* 判断是否存在数据库,如果没有则创建
* @return
*/
public DaoMaster getDaoMaster(){
if (mDaoMaster == null){
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(mContext, DB_NAME, null);
mDaoMaster = new DaoMaster(helper.getWritableDb());
}
return mDaoMaster;
}
/**
* 完成对数据库的添加、删除、修改、查询操作
* @return
*/
public DaoSession getDaoSession(){
if (mDaoSession ==null){
if (mDaoMaster == null){
mDaoMaster = getDaoMaster();
}
mDaoSession = mDaoMaster.newSession();
}
return mDaoSession;
}
/**
* 关闭所有的操作,数据库开启后,使用完毕要关闭
*/
public void closeConnection(){
closeHelper();
closeDaoSession();
}
public void closeHelper(){
if (mHelper != null){
mHelper.close();
mHelper = null;
}
}
public void closeDaoSession(){
if (mDaoSession != null){
mDaoSession.clear();
mDaoSession = null;
}
}
/**
* 打开输出日志,默认关闭
*/
public void setDebug(){
QueryBuilder.LOG_SQL = true;
QueryBuilder.LOG_VALUES = true;
}
}