Realm移动应用数据库使用-Android

一、 目前APP数据存储方式

OS存储方式特点描述
AndroidSQLite容量大,内存占用小,并发高,访问复杂轻型数据库系统
AndroidSharedPreferences轻量数据,结构简单,访问便捷基于XML文件存储的key-value键值对数据
Android文件存储图形、动态算法等文件存储,访问复杂文件IO流
AndroidcontentProvider、网络存储共享数据、访问简单跨应用、云存储


二、主流框架

主流框架android:SQLiteOrmLite(jdbc);SQLite、Active Android 、 GreenDAO;Realm、SugarORM;
性能MVCC数据库,API调用方法简化,相较传统DB(链接 - 查询 - 命中 - 内存拷贝 - 对象序列化)的复杂过程,不是在SQLite基础上的ORM,数据查询引擎,realm速度快一个量级(基于内存映射的Zero-Copy技术)。而且内部采用了类似git的对象版本管理机制,多线程并发操作,自动化处理存储冲突。易于移植,支持JSON,数据变更通知等高级特性。
可视化1)android:Stetho+chrome:build.gradle中添加repositories 和 compile添加依赖包->initialize初始化->Chrome浏览器输入chrome://inspect/#device->inspect->Resources
安全性安全性,支持加密,格式化查询,流式api

三、Android应用集成Realm

/**
*增
*/
//(1)子线程事务操作
mRealm.executeTransaction(new Realm.Transaction() {
         @Override
         public void execute(Realm realm) {
             SlideCat cat= realm.createObject(SlideCat.class);
             cat.setIndex(1);
             cat.setUv("blackcat.png");
             cat.sound("angry.ogg");
         }
     });
     
//(2)子线程事务操作
final SlideCat cat= realm.createObject(SlideCat.class);
             cat.setIndex(1);
             cat.setUv("blackcat.png");
             cat.sound("angry.ogg");
      mRealm.executeTransaction(new Realm.Transaction() {
          @Override
          public void execute(Realm realm) {
              //realm.copyToRealm(cat)//无主键
              realm.copyToRealmOrUpdate(cat);//有主键
          }
      });
//(3)子线程事务操作
mRealm.beginTransaction();//开启事务
SlideCat cat= realm.createObject(SlideCat.class);
             cat.setIndex(1);
             cat.setUv("blackcat.png");
             cat.sound("angry.ogg");
mRealm.commitTransaction();//提交事务


/**
*查
*/
//(1)遍历
RealmResults<SlideCat> catList = mRealm.where(SlideCat.class).findAll();

//(2)异步任务
//查询第一只黑猫
RealmResults<SlideCat> catList = mRealm.where(SlideCat.class)
              .equalTo("1","blackcat")
              .findAllAsync();
              
//(3)排序
RealmResults<SlideCat> catList = mRealm.where(SlideCat.class) .findAll();
catList = result.sort("index"); //根据索引,正序排列
catList = result.sort("index", Sort.DESCENDING);//逆序排列



/**
*删
*/
//(1)deleteFromRealm()
//先查找到数据
final RealmResults<SlideCat > catList = mRealm.where(SlideCat.class).findAll();
mRealm.executeTransaction(new Realm.Transaction() {
  @Override
  public void execute(Realm realm) {
      catList.get(0).deleteFromRealm();
  }
});

//(2)deleteFromRealm(int index)
//先查找到数据
final RealmResults<SlideCat > catList = mRealm.where(SlideCat.class).findAll();
mRealm.executeTransaction(new Realm.Transaction() {
  @Override
  public void execute(Realm realm) {
      catList.deleteFromRealm(0);
  }
});

//(3)更多
catList.deleteFirstFromRealm(); //删除user表的第一条数据
catList.deleteLastFromRealm();//删除user表的最后一条数据
RealmResults<SlideCat> cats = realm.where(SlideCat.class).findAll();
cats.deleteAllFromRealm();//删除user表的全部数据

/**
*改
*/
//(1)
mRealm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        //先查找到更新对象
        SlideCat cat = mRealm.where(SlideCat.class).findFirst();
        cat.setUv("whitecat.png");
        cat.setSound("smile.ogg")
    }
});

//(2)先查找到数据
final RealmResults<SlideCat > catList = mRealm.where(SlideCat.class).findAll();
mRealm.executeTransaction(new Realm.Transaction() {
  @Override
  public void execute(Realm realm) {
      SlideCat cat = catList.get(0);
      cat.setUv("whitecat.png");
      cat.sound("smile.ogg");
});



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值