第一步:创建一个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");
}
}
创建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}]
如我们所料 没有钥匙是获取不了数据库类容的