一.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;
}