LoginSignup
18
11

More than 3 years have passed since last update.

Roomを使用した際に詰まったこと

Last updated at Posted at 2019-09-02

はじめに

業務でRoomを使用する機会がありましたが、少し詰まってしまい時間をロスってしまったので、備忘録として残しておきます。

ちなみにRoomの学習は次のサイトでハンズオン形式で行いました。
https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/#0

  • RecyclerViewとAdapter
  • SQLite
  • Coroutines
  • MVPやMVCのなどのソフトウエアアーキテクチャ
  • LiveDataやViewModelなどのJetpack

上記の知識が前提として簡単なアプリを作成するので、様々な復習も兼ねて良い経験となりました。

詰まったこと

Databaseのversion更新

「Databaseのクラスを変更したときは、バージョンを上げる」
ということは基本ですが、実際に業務で扱ったときに以下のエラーに出くわしました。

java.lang.IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number.

ログに「バージョン上げてね」って書いてあるのに、当時の心理状況的には「このコードで通らないはずはない!」と思っていたので、エラーが出て焦ってました(^_^;)
以下のコードの version = 1version = 2 にするだけの簡単なオシゴトでした。。。


@Database(entities = arrayOf(User::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

DB Browser for SQLiteの使い方

端末内のDBを見る方法で少し戸惑ったので、まとめます。

1. 次のサイトからDB Browser for SQLiteをダウンロードする。

2. 端末内のDB情報のあるファイルをローカルマシンに保存する。

Android Studioの(通常)右下にあるDevice File Explorerから
data > data > "package_name" > databases 内の

database_name
database_name-shm
database_name-wal

を選択して右クリックした「Save As...」で任意のディレクトリに保存します。
以前の私はdatabase_nameだけをローカルマシンに保存していたので、うまくいきませんでした。
上記の3ファイルが同一ディレクトリに存在すればいいようです。

3. DB Browser for SQLiteで確認する。

ダウンロードしてインストールしたDB Browser for SQLiteを起動させ、Open Database をタップし、先ほど保存したdatabase_nameを開きます。
Browse Data タブの Table: からテーブルを選択して想定のレコードが確認できればOK。

おわりに

また詰まったことがあったら、追加していきたいと思います。

参考

Room Persistence Library

18
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
11