Android数据库Realm的第一次

时间:2021-12-12 17:02:38


首先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"
Android数据库Realm的第一次
2、在集成的model下的build.gradle添加支持
apply plugin: 'realm-android'
Android数据库Realm的第一次
3、就开始编写代码部分了,配置自己的Realm数据库!
RealmConfiguration是一个队Realm数据库进行配置的类,例如版本号,加密的密钥等等属性!Android数据库Realm的第一次
这是一个设置的阳历,在这里我需要说明一下那个key是一个字节数组,而且长度必须是64的,所以我用一个base64加密之后的字符串进行保存这个密钥,也就是说这个密钥原本就是一个字节数据
Android数据库Realm的第一次
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插入数据
Android数据库Realm的第一次

这里说明一下主键的问题!目前我没有找到自增的办法,但是一般客户端保存服务器数据是不需要自己的主键的,用服务器的主键就行了!