Android中的Room和Realm有什么区别?
我进行了研究并阅读了文档,但是我自己没有经验来理解
https://developer.android.com/topic/libraries/architecture/room
答案 0 :(得分:1)
Realm具有预定义的查询,您只需要传递参数,而在房间内,您必须像sqlite一样编写查询。 简而言之,它是sqlite的升级版本。
在领域:(保存数据)
public void savePictureData(final String shopId, final String imgPath)
{
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
RealmSave_Data realmData =realm.createObject(RealmSave_Data.class);
realmData.setShopId(shopId);
realmData.setImgPath(imgPath);
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
System.out.println("-----saveddata");
}
});
// Transaction was a success.
}
}, new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
System.out.println("-----errordata");
// Transaction failed and was automatically canceled.
}
});
}
在领域:(检索数据)
List<RealmSave_Data> dataList
=realmHelper.getPic(String.valueOf(shopDetails.getId()));
public List<RealmSave_Data> getPic(String shopId){
//ArrayList<String> picPath = new ArrayList<>();
RealmResults<RealmSave_Data> realmData =
realm.where(RealmSave_Data.class).equalTo("shopId",shopId).findAll();
return realmData;
}
在房间里:
@Query("SELECT * FROM UserTable WHERE username=:username AND password=:password")
Flowable<UserTable> getUser(String username,String password);