ROOM Database - #1 Create Database Schema | Android Studio Tutorial

🏆 My Online Courses
⭐Discount Coupon: LAUNCH-STEVDZA-SAN
stevdza-san.com
🐱‍👤 Wanna become a member? Join!
/ @stevdzasan
📸 Instagram
/ stevdza_san
Hello there and welcome to my Tutorial Series. With this video I'm starting a new tutorial series about ROOM database with Kotlin. This tutorial serie will have 5 videos.This current video will be all about creating a Database schema for our project. So if you watched my earlier tutorial series about SQLite Database, then you noticed how hard is it to create and manage one database. But with ROOM library everything is easier! ROOM library is built on top of SQliteOpenHelper class.
Project File (Part 1): drive.google.com/file/d/18CGd...
Room Database Part 2 - Insert Data - • ROOM Database - #2 Ins...
Room Database Part 3 - Read Data - • ROOM Database - #3 Rea...
Room Database Part 4 - Update Data - • ROOM Database - #4 Upd...
Room Database Part 5 - Delete Data - • ROOM Database - #5 Del...
Dependencies:
// Navigation Component
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2'
implementation 'androidx.navigation:navigation-ui-ktx:2.2.2'
// Room components
implementation "androidx.room:room-runtime:2.2.5"
kapt "androidx.room:room-compiler:2.2.5"
implementation "androidx.room:room-ktx:2.2.5"
androidTestImplementation "androidx.room:room-testing:2.2.5"
// Lifecycle components
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
// Kotlin components
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72"
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5"
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.5"
Timestamps:
0:00 - Introduction
0:39 - ROOM Advantages
1:09 - ROOM Main Components
2:00 - App Preview
2:38 - Dependencies
3:28 - Create Entity
5:07 - Create Dao
7:02 - Create Database
10:49 - Create Repository
12:10 - Create ViewModel

Пікірлер: 210

  • @TBrianOnline
    @TBrianOnline4 жыл бұрын

    It's great to learn from you. I'm glad you're taking your time and putting a good effort into this. So far you are one of the best I've found.

  • @Kazner0h
    @Kazner0h8 ай бұрын

    I watched SO MANY Room "beginner" videos that didn't bother to explain anything. Your video is the first one where I feel like I'm actually being taught how to use Room rather than being told what to type. Thank you SO much. I'm subscribed.

  • @josephcobbinah5412
    @josephcobbinah54123 жыл бұрын

    I like how you take your time to explain what the various keywords and syntax means. Thank you so much

  • @ethiomusic3158
    @ethiomusic31583 жыл бұрын

    I started building my database by your tutorial. I think it is smooth according to your soft instructions. I like the way you teach.

  • @veshvesh2157
    @veshvesh21573 жыл бұрын

    imo this is the best instructor for kotlin programming. Thank u so much for sharing your knowledge!

  • @100_gauravmishra6
    @100_gauravmishra63 жыл бұрын

    Best tutorial ever found to learn about room database. Thanks for your efforts.

  • @itszechs
    @itszechs3 жыл бұрын

    Amazing tutorial!! Straight to the point cleared my all my doubts

  • @ppersik
    @ppersik2 жыл бұрын

    Your content is terrific - everything is clear, short, relevant examples and most importantly nothing superfluous. Recently I found your channel and subscribed because it's hard to find good material. Thank you for your tutorials!

  • @StevdzaSan

    @StevdzaSan

    2 жыл бұрын

    I'm glad I can help 💜

  • @Tridez99

    @Tridez99

    Жыл бұрын

    if you liked his content why did u say that it's terrific? wtf

  • @ppersik

    @ppersik

    Жыл бұрын

    @@Tridez99 i didn't mean terrific is horrible. It's also mean amazing

  • @prasannadeshpande4435
    @prasannadeshpande44353 жыл бұрын

    Thank you for this tutorial. This clarified few things about MVVM architecture too.

  • @SlimeAlone
    @SlimeAlone3 жыл бұрын

    Man you're the best , Keep goin' !

  • @kevin_joan_re9582
    @kevin_joan_re95823 жыл бұрын

    unbelievably good content mate !!! You explain things so efficiently.

  • @StevdzaSan

    @StevdzaSan

    3 жыл бұрын

    Thank you buddy, I'm glad to help!

  • @HotshotArafath
    @HotshotArafath3 жыл бұрын

    You are a gem to kotlin community keep up the good work!!!

  • @ehtishamhassan8146
    @ehtishamhassan81464 жыл бұрын

    Thank you. Really helpful.👌 Waiting for next video in the series.

  • @manishpingale6558
    @manishpingale65583 жыл бұрын

    Loved new video format man Dont CHANGE IT IT LOOKS GREAT

  • @angelmhg
    @angelmhg3 жыл бұрын

    the best way to understand roomdatabase, thanks and keep go on

  • @ivankisevskyi5429
    @ivankisevskyi54293 жыл бұрын

    with love from Ukraine, great job, thank you, thanks to you, I finally understood how to work with Room

  • @reymondlogatoc2492
    @reymondlogatoc24922 жыл бұрын

    Thank you for this tutorial series. Very helpful!

  • @harshid4661
    @harshid46613 жыл бұрын

    the best instructor on whole youtube

  • @2-dwep371
    @2-dwep3713 жыл бұрын

    very good video, it helped me a lot. greetings from Mexico....... you already have one more subscriber!

  • @iqbalrivaldi2856
    @iqbalrivaldi2856 Жыл бұрын

    I am very happy get very much knowledge about room database in this video. Thanks bro for the tutorial

  • @canastrao
    @canastrao3 жыл бұрын

    Your tutorial is really good. Thanks for share with us.

  • @luizfellipeabrantes2933
    @luizfellipeabrantes29332 ай бұрын

    any update on the dependencies? they look different now

  • @subhadeepchowdhury5244
    @subhadeepchowdhury5244 Жыл бұрын

    Great video. I respect the effort.

  • @nazudis
    @nazudis3 жыл бұрын

    wtf dude, i love the way u speak!! thanks btw

  • @sahilmahajan9846
    @sahilmahajan98462 жыл бұрын

    Why did you not check whether the INSTANCE field initialized on line 15 is null or not in the synchronized code block in UserDatabase class at 10:00?

  • @jorgeleonardogamarraospino9896
    @jorgeleonardogamarraospino98963 жыл бұрын

    Why is it necessary to initialize the database with the init code block every time UserViewmodel is called?

  • @m.elnwishy
    @m.elnwishy Жыл бұрын

    your tutorial is great it's really help me to understand room lib but may you explain why you used coroutines when you insert data only ?

  • @dhakshnamoorthy8673
    @dhakshnamoorthy86733 жыл бұрын

    Hey there I'm creating a chat app and I'm storing the chat messages of each person when I click on them but once I have created a room db it is storing the chat messages of all of them . the thing I need is whenever I click one of my friends chat button a specific room db for them has to open which contains only the chat messages of them and mine. Pls help me to solve this.

  • @jamperspective6777
    @jamperspective67772 жыл бұрын

    Thanks for this sir. Very useful

  • @mihirshirgaonkar7832
    @mihirshirgaonkar78322 жыл бұрын

    great very simplified tutorial

  • @rondamon4408
    @rondamon44083 жыл бұрын

    Excellent video!

  • @brandondelacruz934
    @brandondelacruz9343 жыл бұрын

    Do you have a tutorial that connects an app with a relational database like mysql?

  • @cheveux9718
    @cheveux97189 ай бұрын

    thankyou !! Really merci

  • @pillowtalks90
    @pillowtalks903 жыл бұрын

    Why did you return tempInstance at 9:35 , and not INSTANCE? Same question for return instance, below that Because of @Volatile or you just like it that way?

  • @alinemansur3824
    @alinemansur38248 ай бұрын

    Teacher, perfect class! I would like a professional opinion from you on the database. For a large app (Airbnb or Uber), using Room for local persistence may be better suited than pure SQLite, right? I ask this because I have no problems writing code using the SQL language. Thank you for your tutorials!

  • @suntvhits
    @suntvhits Жыл бұрын

    very nice explanation sir...Very usefull video.

  • @prasannadeshpande4435
    @prasannadeshpande4435 Жыл бұрын

    Do I have to create tempInstance variable within getInstance function? what happens if I directly use INSTANCE?

  • @randy4443
    @randy44434 жыл бұрын

    Why do we need compile options since we are working with kotlin and not java?

  • @RASTstudio
    @RASTstudio2 жыл бұрын

    Thank you too Bro Keep Going! ✊✊✊

  • @vuanhduong7034
    @vuanhduong70343 жыл бұрын

    fucking best teacher that ever found on KZread.

  • @SERJUAANT
    @SERJUAANT3 жыл бұрын

    what a great tutorial

  • @maximcompeers2477
    @maximcompeers24773 жыл бұрын

    Hey man, I really enjoy your video's. Short and concise. But I have a question about reading data from the database. What if I want to read one row and pass the ID into the function. Do I still have to use a coroutine? If yes, how do I return it in the viewmodel method? Or is it OK to not use coroutines when only reading data from the database? Thank you

  • @jank8456
    @jank8456 Жыл бұрын

    but in the UserDatabase, if two or more threads invoke getDatabase at the same time, and then they check that tempInstance is null, they all will run synchronized block, in some order, one by one, creating many database instances? Or not?

  • @mustafaserce6090
    @mustafaserce60903 жыл бұрын

    that's great !

  • @hugovera1540
    @hugovera1540 Жыл бұрын

    Could not find method kapt() for arguments ?

  • @ziyadmansy6016
    @ziyadmansy60164 жыл бұрын

    are there any prerequisites for this series?

  • @Waleed_Al-Haidary
    @Waleed_Al-Haidary4 жыл бұрын

    Can you please add a touterial on how sync the database with database on ☁️

  • @mervekaraca5499
    @mervekaraca54995 ай бұрын

    Will we repeat the same processing for a second table?

  • @pravinpund7523
    @pravinpund75233 жыл бұрын

    Dear sir, Greetings of the day! I want to create an app which can extract data from excel, csv, xlsx formats and save into android sqlite database and then plot it in Mpandroid chart. If you could help me , please prepare series on it, in kotlin. Searched on youtube but couldn't find good tutorial Thanks in advance

  • @sofuxjedup8330
    @sofuxjedup83302 жыл бұрын

    still cant understand why do we creating userDao() func in our DB and returning userDao.. What does it mean to return userDao? Is it object of interface?

  • @alfian3570
    @alfian35703 жыл бұрын

    How if i want to populate all data into sqlite, like dictionary app ?

  • @maikolsoro1835
    @maikolsoro18353 жыл бұрын

    Steva-San Hi, would be interesting to use or consume a GraphQL API in android kotlin

  • @FreePhoenix888
    @FreePhoenix8882 жыл бұрын

    This tutorial is more valuable than google guides

  • @StevdzaSan

    @StevdzaSan

    2 жыл бұрын

    Thanks 😎

  • @kwesiamartey
    @kwesiamartey4 жыл бұрын

    Sir i cant wait for the rest of the videos drop it now thanks

  • @dashaxedit
    @dashaxedit3 жыл бұрын

    Hey. Thanks. What is ORDER BY id ASC for? In the Dao getalldata function

  • @StevdzaSan

    @StevdzaSan

    3 жыл бұрын

    Sort and get the list in ascending order.

  • @annguyenhoang3589
    @annguyenhoang35894 жыл бұрын

    I hope that you will make a tutorial that using mvvm architecture

  • @karanbobade5266
    @karanbobade52663 жыл бұрын

    Hello sir, I have implemented exactly the way you taught. Now I want to add a searchview for this recyclerview with Room data. Do you have any idea how can i do it?

  • @VeeraSrivastava

    @VeeraSrivastava

    3 жыл бұрын

    Use Query and display your data

  • @manishpingale6558
    @manishpingale65583 жыл бұрын

    do you record code and then add voice??

  • @androidmillennium9266
    @androidmillennium92662 жыл бұрын

    Thanks a lot

  • @RahulRawat-rj8ol
    @RahulRawat-rj8ol2 жыл бұрын

    hello sir can we store list of images in room data base i am unable to do it......

  • @vaibhavjadiya6638
    @vaibhavjadiya66383 жыл бұрын

    Can we make and manage Room Database in Java too.?

  • @termdatechannel2685
    @termdatechannel26852 ай бұрын

    Thank you.

  • @damonkopsidas
    @damonkopsidas3 жыл бұрын

    Is there a tutorial on how to do this in Java?

  • @sunitthakur9913
    @sunitthakur99132 жыл бұрын

    Best

  • @theanlaython3470
    @theanlaython34704 жыл бұрын

    val instance = Room.databaseBuilder( context.applicationContext, userDatabase::class.java, "user name" ).build() i got error this part it said Type parameter bound for T in fun databaseBuilder ( context: Context, klass: Class, name: String ) : RoomDatabase.Builder is not satisfied: inferred type userDatabase! is not a subtype of RoomDatabase!

  • @pushpendratripathi46
    @pushpendratripathi464 жыл бұрын

    Really nice explanation of information. I am waiting for next videos on this series. Thanks for these cool videos.

  • @mfz5166
    @mfz51663 жыл бұрын

    i got an error on Dependencies in line 57 were "kapt "androidx.room:room-compiler:2.3.0""

  • @QwertyUiop-rt8ou
    @QwertyUiop-rt8ou3 жыл бұрын

    #9:36 shouldn't the lock cover Al the function? You can see the problem if you watch again.

  • @DeepSingh-wk5ts
    @DeepSingh-wk5ts4 жыл бұрын

    Thank you , please make videos on mirrorfly & sinch dependcy

  • @dennisgonzales9521
    @dennisgonzales95214 жыл бұрын

    Awesome

  • @bhavsarvrajendra341
    @bhavsarvrajendra3413 жыл бұрын

    Loved the video, very simple yet detailed. since you have mentioned Clean Architecture , is there any proper tutorial available ?

  • @StevdzaSan

    @StevdzaSan

    3 жыл бұрын

    You have my courses on Udemy and Skillshare.

  • @marcscherzer
    @marcscherzer3 жыл бұрын

    Hello, thanks for the tutorial. I would like to ask in 11:09, why the `database` folder does not exist in data > data > com.example. ?

  • @marcscherzer

    @marcscherzer

    3 жыл бұрын

    Never mind, somehow I needed to stop and then restart the Android Emulator. Thanks. EDIT: I have no idea if I needed to set exportSchema = true in UserDatabase.kt. However, here are what I did : (1) set exportSchema = true in UserDatabase.kt (2) stop the Android Emulator (3) start the Android Emulator (4) open Device File Manager. Search for data > data > com.example. > database. Finally the database folder was displayed. Please correct me if I am wrong, thank for the amazing tutorial Stevdza-san.

  • @mauriciopriego1700
    @mauriciopriego17002 жыл бұрын

    thank you

  • @doobofbattle9472
    @doobofbattle94723 жыл бұрын

    So if we have multiple entities / tables, do we need a Dao, Repository, and ViewModel for each?

  • @marijocarbajal6968

    @marijocarbajal6968

    3 жыл бұрын

    i think so

  • @VictorHugoGrabowskiBeltramini
    @VictorHugoGrabowskiBeltramini2 жыл бұрын

    this works as well when using Java ?

  • @moataz2415
    @moataz24153 жыл бұрын

    is there any room series for java

  • @Youraverageprogrammer
    @Youraverageprogrammer2 жыл бұрын

    That escaleted quickly! Nevertheless great introduction on ROOM.

  • @mikelantzelo
    @mikelantzelo3 жыл бұрын

    Thank you Thank you Thank you

  • @tokosuburselalu8689
    @tokosuburselalu86892 жыл бұрын

    thanks for the video, i have a question. i read some article that said, we dont need to determine room/retrofit run in background, because the library itself will do by themselve. So in this case we don't need set Dispatcher.IO for insert. what's your opinion ?

  • @StevdzaSan

    @StevdzaSan

    2 жыл бұрын

    I think that you don't actually need to specify IO dispatcher explicitly, because newer version of ROOM database is using it by default. However I'm always specifying it, because it cannot do any harm either way.

  • @tokosuburselalu8689

    @tokosuburselalu8689

    2 жыл бұрын

    @@StevdzaSan thanks for ur explanation 👍

  • @muhriddingayratov1791
    @muhriddingayratov17912 жыл бұрын

    well video lesson thanks

  • @tnnz9920
    @tnnz99203 жыл бұрын

    sir why my code always error and they said value null on entity?

  • @cdm1949
    @cdm19492 жыл бұрын

    How would I join two tables and retrieve data?

  • @87nehal
    @87nehal2 жыл бұрын

    Can you please make a video on how to export a database as csv or txt file?🙏

  • @hoddiewarrior4505
    @hoddiewarrior45053 жыл бұрын

    i get this when i try to access your google play store link : We're sorry, the requested URL was not found on this server.

  • @HalimFurniture
    @HalimFurniture Жыл бұрын

    GL bro

  • @prantosaha8546
    @prantosaha8546 Жыл бұрын

    Dear, Can you please tell me why minimumSDK should be 26.

  • @randy4443
    @randy44434 жыл бұрын

    I can't open the grade in the drive

  • @binodbasnet1762
    @binodbasnet17623 жыл бұрын

    Why we make UserDao as interface . I know interface but i dont know pratical implementation of interface

  • @tytee7794
    @tytee7794 Жыл бұрын

    Having difficulties, the project files are not complete... can you update the download link

  • 3 жыл бұрын

    I'm try to code follow your video, but when i click on floatButton it show this error: "java.lang.RuntimeException: Cannot create an instance of class com.tda.android_training_vangthao.viewholder.StudentViewModel" (I use Student instead of User). Please help me

  • @codemachine19

    @codemachine19

    2 жыл бұрын

    do u can solve this problem ?

  • 2 жыл бұрын

    @@codemachine19 It's been a long time so I don't remember if the problem has been solved yet

  • @muhammed4d
    @muhammed4d7 ай бұрын

    6:30 Why addUser method suspend fun? And why is there no suspend in the readAllData function? Can you explain? Thank you

  • @user-tl4gu8yh9j

    @user-tl4gu8yh9j

    6 ай бұрын

    yes on the adduser we are inserting data and on the readalldata we are geeting data 1: it is good practice to use suspend (coroutine) to run the task asynchronously so he is using btw you can use suspend on both method 2: on the readalldata fun we are getting list through the livedata so maybe he ignored but in place of livedata if we are using flow there is no need of suspend cz flow inbuild use suspend but livedata doesnt it is lifecycle aware only

  • @muhammed4d

    @muhammed4d

    6 ай бұрын

    @@user-tl4gu8yh9j So is what is being done here correct? My native language is not English, so I couldn't understand it. Is there an article?

  • @karanbobade5266
    @karanbobade52663 жыл бұрын

    How do you do it so fastly? And how do you remember the code, snippets, and everything? I can't even remember small codes and you are typing like a God.

  • @hoddiewarrior4505

    @hoddiewarrior4505

    3 жыл бұрын

    I don't know i wonder the same thing but this is the only thing that comes to mind maybe practice

  • @onlinechatter8578
    @onlinechatter85783 жыл бұрын

    Kindly make a video to CRUD the room database using Firebase!!!

  • @DreamInterpretation01
    @DreamInterpretation013 жыл бұрын

    Hello Stevdza-San, this is excelent example of Room with Kotlin. But, how can we implement SearchView and query our database? Regards

  • @StevdzaSan

    @StevdzaSan

    3 жыл бұрын

    I will make a new video about it next week, since lots of you have asked me the same. 👍

  • @atifabbasi7358
    @atifabbasi73583 жыл бұрын

    how to check if user is added successfully.?

  • @the_sharma_amit
    @the_sharma_amit3 жыл бұрын

    Please make videos on Dependency injection, Daggar, Daggar 2, Hilt...

  • @technics6215
    @technics6215 Жыл бұрын

    I think your synchronized singleton implementation is wrong. When two threads enter at the same time they both pass null check, and they both will try to build instance. Synchronized block should start before null check, actually it may cover the entire function. Only one thread should be able to discover that there is no instance yet, create it and then leave synchronized block. After this other thread(s) will be allowed to enter, and get instance created by first thread.

  • @francoterranova8080
    @francoterranova80803 жыл бұрын

    thanks

  • @tobias3344
    @tobias3344 Жыл бұрын

    Can someone help me out and tell me how to write the code at 12:03 in Java? Thanks!

  • @ziyadmansy6016
    @ziyadmansy60164 жыл бұрын

    do i need to know navigation component to study this series with you?

  • @StevdzaSan

    @StevdzaSan

    4 жыл бұрын

    No you don't but you should check my playlist about navigation component to learn more about it.