Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

Realm_Android使用详解(一)

$
0
0

Realm数据库听说的时候是在2016年初左右吧,还是听一个网易的哥们说起.才了解到的.Realm是一个MVCC的数据库.底层使用C++写的.MVCC指的是多版本并发控制.

本篇文章先去带大家如何使用Realm,下篇介绍Realm的内部规则.

二叉树上图先,看下效果
这里写图片描述

环境支持

  • Android Studio 版本1.5.1 or 更高
  • JDK 版本 7.0 or 更高
  • Android API 版本 9 or 更高 (Android 2.3 and 之上)

我们不在支持eclipse作为IDE;所以请使用Android Studio;

安装使用

通过Gradle plugin安装使用

提示1:添加文件路径是你的project 的 build.gradle 文件.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:3.0.0"
    } }

文件位置如图所示:
这里写图片描述

提示2:应用realm-android插件app的build.gradle 文件的顶部.

apply plugin: ‘realm-android’

文件位置如图所示:
这里写图片描述

Realm 浏览器

现在开发出了一个mac版本的Ream数据浏览器,用于查看和编辑,这个应用不支持windows和linux,windows的同学可以使用stetho chrom插件进行查看调试.由facebook产出.至于使用方法可以看我的 如何用googleChrome调试Android程序呢?_Stetho.
macRealm浏览器下载地址.github下载地址

代码实现

第一步:全局初始化Realm

package cn.yky.realm;

import android.app.Application;

import io.realm.Realm;

/**  * Created by yukuoyuan on 2017/3/24.  */

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Realm.init(this);
    } }

第二步:获取当前Realm对象在Activity或者Fragment中

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        //初始化Realm
        realm = Realm.getDefaultInstance();
    }

第三步:我们的自定义的Models必须继承RealmObject,如示例代码

package cn.yky.realm;

import io.realm.RealmObject;

/**
 * Created by yukuoyuan on 2017/3/24.
 * 这是一个Realm 的Modal
 */

public class User extends RealmObject {
    public String Name;
    public int Age;
    public int sex;

}

第四步:进入我们的逻辑层,增删改查如代码所示

   /**
     * 这是一个添加一条数据的方法
     */
    public void add() {
        i = i + 1;
        realm.beginTransaction();
        User user = realm.createObject(User.class); // Create a new object
        user.Name = "王祖贤";
        user.Age = 23 + i;
        user.sex = 0;
        realm.commitTransaction();
    }
 /**
     * 这是一个删除一条数据的方法
     */
    public void delete() {
        realm.beginTransaction();
        RealmResults<User> guests = realm.where(User.class).equalTo("sex", 0).findAll();
        for (User guest : guests) {
            if (guest.Age > 28) {
                guest.deleteFromRealm();
            }
        }
        realm.commitTransaction();
    }
   /**
     * 这是一条更新的方法
     */
    public void updata() {
        realm.beginTransaction();
        RealmResults<User> guests = realm.where(User.class).equalTo("sex", 0).findAll();
        for (User guest : guests) {
            guest.Age = 48;
        }
        realm.commitTransaction();
    }
 /**
     * 这是一个一个查询的方法
     */
    public void query() {
        realm.beginTransaction();
        RealmResults<User> guests = realm.where(User.class).equalTo("sex", 0).findAll();
        realm.commitTransaction();
        tvShow.setText("");
        String show = "";
        for (User guest : guests) {
            show = show + "/\n" + guest.Name + "**" + guest.Age + "**" + guest.sex;
        }
        tvShow.setText(show);
    }

该示例代码我已经上传到github:github机票
后续我会讲解,Realm的内部调用规则,和更加复杂的使用.欢迎后续关注我.谢谢

作者:EaskShark 发表于2017/3/24 11:02:01 原文链接
阅读:141 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>