写了2天的代码,总结一下这两天的一些积累
realm简单来说就是一个可以代替sql的数据库, 特点:易用,快速,跨平台,专业(支持加密,格式化查询,易于移植,支持JSON,流式api,数据变更通知), 可视化

官方网站 https://realm.io/docs/java/latest/ 有需要的朋友,可以去看看
代码:

1、配置
在最外面的那层build.gradle 配置这一段代码

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

然后在app文件里面的build.gradle 配置这一段代码

       apply plugin: 'realm-android'

1、布局

3、代码
3.1创建一个需要保存数据库的类,我写了两个

 import io.realm.RealmObject;/*** @author Admin* https://realm.io/docs/java/latest/*/
public class Dog extends RealmObject {String name;String age;String aihao;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getAihao() {return aihao;}public void setAihao(String aihao) {this.aihao = aihao;}@Overridepublic String toString() {return "Dog{" +"name='" + name + '\'' +", age='" + age + '\'' +", aihao='" + aihao + '\'' +'}';}
}

import io.realm.RealmList;
import io.realm.RealmObject;
/*** @author Admin* https://realm.io/docs/java/latest/*/
public class MyRealmDemo extends RealmObject {String userName;String pwd;Long sessionId;private RealmList<Integer> Remarks = new RealmList<>();public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public Long getSessionId() {return sessionId;}public void setSessionId(Long sessionId) {this.sessionId = sessionId;}public RealmList<Integer> getRemarks() {return Remarks;}public void setRemarks(RealmList<Integer> remarks) {Remarks = remarks;}@Overridepublic String toString() {return "MyRealmDemo{" +"userName='" + userName + '\'' +", pwd='" + pwd + '\'' +", sessionId=" + sessionId +", Remarks=" + Remarks.size() +'}';}
}

3.2 创建一个Application,在onCreate里面进行初始化

import io.realm.Realm;
import io.realm.RealmConfiguration;
/*** @author Admin*/
public class MyApplication extends Application {public static RealmConfiguration config;@Overridepublic void onCreate() {super.onCreate();Realm.init(this);config = new RealmConfiguration.Builder().name("myRealm.realm").deleteRealmIfMigrationNeeded().build();Realm.setDefaultConfiguration(config);//配置默认的数据库//setDefaultConfiguration(new RealmConfiguration.Builder().build());
//        RealmConfiguration configuration = new RealmConfiguration.Builder().build();}
}

3.3 主界面的实现代码


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;import io.realm.Realm;
import io.realm.RealmAsyncTask;
import io.realm.RealmResults;/*** @author Admin*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener {TextView txtShow;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initRealm();txtShow = findViewById(R.id.txt_show);findViewById(R.id.btn_add).setOnClickListener(this);findViewById(R.id.btn_search).setOnClickListener(this);findViewById(R.id.btn_delete).setOnClickListener(this);findViewById(R.id.btn_update).setOnClickListener(this);}Realm realm;Integer index = 0;RealmAsyncTask transaction;private void initRealm() {realm = Realm.getInstance(MyApplication.config);}/*** 升级数据库*/
//    class CustomMigration implements RealmMigration {//        @Override
//        public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {//            RealmSchema schema = realm.getSchema();
//            Log.e("MainActivity", "oldVersion:" + oldVersion + "----newVersion" + newVersion);
//            if (oldVersion == 1 && newVersion == 2) {//                RealmObjectSchema personSchema = schema.get("Dog");
//
                if (!personSchema.hasField("Dog")) {                    personSchema.addField("aihao", String.class, FieldAttribute.REQUIRED);
                    oldVersion++;
                }
//
//            }
//        }
//    }private void addRealm() {transaction = realm.executeTransactionAsync(realm -> {MyRealmDemo myDemo = realm.createObject(MyRealmDemo.class);myDemo.setUserName("名字");myDemo.setPwd(index + "");myDemo.getRemarks().add(index);index++;}, () -> {//成功回调Log.e("MainActivity", "成功回调" + index);}, error -> {//失败回调Log.e("MainActivity", "失败");});transaction = realm.executeTransactionAsync(realm -> {Dog dog = realm.createObject(Dog.class);dog.setName("哈士奇");dog.setAge(index + "岁");dog.setAihao("拆家" + index);}, () -> {//成功回调Log.e("MainActivity", "成功回调" + index);}, error -> {//失败回调Log.e("MainActivity", "失败");});}private void updateRealm() {transaction = realm.executeTransactionAsync(realm -> {RealmResults<MyRealmDemo> myList = realm.where(MyRealmDemo.class).findAll();if (myList != null && myList.size() > 0) {MyRealmDemo myDemo = myList.get(0);myDemo.setUserName("换名字");myDemo.setPwd("小球不得");myDemo.getRemarks().add(index);index++;} else {Log.e("MainActivity", "updateRealm没得东西,改毛线" + index);Toast.makeText(this, "updateRealm没得东西,改毛线", Toast.LENGTH_SHORT).show();}}, () -> {//成功回调Log.e("MainActivity", "成功回调" + index);}, error -> {//失败回调error.printStackTrace();Log.e("MainActivity", "失败" + error.getMessage());});}private void deleteRealm() {transaction = realm.executeTransactionAsync(realm -> {RealmResults<MyRealmDemo> myList = realm.where(MyRealmDemo.class).findAll();//删除第一个数据myList.get(0).deleteFromRealm();
//            myList.deleteFirstFromRealm();
//            //删除最后一个数据
//            myList.deleteLastFromRealm();
//            //删除位置为1的数据
//            myList.deleteFromRealm(1);
//            //删除所有数据
//            myList.deleteAllFromRealm();}, () -> {//成功回调Log.e("MainActivity", "deleteRealm删球了" + index);}, error -> {//失败回调Log.e("MainActivity", "deleteRealm没删拖");});}private void searchRealm() {RealmResults<MyRealmDemo> myList = realm.where(MyRealmDemo.class).findAll();String strText = "";if (myList != null && myList.size() > 0) {for (MyRealmDemo myRealmDemo : myList) {strText += "\n看什么玩意嘛:" + myRealmDemo.toString();Log.e("MainActivity", "看什么玩意嘛:" + myRealmDemo.toString());for (int intNum : myRealmDemo.getRemarks()) {strText += "\n数组里的东西:" + intNum;Log.e("MainActivity", "数组里的东西:" + intNum);}}} else {Log.e("MainActivity", "空的,代码错了,看锤子");}RealmResults<Dog> dogList = realm.where(Dog.class).findAll();for (Dog dog : dogList) {strText += "\n我的狗:" + dog.toString();Log.e("MainActivity", "我的狗:" + dog.toString());}txtShow.setText(strText);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_add://添加addRealm();break;case R.id.btn_search://查询searchRealm();break;case R.id.btn_delete://删除deleteRealm();break;case R.id.btn_update://修改updateRealm();break;default:break;}}@Overrideprotected void onStop() {super.onStop();//取消当前的数据库操作状态if (transaction != null && !transaction.isCancelled()) {transaction.cancel();}}@Overrideprotected void onDestroy() {super.onDestroy();//关闭连接realm.close();}
}

效果图:

源码:
https://github.com/StrangerYang/testRealm

Android Realm相关操作相关推荐

  1. realm android,Android realm 相关使用教程

    一.Realm简介 数据库Realm,是用来替代sqlite的一种解决方案,它有一套自己的数据库存储引擎,比sqlite更轻量级,拥有更快的速度,并且具有很多现代数据库的特性,比如支持JSON,流式a ...

  2. Android开发相关操作

    命令行启动DDMS工具,前提是有这个工具 ~/rustsoftware/adt-bundle-linux-x86_64-20140702/sdk/tools$ ./ddms 查看机器内存情况: adb ...

  3. 【Android APT】注解处理器 ( Element 注解节点相关操作 )

    文章目录 一.获取被 注解 标注的节点 二.Element 注解节点类型 三.VariableElement 注解节点相关操作 四.注解处理器 完整代码示例 五.博客资源 Android APT 学习 ...

  4. android中关于手机屏幕的相关操作(获取屏幕的宽高等操作)

    这里总结下android中关于手机屏幕的相关操作: 1.获取屏幕的分辨率(因为android中处理显示的时候,需要根据屏幕分辨率的不同才去不同的布局或显示不同的素材) <uses-sdk and ...

  5. Android控制WIFI相关操作

    Android控制WIFI相关操作 在XML文件中添加权限: <uses-permission android:name="android.permission.ACCESS_WIFI ...

  6. Android 图片文件操作、屏幕相关、.9图片的理解

     一:Android图片操作 1.存储bitmap到本地文件系统 public static void bitmapToFile(Bitmap bitmap, String uri) {if(!ext ...

  7. android 控制wifi模块,Android 控制wifi 相关操作实例

    Android 控制WIFI相关操作 WIFI的全称是Wireless Fidelity,又称802.11b标准,是一种高速的无线通信协议,传输速度可以达到11Mb/s. 实际上,对WIFI并不需要过 ...

  8. android Realm 优化

    Realm数据库优化 Realm数据的一个特点是支持跨平台操作,且效率上面比较高,是非关系数据库.但是在使用的过程中还是存在很多可以优化的控件,本文章重点解决Realm数据库无表信息和列信息,和Rea ...

  9. Android Pmem相关介绍

    http://fangjian0518.blog.163.com/blog/#m=0 Android Pmem相关介绍 2011-10-18 09:40:26|  分类: Android PMEM | ...

最新文章

  1. 系统管理员都要知道的 30 个 Linux 系统监控工具
  2. pythonfor输入多个数字_我一天学会了python最基础的编程
  3. STL-String源码分析
  4. Python爬虫(五)
  5. mysql使用某一列的内容赋值给另外一列,concat()函数
  6. 成都理工大学c语言复试,2020年成都理工大学信号与信息处理考研真题试卷及试题答案,C语言程序设计考研试题下载...
  7. 变量是否在数组内c语言,函数内创建的数组在调用后,是否就不存在
  8. 性能测试oracle瓶颈定位,性能测试中如何定位性能瓶颈
  9. 怎么设置vscode界面大小_vscode怎么放大界面
  10. 人脸离线识别模块_人脸识别模块做到市场份额60%,这家AI公司如何用狼性在安防杀开一条血道?...
  11. Linux之32/64位int、char、int*、char*与空结构体大小
  12. 创意十足!25个酷炫的服饰行业网站设计
  13. php 32位检签,php crc32 计算字符串的 32 位 CRC(循环冗余校验)
  14. \r,\n,\r\n的问题分析
  15. MySQL在线DDL gh-ost使用说明
  16. 为软件简单加密的小程序,附源码
  17. Windows7orServer2008安装VM-Tools
  18. 甘肃教育杂志甘肃教育杂志社甘肃教育编辑部2022年第15期目录
  19. C语言编程题:平方数
  20. 如何用WGDI进行共线性分析(中)

热门文章

  1. Android 屏幕常亮、低电量监听
  2. ((ios开发学习笔记 十))代码实现自定义TableView
  3. 【荐】中国最有潜力的十位企业家(IT行业占大半)
  4. 中文语音情感识别python实现(一)
  5. Go 语言web 框架 Gin 练习4
  6. 正则化与L0、L1、L2范数祥解
  7. 天池 O2O 优惠券使用预测思路解析与代码实战
  8. pyecharts离线使用说明
  9. python瀑布图怎么做_教你用Python创建瀑布图
  10. 3Dslicer1:入门及基本控制