GreenDao 2.2 数据库加密

第一步:创建一个Java工程:



在gradle文件中添加依赖:

compile 'org.greenrobot:greendao-generator-encryption:2.2.0'

创建java生存类并执行:

package com.example;

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;

/**
 * @author xuanyouwu
 * @email xuanyouwu@163.com
 * @time 2016-05-05 18:01
 */
public class EncyUserDaoGenerator {
    public static void main(String[] args) throws Exception {

        addUserSchema();

    }

    private static void addUserSchema()throws Exception {
        Schema schema = new Schema(1, "com.xuan.user");
        Entity user = schema.addEntity("User");
        user.addIdProperty();
        user.addStringProperty("name");
        user.addIntProperty("age");

        new DaoGenerator().generateAll(schema, "E:\\Programing\\androidstudio\\workspace\\GitOsc_StudyProject\\db_greendao\\src\\main\\java-gen");
    }
}


第二步:创建android moudle:



创建java gen目录:在gradle文件中添加java路径

sourceSets {
    main {
        java.srcDirs = ['src/main/java', 'src/main/java-gen']
    }
}

添加依赖:

compile 'org.greenrobot:greendao-encryption:2.2.0'
compile 'net.zetetic:android-database-sqlcipher:3.4.0'

执行加密存储

<pre name="code" class="java">package com.xuan.greendaoencryp;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.xuan.user.DaoMaster;
import com.xuan.user.DaoSession;
import com.xuan.user.User;

import java.util.List;
import java.util.Random;

import de.greenrobot.dao.database.Database;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DaoSession daoSession = null;
        //插入数据库
        try {
            String password = "xiao3";
            Database db = new DaoMaster.EncryptedOpenHelper(this, "user1") {
                @Override
                public void onUpgrade(Database db, int oldVersion, int newVersion) {

                }
            }.getWritableDatabase(password);
            daoSession = new DaoMaster(db).newSession();

            for (int i = 0; i < 10; i++) {
                User user = new User();
                user.setName("xuan_" + System.currentTimeMillis());
                user.setAge(new Random().nextInt(100));
                daoSession.insertOrReplace(user);
            }
        } catch (Exception e) {
            LogUtils.d("------->insert ex1:" + e);
        }


        //直接查询
        try {
            DaoMaster daoMaster = new DaoMaster(new DaoMaster.DevOpenHelper(this, "user1").getWritableDatabase());
            DaoSession daoSession1 = daoMaster.newSession();
            List<User> users = daoSession1.loadAll(User.class);
            LogUtils.d("------->users:" + users);
        } catch (Exception e) {
            LogUtils.d("------->load ex1:" + e);
        }


        //获取密码查询
        try {
            List<User> users2 = daoSession.loadAll(User.class);
            LogUtils.d("------->users2:" + users2);
        } catch (Exception e) {
            LogUtils.d("------->load ex2:" + e);
        }

    }
}

运行结果:
 
05-04 19:12:28.854 27767-27767/com.xuan.greendaoencryp D/------: ------->users:[]
05-04 19:12:28.864 27767-27767/com.xuan.greendaoencryp D/------: ------->users2:[User{id=1, name='xuan_1462360348630', age=5}, User{id=2, name='xuan_1462360348654', age=28}, User{id=3, name='xuan_1462360348666', age=20}, User{id=4, name='xuan_1462360348678', age=52}, User{id=5, name='xuan_1462360348693', age=87}, User{id=6, name='xuan_1462360348703', age=85}, User{id=7, name='xuan_1462360348714', age=20}, User{id=8, name='xuan_1462360348725', age=72}, User{id=9, name='xuan_1462360348735', age=33}, User{id=10, name='xuan_1462360348747', age=88}]

如我们所料 没有钥匙是获取不了数据库类容的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亚洲小炫风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值