android 数据库加密方式有哪些,Android 数据库 greenDao 3(包括加密) 封装使用

现在有个需求。需要存入很多数据到数据库中,并且要求加密。于是用到了GreenDao3.0

首先各种导库 在moduel中的build.gradle中加入依赖

并且加入greenDao的配置信息,版本、生成目录地址、包名。

427e0e9f396a

Paste_Image.png

然后在项目的builde.gradle中如下配置

427e0e9f396a

Paste_Image.png

进行编译项目会自动生成你自定义的目录结构

427e0e9f396a

Paste_Image.png

下面开始写代码

在application中初始化GreenDao

public class DbApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

DBMaster.init(this);

}

}

下面是 DBMaster的代码

/**

* create by 宋佳 on 2017/5/22 12:34 .

* 描述 : 数据库管理类

*/

public class DBMaster {

public static void init(Context context) {

DBCore.init(context);

initDatabase(context);

}

private static void initDatabase(Context context) {

DBCore.enableQueryBuilderLog();

}

/**

* 得到正常的不加密的

*/

public static DaoSession getDBNormal() {

return DBCore.getDaoSessionNormal();

}

/**

* 得到加密的

*

* @return

*/

public static DaoSession getDBEncryption() {

return DBCore.getDoaSessionEncryption();

}

}

DBCore 是 初始化 数据库的工具类。里面有具体的注释

public class DBCore {

private static final String DEFAULT_DB_NAME = "Green_dao_demo.db"; //数据库名字

private static final String DEFALLT_DA_PASSWORD = "Green_dao_demo"; //加密数据库的密码

private static Context mContext;

private static String mDbName;//得到数据库的名字的字段

private static DaoMaster mDaoMaster; //数据库的管理者

private static DaoSession sDaoSession; //此对象是对数据库进行增删改查的

private static DaoMaster.DevOpenHelper helper;

public static void init(Context context) {

init(context, DEFAULT_DB_NAME);

}

private static void init(Context context, String dbName) {

if (context == null) {

throw new IllegalArgumentException("出错了");

}

mContext = context.getApplicationContext();

mDbName = dbName;

}

/**

* 得到数据库的管理类

*

* @return

*/

private static DaoMaster getDaoMasterNormal() {

if (helper == null) {

helper = new MyOpenHelper(mContext, mDbName);

}

if (mDaoMaster == null) {

mDaoMaster = new DaoMaster(helper.getWritableDatabase());

}

return mDaoMaster;

}

/**

* 得到数据库加密的管理类

* @return

*/

private static DaoMaster getmDaoMasterEncryption() {

if (helper == null) {

helper = new MyOpenHelper(mContext, mDbName);

}

if (mDaoMaster == null) {

mDaoMaster = new DaoMaster(helper.getEncryptedReadableDb(DEFALLT_DA_PASSWORD));

}

return mDaoMaster;

}

public static DaoSession getDaoSessionNormal() {

if (sDaoSession == null) {

if (mDaoMaster == null) {

mDaoMaster = getDaoMasterNormal();

}

sDaoSession = mDaoMaster.newSession();

}

return sDaoSession;

}

public static DaoSession getDoaSessionEncryption() {

if (sDaoSession == null) {

if (mDaoMaster == null) {

mDaoMaster = getmDaoMasterEncryption();

}

sDaoSession = mDaoMaster.newSession();

}

return sDaoSession;

}

/**

* 在 QueryBuilder 类中内置两个 Flag 用于方便输出执行的 SQL 语句与传递参数的值

*/

public static void enableQueryBuilderLog() {

QueryBuilder.LOG_SQL = true;

QueryBuilder.LOG_VALUES = true;

}

public static class MyOpenHelper extends DaoMaster.DevOpenHelper {

public MyOpenHelper(Context context, String name) {

super(context, name);

}

}

}

新建实体类 作为存入数据库的对象

@Entity

public class LoginBean {

private String name;

private int age;

private String love;

private String p;

//省略 set get

}

还有很多的注解方式,后期在看

增生改查 用工厂模式

/**

* create by 宋佳 on 2017/5/22 12:00 .

* 描述 : 数据库工厂

*/

public class DaoFactory {

private static DaoFactory mInstance = null;

/**

* 获取DaoFactory的实例

*

* @return

*/

public static DaoFactory getInstance() {

if (mInstance == null) {

synchronized (DaoFactory.class) {

if (mInstance == null) {

mInstance = new DaoFactory();

}

}

}

return mInstance;

}

/**

* 得到登录数据操作db

*

* @return

*/

public Loginable getLoginDB() {

return new LoginImpl();

}

}

登录的接口类和实现类

/**

* create by 宋佳 on 2017/5/22 13:18 .

* 描述 :登录数据操作接口

*/

public interface Loginable {

/**

* 插入单个数据

*

* @param bean

*/

void insert(LoginBean bean);

/**

* 批量插入

*

* @param beanList

*/

void insertList(List beanList);

/**

* 删除所有的数据

*/

void delete();

/**

* 查询所有的数据

*/

List findLoginDataAll();

/**

* 改数据

*/

void updateLoginData(LoginBean bean);

}

实现类

/**

* create by 宋佳 on 2017/5/22 13:21 .

* 描述 :登录数据接口实现类

*/

public class LoginImpl implements Loginable {

private LoginBeanDao db;

public LoginImpl() {

db = DBMaster.getDBNormal().getLoginBeanDao(); ///得到不加密数据库操作对象

}

@Override

public void insert(LoginBean bean) {

db.insert(bean);

}

@Override

public void insertList(List beanList) {

db.insertInTx(beanList);

}

@Override

public void delete() {

db.deleteAll();

}

@Override

public List findLoginDataAll() {

return db.queryBuilder().list();

}

@Override

public void updateLoginData(LoginBean bean) {

db.insertOrReplace(bean);

}

}

具体的调用

//插入数据

Loginable db = DaoFactory.getInstance().getLoginDB();

LoginBean loginBean = new LoginBean();

loginBean.setAge(111);

loginBean.setLove("dd");

loginBean.setName("dd");

loginBean.setP("ddd");

db.insert(loginBean);

//查询

List bean = db.findLoginDataAll();

//删除

db.delete();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值