Realm数据库的简单使用

来源:互联网 发布:jquery ajax json解析 编辑:程序博客网 时间:2024/05/22 13:58

今天就来说说Realm在开发中的坑吧,虽然用起来好用,但是还是有很多坑,等着大家往下跳。

第一:配置问题

工程的build文件中配置如下:

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.3.3'        classpath "io.realm:realm-gradle-plugin:3.3.2"    }}

在app的build文件中,配置如下:

apply plugin: 'realm-android'

第二、创建和初始化

(1)、使用RealmConfiguration配置Realm
创建数据库时首先需要调用Realm.init()方法,否则系统报错:Java.lang.IllegalStateException: Call Realm.init(Context) before creating a RealmConfiguration
数据库初始化主要工作是什么数据库的name(设置数据库的文件名称)、schemaVersion(设置当前数据库版本号,当前版本号不能小于历史版本号)、migration(数据库版本迁移)、 deleteRealmIfMigrationNeeded(版本冲突时删除原始数据库)、inMemory(在内存中持久化,关闭后自动删除)、build(创建数据库)。

public static Realm getRealm(Context context){    byte[] key = new byte[64];    new SecureRandom().nextBytes(key);    Realm.init(context);    Migration migration = new Migration();    RealmConfiguration config = new RealmConfiguration.Builder()            .name("realmdb.realm") //文件名            .schemaVersion(0) //版本号            .migration(migration)//数据库版本迁移(数据库升级,当数据库中某个表添加字段或者删除字段)            .deleteRealmIfMigrationNeeded()//声明版本冲突时自动删除原数据库(当调用了该方法时,上面的方法将失效)。            .build();//创建    return Realm.getInstance(config);}

执行该方法后将生成一个文件名为:realmdb.realm的数据库文件。
(2)使用默认配置

  Realm.init(this);     Realm mRealm = Realm.getDefaultInstance();        使用默认配置将生成一个名为default.realm数据库文件        note:记得使用完后,在onDestroy中关闭Realm          @Override            protected void onDestroy() {                   super.onDestroy();                  // Close the Realm instance.                   realm.close();            }

第三、创建具体的model

1、支持的数据类型:
boolean, byte, short, int, long, float, double, String, Date and byte[]
在Realm中byte, short, int, long最终都被映射成long类型

2、注解说明

@PrimaryKey

①字段必须是String、 integer、byte、short、 int、long 以及它们的封装类Byte, Short, Integer, and Long

②使用了该注解之后可以使用copyToRealmOrUpdate()方法,通过主键查询它的对象,如果查询到了,则更新它,否则新建一个对象来代替。

③使用了该注解将默认设置(@index)注解

④使用了该注解之后,创建和更新数据将会慢一点,查询数据会快一点。

@Required

数据不能为null

@Ignore

忽略,即该字段不被存储到本地

@Index

为这个字段添加一个搜索引擎,这将使插入数据变慢、数据增大,但是查询会变快。建议在需要优化读取性能的情况下使用。

第四、相关的操作

具体的操作代码这里就不写,网上一大堆,给大家推荐一篇吧
如连接:创建Model,增删改查的相关操作
http://www.jianshu.com/p/37af717761cc

第五、遇到的问题

创建好的model,作为数据库的表,写入数据库之后,这时候你查出来的数据,如果要对查出的数据做修改,必须重新复制一份,在对复制的这一份处理之后,更新数据库,因为你查出来的数据,数据是没办法修改的,
看看这个链接:
http://blog.csdn.net/qq_21430549/article/details/53148208

这个链接相信对大家有所帮助的,

通过这篇文章,希望大家少走一些弯路。

原创粉丝点击