您的位置:首页 > 移动开发 > Android开发

Android数据库Realm的第一次

2016-06-23 18:46 302 查看
首先Realm数据库是基于C++编写的一个不同于SQLite数据库的数据库引擎,我之所以找到Realm数据库也是因为网上找一些资料来对SQLite进行加密的办法,但是事与愿违!
我相信对SQLite文件进行加密的办法肯定是有的,只是很难找到而已!我曾经也想出一个办法那就是试试监控app程序是否在运行或者在后台运行,当处于后台或者处于未运行时对原SQLite文件进行加密保存下来,然后在app启动的时候进行解密到一个位置进行业务操作!这里面我们可以利用AlarmManager对象来进行定时任务,一旦程序启动就会开启循环定时任务,一点加密结束停止定是唤醒任务!

言归正传,我们都知道想想中的是美好的,就是会遇到很多问题!

Realm数据库则会帮我本身支持AES-256加密,所以我后来放弃了上面的想法 ,

Realm官方地址https://realm.io/cn/docs/java/latest/

有中文版本的,所以阅读起来也很方便!

1、集成Realm-plugin

在项目目录下的build.gradle中添加

classpath "io.realm:realm-gradle-plugin:1.0.0"


2、在集成的model下的build.gradle添加支持
apply plugin: 'realm-android'
3、就开始编写代码部分了,配置自己的Realm数据库!
RealmConfiguration是一个队Realm数据库进行配置的类,例如版本号,加密的密钥等等属性!
这是一个设置的阳历,在这里我需要说明一下那个key是一个字节数组,而且长度必须是64的,所以我用一个base64加密之后的字符串进行保存这个密钥,也就是说这个密钥原本就是一个字节数据
4、编写一个实体类,进行操作数据,这个实体类和一般的bean没什么区别,但是需要继承
RealmObject
public class User extends RealmObject{

@PrimaryKey
private String name;
private int age;

private String detail;
private String job;

public String getDetail() {
return detail;
}

@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", detail='" + detail + '\'' +
", job='" + job + '\'' +
'}';
}

public void setDetail(String detail) {
this.detail = detail;
}

public String getJob() {
return job;
}

public void setJob(String job) {
this.job = job;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}
5、操作realm插入数据

这里说明一下主键的问题!目前我没有找到自增的办法,但是一般客户端保存服务器数据是不需要自己的主键的,用服务器的主键就行了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息