Skip to main content

Implementing a Simple Room Database in Android

What is Room Persistence Library?


Room is a library built on top of SQLite that provides a more convenient and structured way to manage your Android app's local database,lets you work with your data as Kotlin objects (data classes) instead of writing raw SQL queries this simplifies database interactions and also checks your SQL queries at compile time. This helps us to catch errors early in the development cycle. so kets get started.


Dependencies

dependencies { // Room implementation("androidx.room:room-runtime:2.5.0") implementation("androidx.room:room-ktx:2.5.0") kapt("androidx.room:room-compiler:2.5.0") }

Key Components

Entity

@Entity(tableName = "word_table") data class Word( @PrimaryKey val word: String )

Entity is a Kotlin data class representing a single table in the database,each property of the class corresponds to a column in the table and each entity is annotates with @Entity and it has certain optional parameters

DAO (Data Access Object)

@Dao interface WordDao { @Query("SELECT * from word_table ORDER BY word ASC") fun getAllWords(): LiveData<List<Word>> @Insert(onConflict = OnConflictStrategy.IGNORE) suspend fun insert(word: Word) }

A DAO is an Interface that helps us to define methods to interact with your database, the methods are annotated with SQL operations (@Query, @Upsert, @Insert, @Update, @Delete) and @Transacation and do note interface has to be annotated with @Dao.

Room Database

@Database(entities = [Word::class], version = 1, exportSchema = false) abstract class WordRoomDatabase : RoomDatabase() { //dao abstract fun wordDao(): WordDao }

An abstract class extending RoomDatabase that serves as the entry point to the database and is annotated with @Database annotation where you must you declare all the entiy's that the database is expected to use and wherer you can register the version and migration detail

Manually Creating a Database

val dataBase = Room.databaseBuilder(applicationContext, YourDataBaseName::class.java, "your_custom_database_name") .build()

Interacting with the Database

//accessing dao from database val wordDao = dataBase.wordDao() //operation with the dao wordDao.insert(Word("hello")) wordDao.getAllWords()
Google Documentation Link[click to open]

Comments

Continue reading my other posts

Chocolate Feast - Problem Solving - Hacker Rank Solution.

The expectation is to find the total number of choclate one can consume by taking full advantage of the offer, Here there are 3 inputs n which holds the value of initial amount of money for buying choclate, c is the cost price of each candy if paid by cash and m is the exchange rate for the candy. Inputs n Initial cash to buy candy. c Coast of each candy if paid by cas.h m Exchange rate for a new candy in offer. The initial count of choclate will be the cash / coast and the wrappers in hand will be the same value of choclate, and from there we loop through until the wrap count is less than the exchange rate, inside the loop the choclate count will still hold the same fourmula as before but divided with exchange rate. The wrap count is the tricky part... the wrap will be wrap/ exchange rate(the no. choclate) + the remainder of this division(THIS IS VERY IMPORTANT) because for example if the count of wrapper is 3 and the exchange rate is 2 you can only buy 1 c

Designer PDF Viewer - HackerRank Problems

Difficulty: EASY Problem : The objective here is to find the size of the highlighted area, and we are given the size's of all the alphabets, we have to find the largest alphabet in the highlighted word and then calculate the size of the rectangle so if the tallest character is 3 then the size of the box will be 3 * number of characters given. Visual representation of the selection : abc def ghij Inputs An array with the sizes of all alphabets a-z in order. A String of highlighted words. Important points to note The array which holds the height of each character in ascending order which means the arrays 0th index will have the height of a 1st index will have the height of b and so on and so forth in the end the hight of z will be there so it's easy to locate each character. A String with the highlighted word. This means we have got the characters inside the rectangle, all we have to find is

Delving Deeper into ViewModel - AndroidNotes

While building apps i have often incorporate ViewModels without fully grasping their intricacies. I made some common mistakes, like creating ViewModel instances within a remember block and such silly mistakes,but this journey has prompted me to dig a little deeper into understanding ViewModels and their internal workings. The primary questions we are going to address are as follows: What is a ViewModel? How to create a ViewModel? What is the difference between ViewModel and AndroidViewModel? What is a ViewModelFactory? What is viewModelScope? When is the ViewModel dropped by the ViewModelStore? What is onCleared() in the ViewModel ? lets begin our journey.... What is a ViewModel? ViewModel is a simple class that is part of the Android Architecture Components and its primary purpose is to store and manage UI-related data in a lifecycle-conscious manner caching its value during the lifecycle of the activity It helps us to avoid loading dat