Realm增刪改查

寫入數(shù)據(jù)庫

  • 寫操作必須在 transactions 中執(zhí)行歼争。
  • 在寫的時候同時可以讀
  • 方式一:
realm.beginTransaction();
User user = realm.createObject(User.class); // Create a new object
user.setName("John");
user.setEmail("john@corporation.com");
realm.commitTransaction();
  • 方式二:
User user = new User("John");
user.setEmail("john@corporation.com");

// Copy the object to Realm. Any further changes must happen on realmUser
realm.beginTransaction();
User realmUser = realm.copyToRealm(user);
realm.commitTransaction();
  • 方式三
List<User> users = Arrays.asList(new User("John"), new User("Jane"));

realm.beginTransaction();
realm.insert(users);
realm.commitTransaction();
  • 使用insert() 或者 insertOrUpdate() 不用返回對象 所以插入更快 當(dāng)有很多對象要插入的時候可以使用

更新數(shù)據(jù)

  • 在realm數(shù)據(jù)庫中不能直接更新單個string或者bytes數(shù)據(jù) 只能 讀出來 并且再寫回去 TODO (確定這里的類型修改)
realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        bytes[] bytes = realmObject.binary;
        bytes[4] = 'a';
        realmObject.binary = bytes;
    }
});

查詢數(shù)據(jù)

  • 示例代碼
// Build the query looking at all users:
RealmQuery<User> query = realm.where(User.class);

// Add query conditions:
query.equalTo("name", "John");
query.or().equalTo("name", "Peter");

// Execute the query:
RealmResults<User> result1 = query.findAll();

// Or alternatively do the same all at once (the "Fluent interface"):  可以簡寫成以下的形式
RealmResults<User> result2 = realm.where(User.class)
                                  .equalTo("name", "John")
                                  .or()
                                  .equalTo("name", "Peter")
                                  .findAll();
  • RealmQuery 對象提供四個方法 :findAll findAllAsync findFirst findFirstAsync
  • RealmResults is a list 桐罕。 可以通過下標(biāo)的形式訪問每一個對象剥懒。如果查詢結(jié)果沒有的話碉克。那么 RealmResults的size為0;
查詢的過濾條件
  • 所有數(shù)據(jù)類型都可以使用
  • equalTo
  • notEqualTo
  • in For example, to find the names “Jill,” “William,” or “Trillian”, you can use in("name", new String[]{"Jill", "William", "Trillian"}).
  • 數(shù)字類型的數(shù)據(jù)
  • between (includes both end points, i.e., it is a bounded interval)
  • greaterThan
  • lessThan
  • greaterThanOrEqualTo
  • lessThanOrEqualTo
  • string類型的數(shù)據(jù)
  • contains
  • beginsWith
  • endsWith
  • like
    TODO 查詢的東西沒有看完 再看吧 不是現(xiàn)在

Transaction

executeTransaction()
  • 這個方法自動執(zhí)行beginTransaction, commitTransaction, and cancelTransaction (當(dāng)Transaction有一場的時候 自動執(zhí)行cancel)
realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        User user = realm.createObject(User.class);
        user.setName("John");
        user.setEmail("john@corporation.com");
    }
});
異步Transaction
  • 當(dāng)一個Transaction 執(zhí)行的時候,另外一個會被鎖住。所以需要異步康栈。 success和error方法是可以設(shè)置為null的。
realm.executeTransactionAsync(new Realm.Transaction() {
            @Override
            public void execute(Realm bgRealm) {
                User user = bgRealm.createObject(User.class);
                user.setName("John");
                user.setEmail("john@corporation.com");
            }
        }, new Realm.Transaction.OnSuccess() {
            @Override
            public void onSuccess() {
                // Transaction was a success.
            }
        }, new Realm.Transaction.OnError() {
            @Override
            public void onError(Throwable error) {
                // Transaction failed and was automatically canceled.
            }
        });

public void onStop () {
    if (transaction != null && !transaction.isCancelled()) {
        transaction.cancel();
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喷橙,一起剝皮案震驚了整個濱河市啥么,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贰逾,老刑警劉巖悬荣,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疙剑,居然都是意外死亡氯迂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門言缤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嚼蚀,“玉大人,你說我怎么就攤上這事管挟〗问铮” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵僻孝,是天一觀的道長导帝。 經(jīng)常有香客問我,道長穿铆,這世上最難降的妖魔是什么您单? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮悴务,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘譬猫。我一直安慰自己讯檐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布染服。 她就那樣靜靜地躺著别洪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柳刮。 梳的紋絲不亂的頭發(fā)上挖垛,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天痒钝,我揣著相機與錄音,去河邊找鬼痢毒。 笑死送矩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哪替。 我是一名探鬼主播栋荸,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凭舶!你這毒婦竟也來了晌块?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤帅霜,失蹤者是張志新(化名)和其女友劉穎匆背,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體身冀,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡钝尸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了闽铐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝶怔。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖兄墅,靈堂內(nèi)的尸體忽然破棺而出踢星,到底是詐尸還是另有隱情,我是刑警寧澤隙咸,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布沐悦,位于F島的核電站,受9級特大地震影響五督,放射性物質(zhì)發(fā)生泄漏藏否。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一充包、第九天 我趴在偏房一處隱蔽的房頂上張望副签。 院中可真熱鬧,春花似錦基矮、人聲如沸淆储。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽本砰。三九已至,卻和暖如春钢悲,著一層夾襖步出監(jiān)牢的瞬間点额,已是汗流浹背舔株。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留还棱,地道東北人载慈。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像诱贿,于是被迫代替她去往敵國和親娃肿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,905評論 2 89
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,911評論 6 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法珠十,類相關(guān)的語法料扰,內(nèi)部類的語法,繼承相關(guān)的語法焙蹭,異常的語法晒杈,線程的語...
    子非魚_t_閱讀 31,596評論 18 399
  • 歲月忽已暮, 夜色杳無聲孔厉。 伏案揮筆簇拯钻, 閑墨落空箋。
    獨步板橋霜閱讀 290評論 0 1
  • Apple Watch將于北京4月10日下午15點01分在開始線上預(yù)定撰豺,正式揭開上市的序幕粪般。 不知道大家是不是還記...
    履霜閱讀 673評論 0 1