デジタルの力で仕事効率アップをサポート。お客様の業務を加速させる。

【Kotlin】
保存されたデータを
取得する方法!
【realm】

Android, Androidstudio, Kotlin, Realm, 紹介

realmはスマートフォンやタブレットなどのモバイル向けのデータベースです。
軽量かつ高速であり、実装が容易という特徴も持っています。
また、RealmはKotlinにも対応しているため、Androidのアプリ開発をする際に使っているという方も多いと思います。

そんな中で、realmに保存したデータを取得したい、入っている内容を確認したいという場面があると思います。
そこで今回は、kotlinでrealmのデータを取得する方法を解説したいと思います。


データの用意

前提としてこのようなDBモデルと、以下のデータが入っているとします。

open class Sample : RealmObject() {
    @PrimaryKey
    var id: Int = 0
    @Required
    var text: String = ""
}
idtext
1Sample1:おはようございます!
2Sample2:こんにちは!
3Sample3:こんばんは!
保存されているデータ

realmからデータを取得する方法

では実際にrealmに保存されたデータを取得する方法を解説します。

取得する方法

以下の方法でデータを取得することができます。
findAll() を使うとすべてのデータ、findFirst() を使うと最初の一つだけのデータを取り出すことができます。

//Realmのインスタンスを取得する
val realm = Realm.getDefaultInstance()

//Realmからすべてのデータを取得する
val results = realm.where(Sample::class.java).findAll()

//Realmから最初のデータを取得する
val result = realm.where(Sample::class.java).findFirst()

//取得したデータをlogに出力
Log.e("realm", "$results")
Log.e("realm", "$result")

//Realmオブジェクトを削除する
realm.close()

データをログに出力させれば、どういった内容が保存されているのかすぐに確認できますので、状況に合わせて追加してみてください。

//Logcatの出力例

//findAll()
Sample = proxy[{id:1},{text:Sample1:おはようございます!}], 
Sample = proxy[{id:2},{Sample2:こんにちは!}], 
Sample = proxy[{id:3},{text:Sample3:こんばんは!}]

//findFirst
Sample = proxy[{id:1},{text:Sample1:おはようございます!}]

検索で使える条件

上記の例では、データを取得する際にfindAll()とfindFirst()を使って取得するデータの数を変えていました。
それに加えて他の条件を追加することで、特定のデータのみを取り出すということもできます。
今回はその条件コードの中でも使う頻度の高いと思ったものを選んで紹介します

・.equalTo(“フィールド名”, 値)

フィールド名が一致したデータを抽出する

・.greaterThan(“フィールド名”, 値)

指定したフィールド名の値が、条件より大きいデータを抽出する

・.lessThan(“フィールド名”, 値)

指定したフィールド名の値が、条件より小さいデータを抽出する

・.contains(“フィールド名”, “値”)

指定した値を含むデータを抽出する

これらを使えばより効率的にデータを取得することができますので、場合に合わせて使ってみてください。


まとめ

いかがでしたでしょうか。今後もrealmを使う機会は多いと思いますので、知らなかった方はこれを機に学んでみてはいかがでしょうか。
もう既に知っているという方も、復習としてぜひ参考にしていただければと思います。