Xamarin.Forms——本地数据库Realm入门

一.Realm安装

您可以通过NuGet安装Realm ,也可以浏览GitHub上的源代码。Realm官方文档

PCL用户的重要提示:您必须将Realm NuGet软件包安装到使用Realm以及每个平台特定项目(即iOS和Android的最终应用)的PCL中。如果您正在使用共享项目,则只需将NuGet安装到特定于平台的项目中即可。

调试Android项目我有这个错误和应用程序崩溃:
System.Reflection.TargetInvocationException:异常被调用的目标抛出
解决方案

二.Realm使用

介绍:使用数据库对象Bean,编写一个类BeanRealmService,用来初始化Realm对象和操作数据库对象。
这里写图片描述

  • 创建数据库对象
  public class Bean : RealmObject
    {
        //主键
        [PrimaryKey]
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        //计数器
        public RealmInteger<int> Counter { get; set; }

    }
  • 初始化Realm
 private  Realm realm = null;
        public BeanRealmService ()
        {
            if (realm == null)
            {
                //数据库配置  
                var config = new RealmConfiguration("new.realm")  //设置路径
                {
                    //删除new.realm文件下的现有数据库,请勿使用此标志发布应用程序(虚拟机测试可用)  
                    ShouldDeleteIfMigrationNeeded = true,
                    //版本号 默认为0
                    SchemaVersion = 1
                };
                //删除历史数据文件  数据库类型发生变化时 可以进行此操作
                // Realm.DeleteRealm(config);

                //得到实例
                realm = Realm.GetInstance(config);
            }
        }
  • 增加Bean对象
` public void AddBean(Bean bean)
        {
            realm.Write(() =>
            {  
                realm.Add(bean);
            });
        }`
  • 根据ID查询Bean对象
 public Bean FindOneById(int id)
        {
            var bean = realm.Find<Bean>(1);
            if (bean != null)
                return bean;
            return null;
        }
  • 查询所有Bean对象
 public IQueryable<Bean> FindAll()
        {
            var beans = realm.All<Bean>() ;
            if (beans == null)
                return null;
            return beans as IQueryable<Bean>;
        }
  • 根据ID删除Bean对象
 public Boolean DeleteOneById(int id)
        {
            Bean bean= FindOneById(id);
            if (bean == null)
                return false;

            using (var trans = realm.BeginWrite())
            {
                realm.Remove(bean);
                trans.Commit();
            }
            return true;
        }
  • 更新Bean对象
 public Boolean UpdateBean(Bean newbean)
        {
            Bean oldbean = FindOneById(newbean.Id);
            if (oldbean == null)
                return false;
            using (var trans = realm.BeginWrite())
            {
                oldbean.Name = newbean.Name;
                oldbean.Age = newbean.Age;
                oldbean.Counter = newbean.Counter;
                trans.Commit();
            }
            return true;
        }
  • 对计数器进行操作
   public Boolean ComputeCount(int id, int number)
        {
            Bean bean = FindOneById(id);
            if (bean == null)
                return false;
            realm.Write(() =>
            {
                //修改id为1的count值  增加2
                bean.Counter.Increment(number); // 1
            });
            return true;
        }

源码地址:https://github.com/JiBinXiao/XamarinForms-Realm

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值