Realm数据库使用教程(四):更新数据
来源:互联网 发布:软件测试方案模板 编辑:程序博客网 时间:2024/06/04 22:47
Realm数据库使用教程(三):查询数据
更新数据
- 同步操作:executeTransaction修改
mRealm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { Men men = realm.where(Men.class).findFirst(); men.setName("我把第一个同步修改了"); } });
- 异步操作:executeTransactionAsync修改
realmAsyncTask = mRealm.executeTransactionAsync(new Realm.Transaction() { @Override public void execute(Realm realm) { Men men = realm.where(Men.class).findFirst(); men.setName("我把第一个,异步修改了"); } }, new Realm.Transaction.OnSuccess() { @Override public void onSuccess() { UIUtils.showToast("修改完成"); } }, new Realm.Transaction.OnError() { @Override public void onError(Throwable error) { UIUtils.showToast("修改失败"); } });
@Override protected void onDestroy() { super.onDestroy(); if (realmAsyncTask != null && !realmAsyncTask.isCancelled()) { realmAsyncTask.cancel(); } if (mRealm != null && !mRealm.isClosed()) { mRealm.close(); } }
- 重要:使用查询语句得到数据,然后将内容修改
//这里需要注意,姿势不对会出错(出现漏修改情况) RealmResults<Men> all = mRealm.where(Men.class) .findAll();// mRealm.beginTransaction();// for (int i = 0; i < all.size(); i++) {// all.get(i).setName("使用查询语句后就可以修改");// }// mRealm.commitTransaction(); //到这里是不行的,因为迭代器修改时会移除,所以导致隔一修改情况, // 需要一下操作 mRealm.beginTransaction(); OrderedRealmCollectionSnapshot<Men> menSnapshot = all.createSnapshot(); for (int i = 0; i < menSnapshot.size(); i++) { menSnapshot.get(i).setName("使用查询语句后就可以修改!"); } mRealm.commitTransaction();
Realm数据库使用教程(五):删除数据
Demo地址:https://gitee.com/huangxiaoguo/Realm
activity全部代码:
package tsou.com.simple.realmtest;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import java.util.ArrayList;import java.util.List;import io.realm.OrderedRealmCollectionSnapshot;import io.realm.Realm;import io.realm.RealmAsyncTask;import io.realm.RealmResults;import tsou.com.simple.realmtest.adapter.MyAdapter;import tsou.com.simple.realmtest.bean.Men;import tsou.com.simple.realmtest.utils.UIUtils;public class UpdataActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { private ListView mListview; private List<String> titles = new ArrayList<>(); private Realm mRealm; private RealmAsyncTask realmAsyncTask; @Override protected void onDestroy() { super.onDestroy(); if (realmAsyncTask != null && !realmAsyncTask.isCancelled()) { realmAsyncTask.cancel(); } if (mRealm != null && !mRealm.isClosed()) { mRealm.close(); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add); mRealm = UIUtils.getRealmInstance(); initData(); initView(); initListener(); } private void initData() { titles.add("同步操作:executeTransaction修改"); titles.add("异步操作:executeTransactionAsync修改"); titles.add("重要:使用查询语句得到数据,然后将内容修改"); } private void initView() { mListview = (ListView) findViewById(R.id.listview); mListview.setAdapter(new MyAdapter(this, titles)); } private void initListener() { mListview.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { switch (position) { default: break; case 0://同步操作:executeTransaction修改 mRealm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { Men men = realm.where(Men.class).findFirst(); men.setName("我把第一个同步修改了"); } }); break; case 1://异步操作:executeTransactionAsync修改 realmAsyncTask = mRealm.executeTransactionAsync(new Realm.Transaction() { @Override public void execute(Realm realm) { Men men = realm.where(Men.class).findFirst(); men.setName("我把第一个,异步修改了"); } }, new Realm.Transaction.OnSuccess() { @Override public void onSuccess() { UIUtils.showToast("修改完成"); } }, new Realm.Transaction.OnError() { @Override public void onError(Throwable error) { UIUtils.showToast("修改失败"); } }); break; case 2://重要:使用查询语句得到数据,然后将内容修改 //这里需要注意,姿势不对会出错(出现漏修改情况) RealmResults<Men> all = mRealm.where(Men.class) .findAll();// mRealm.beginTransaction();// for (int i = 0; i < all.size(); i++) {// all.get(i).setName("使用查询语句后就可以修改");// }// mRealm.commitTransaction(); //到这里是不行的,因为迭代器修改时会移除,所以导致隔一修改情况, // 需要一下操作 mRealm.beginTransaction(); OrderedRealmCollectionSnapshot<Men> menSnapshot = all.createSnapshot(); for (int i = 0; i < menSnapshot.size(); i++) { menSnapshot.get(i).setName("使用查询语句后就可以修改!"); } mRealm.commitTransaction(); break; } }}
Realm数据库使用教程(五):删除数据
Demo地址:https://gitee.com/huangxiaoguo/Realm
阅读全文
0 0
- Realm数据库使用教程(四):更新数据
- Realm数据库使用教程(二):增加数据
- Realm数据库使用教程(三):查询数据
- Realm数据库使用教程(五):删除数据
- Realm数据库使用教程(六):数据迁移
- Realm数据库使用教程(七):数据库加密和Realm使用注意事项
- Realm数据库使用教程(一):Realm配置和Stetho配置
- (四)数据库数据更新
- Realm数据库字段更新
- Realm 使用教程
- Realm使用教程
- Realm 数据库的使用(iOS &Android)
- Realm数据库使用
- 数据库Realm的使用
- Android Realm数据库使用
- Realm数据库框架使用
- Realm数据库使用总结
- 使用Realm进行数据操作(一)
- 杨老师课堂_安卓教程第一篇之入门
- cmd无法创建Django项目的解决办法
- Ubuntu 16.04 安装 Android Studio
- linux常用命令
- 购物车的趣艺工坊
- Realm数据库使用教程(四):更新数据
- vue单页路由跳转后scrollTop问题
- KAFKA 1.0 文档(五):生产者配置
- 第一个Node程序
- 多线程 锁 synchronized 的使用
- 进度条BJ
- Bootstrap禁止点击空白处关闭模态框以及模态框的拖动
- Unable to parse template "Class" Error message: This template did not produce a Java class or an int
- 网络图片加载Image-Universal-Loader