在android中保存和检索领域数据库中的数据
嗨,我使用realm将数据保存到relam数据库中,但它不将数据保存到数据库中 在我的申请课上在android中保存和检索领域数据库中的数据,android,database,realm,crud,realm-mobile-platform,Android,Database,Realm,Crud,Realm Mobile Platform,嗨,我使用realm将数据保存到relam数据库中,但它不将数据保存到数据库中 在我的申请课上 Realm.init(this); RealmConfiguration config = new RealmConfiguration.Builder().build(); Realm.deleteRealm(config); Realm.setDefaultConfiguration(config); 在我的储蓄活动中 public void
Realm.init(this);
RealmConfiguration config = new RealmConfiguration.Builder().build();
Realm.deleteRealm(config);
Realm.setDefaultConfiguration(config);
在我的储蓄活动中
public void SaveUserData(final UserData userData, Realm realm)
{
final String userdata = new Gson().toJson(userData);
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// realm.createObjectFromJson(com.mediquick.databaseModel.UserData.class, userdata);
com.mediquick.databaseModel.UserData user = realm.createObject(com.mediquick.databaseModel.UserData.class);
user.setLname(userData.getLname());
user.setEmail(userData.getEmail());
user.setToken(userData.getToken());
user.setAddress(userData.getAddress());
user.setMobile_no(userData.getMobile_no());
user.setDob(userData.getDob());
user.setName(userData.getName());
user.setProfile_pic(userData.getProfile_pic());
user.setUser_type(userData.getUser_type());
}
});
当我检索到一个值时
public String getUserToken(Realm realm)
{
final com.mediquick.databaseModel.UserData user = realm.where(com.mediquick.databaseModel.UserData.class).findFirst();
return (user!=null)?user.getToken():null;
}
当我从数据库检索令牌时,它返回null
有什么想法吗?你能试试这个保存功能吗:
// SAY YES TO THIS
Realm realm = null;
try { // I could use try-with-resources here
realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.insertOrUpdate(dog);
}
});
} finally {
if(realm != null) {
realm.close();
}
}
Realm realmDB;
在代码中,您缺少调用
realm.insertOrUpdate(user)
内部executeTransaction函数。在onCreate函数之前声明领域对象:
// SAY YES TO THIS
Realm realm = null;
try { // I could use try-with-resources here
realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.insertOrUpdate(dog);
}
});
} finally {
if(realm != null) {
realm.close();
}
}
Realm realmDB;
现在在onCreate方法中写入以下行:
Realm.init(this);
realmDB=Realm.getDefaultInstance();
在“保存”按钮上单击方法:
try{
realmDB.beginTransaction();
UserSchedule us = realmDB.createObject(UserSchedule.class);
us.setId(userData.get_ID());
us.setDate(userData.getDate());
realmDB.commitTransaction();
}
catch (Exception ex){
Log.d("RError",ex.toString());
Toast.makeText(this, "Error in realm", Toast.LENGTH_SHORT).show();
}
要获取记录,请执行以下操作:
RealmResults<UserSchedule>userSchedules=realmDB.where(UserSchedule.class).findAll();
for (UserSchedule userSchedule:userSchedules)
{
Toast.makeText(this,userSchedule.getId(), Toast.LENGTH_SHORT).show();
Toast.makeText(this, userSchedule.getId(), Toast.LENGTH_SHORT).show();
}
要删除记录,请执行以下操作:
RealmResults<UserSchedule> result = realmDB.where(UserSchedule.class).findAll();
UserSchedule userSchedule = result.where().equalTo("Id", getItem(position).getS_ID()).equalTo("Date",getItem(position).getDate()).findFirst();
if(userSchedule!=null)
{
if (!realmDB.isInTransaction())
{
realmDB.beginTransaction();
}
userSchedule.deleteFromRealm();
realmDB.commitTransaction();
}
else
{
Toast.makeText(this,"No Record.", Toast.LENGTH_SHORT).show();
}
我不知道您何时在哪个线程上调用getUserToken。@EpicPandaForce主线程在这种情况下,只有当userData.getToken为null时,才可能执行此操作。@EpicPandaForce在保存时,我调试了该值。可能是因为我缺少realm.insertOrUpdate它没有保存值,所有realm执行都需要它吗?您使用realm.createObject立即创建托管实例,因此setToken将被持久保存在数据库中,所以不一定。这是我的保存代码。它保存数据,但我的数据没有显示“是”用于保存数据。“是”用于保存数据。请不要仅将代码作为答案发布,还要解释代码的作用以及它如何解决问题。带有解释的答案通常更有帮助,质量更好,更容易吸引选票。