#はじめに
業務で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 = 1
を version = 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。
#おわりに
また詰まったことがあったら、追加していきたいと思います。