In this article, we will work with Room database. Room is an ORM database based on SQLite database. Room is the recommended database for swimming in Google, allowing you to easily manipulate SQLite queries in Android.
1. Preparation
- Android Studio 3.0 and above
2. Create Android Project
- In app / build.gradle, add the following dependencies to use Room:
1 2 3 | implementation "android.arch.persistence.room:runtime:1.0.0" annotationProcessor "android.arch.persistence.room:compiler:1.0.0" |
- In Project’s build.gradle, add google () reposity:
1 2 3 4 5 | repositories { google() jcenter() } |
3. Add Room Entities
- Create the Item class as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import android.arch.persistence.room.Entity; import android.arch.persistence.room.PrimaryKey; import android.support.annotation.NonNull; @Entity(tableName = "items") public class Item { @PrimaryKey @NonNull private Long id; private String name; private String description; private Long quantity; } |
4. Create DAO Interface
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import android.arch.persistence.room.Dao; import android.arch.persistence.room.Delete; import android.arch.persistence.room.Insert; import android.arch.persistence.room.Update; import inventory.techiediaries.com.models.Item; @Dao public interface ItemDAO { @Insert public void insert(Item... items); @Update public void update(Item... items); @Delete public void delete(Item item); } |
5. Add queries
Room allows you to perform SQL queries like adding, editing, and deleting.
Import the following classes:
1 2 3 | import android.arch.persistence.room.Query; import java.util.List; |
And add methods:
1 2 3 | @Query("SELECT * FROM items") public List<Item> getItems(); |
Query Item by id as follows:
1 2 3 | @Query("SELECT * FROM items WHERE id = :id") public Item getItemById(Long id); |
6. Create Room Database
1 2 3 4 5 6 7 8 | import android.arch.persistence.room.Database; import android.arch.persistence.room.RoomDatabase; @Database(entities = {Item.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract ItemDAO getItemDAO(); } |
7. Initializing Database
Initialize the database in the MainActivity onCreate () function as follows:
1 2 3 4 | AppDatabase database = Room.databaseBuilder(this, AppDatabase.class, "mydb") .allowMainThreadQueries() .build(); |
Finally, we create methods to create, add, edit, delete, and update data in the database as follows:
1 2 3 4 5 6 7 8 9 10 | ItemDAO itemDAO = database.getItemDAO(); Item item = new Item(); item.setName("Item001"); item.setDescription("Item 001"); item.setQuantity(1000); itemDAO.insert(item); List<Item> items = itemDAO.getItems(); System.out.println(items); |