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

Поділитися
Вставка
  • Опубліковано 25 лип 2024
  • 🏆 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
    @TBrianOnline 4 роки тому +55

    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.

  • @josephcobbinah5412
    @josephcobbinah5412 3 роки тому +14

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

  • @Kazner0h
    @Kazner0h 8 місяців тому +3

    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.

  • @ethiomusic3158
    @ethiomusic3158 3 роки тому +2

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

  • @100_gauravmishra6
    @100_gauravmishra6 3 роки тому +3

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

  • @veshvesh2157
    @veshvesh2157 3 роки тому +2

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

  • @itszechs
    @itszechs 3 роки тому +2

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

  • @prasannadeshpande4435
    @prasannadeshpande4435 3 роки тому

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

  • @HotshotArafath
    @HotshotArafath 3 роки тому +1

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

  • @kevin_joan_re9582
    @kevin_joan_re9582 3 роки тому +4

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

    • @StevdzaSan
      @StevdzaSan  3 роки тому +1

      Thank you buddy, I'm glad to help!

  • @ehtishamhassan8146
    @ehtishamhassan8146 4 роки тому +1

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

  • @SlimeAlone
    @SlimeAlone 3 роки тому +4

    Man you're the best , Keep goin' !

  • @ppersik
    @ppersik 2 роки тому +7

    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 Рік тому +1

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

  • @manishpingale6558
    @manishpingale6558 3 роки тому +1

    Loved new video format man
    Dont CHANGE IT
    IT LOOKS GREAT

  • @reymondlogatoc2492
    @reymondlogatoc2492 2 роки тому

    Thank you for this tutorial series. Very helpful!

  • @angelmhg
    @angelmhg 3 роки тому +1

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

  • @ivankisevskyi5429
    @ivankisevskyi5429 3 роки тому

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

  • @2-dwep371
    @2-dwep371 3 роки тому

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

  • @harshid4661
    @harshid4661 3 роки тому

    the best instructor on whole youtube

  • @canastrao
    @canastrao 3 роки тому

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

  • @iqbalrivaldi2856
    @iqbalrivaldi2856 Рік тому

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

  • @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 ?

  • @subhadeepchowdhury5244
    @subhadeepchowdhury5244 Рік тому

    Great video. I respect the effort.

  • @nazudis
    @nazudis 3 роки тому +1

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

  • @jamperspective6777
    @jamperspective6777 2 роки тому

    Thanks for this sir. Very useful

  • @maximcompeers2477
    @maximcompeers2477 3 роки тому +1

    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

  • @luizfellipeabrantes2933
    @luizfellipeabrantes2933 2 місяці тому +3

    any update on the dependencies? they look different now

  • @alinemansur3824
    @alinemansur3824 8 місяців тому

    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!

  • @mihirshirgaonkar7832
    @mihirshirgaonkar7832 2 роки тому

    great very simplified tutorial

  • @suntvhits
    @suntvhits Рік тому

    very nice explanation sir...Very usefull video.

  • @RASTstudio
    @RASTstudio 2 роки тому

    Thank you too Bro
    Keep Going! ✊✊✊

  • @rondamon4408
    @rondamon4408 3 роки тому

    Excellent video!

  • @cheveux9718
    @cheveux9718 9 місяців тому

    thankyou !! Really merci

  • @brandondelacruz934
    @brandondelacruz934 3 роки тому

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

  • @jorgeleonardogamarraospino9896
    @jorgeleonardogamarraospino9896 3 роки тому +1

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

  • @annguyenhoang3589
    @annguyenhoang3589 4 роки тому +1

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

  • @dhakshnamoorthy8673
    @dhakshnamoorthy8673 3 роки тому

    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.

  • @sahilmahajan9846
    @sahilmahajan9846 2 роки тому

    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?

  • @SERJUAANT
    @SERJUAANT 3 роки тому

    what a great tutorial

  • @DeepSingh-wk5ts
    @DeepSingh-wk5ts 4 роки тому

    Thank you , please make videos on mirrorfly & sinch dependcy

  • @mustafaserce6090
    @mustafaserce6090 3 роки тому

    that's great !

  • @pushpendratripathi46
    @pushpendratripathi46 4 роки тому

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

  • @bhavsarvrajendra341
    @bhavsarvrajendra341 3 роки тому

    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.

  • @Waleed_Al-Haidary
    @Waleed_Al-Haidary 4 роки тому +1

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

  • @kwesiamartey
    @kwesiamartey 4 роки тому

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

  • @termdatechannel2685
    @termdatechannel2685 2 місяці тому

    Thank you.

  • @randy4443
    @randy4443 4 роки тому

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

  • @pillowtalks90
    @pillowtalks90 3 роки тому

    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?

  • @ziyadmansy6016
    @ziyadmansy6016 4 роки тому +1

    are there any prerequisites for this series?

  • @pravinpund7523
    @pravinpund7523 3 роки тому

    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

  • @karanbobade5266
    @karanbobade5266 3 роки тому +1

    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?

  • @vaibhavjadiya6638
    @vaibhavjadiya6638 3 роки тому +1

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

  • @maikolsoro1835
    @maikolsoro1835 3 роки тому

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

  • @vuanhduong7034
    @vuanhduong7034 3 роки тому

    fucking best teacher that ever found on UA-cam.

  • @prasannadeshpande4435
    @prasannadeshpande4435 Рік тому

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

  • @theanlaython3470
    @theanlaython3470 4 роки тому +2

    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!

  • @androidmillennium9266
    @androidmillennium9266 2 роки тому

    Thanks a lot

  • @dennisgonzales9521
    @dennisgonzales9521 4 роки тому

    Awesome

  • @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?

  • @damonkopsidas
    @damonkopsidas 3 роки тому +1

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

  • @tokosuburselalu8689
    @tokosuburselalu8689 2 роки тому +1

    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 роки тому +3

      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 роки тому +1

      @@StevdzaSan thanks for ur explanation 👍

  • @sunitthakur9913
    @sunitthakur9913 2 роки тому +1

    Best

  • @Youraverageprogrammer
    @Youraverageprogrammer 2 роки тому

    That escaleted quickly!
    Nevertheless great introduction on ROOM.

  • @hugovera1540
    @hugovera1540 Рік тому +1

    Could not find method kapt() for arguments ?

  • @mauriciopriego1700
    @mauriciopriego1700 2 роки тому

    thank you

  • @87nehal
    @87nehal 2 роки тому

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

  • @manishpingale6558
    @manishpingale6558 3 роки тому

    do you record code and then add voice??

  • @muhriddingayratov1791
    @muhriddingayratov1791 2 роки тому

    well video lesson
    thanks

  • @mervekaraca5499
    @mervekaraca5499 5 місяців тому

    Will we repeat the same processing for a second table?

  • @alfian3570
    @alfian3570 3 роки тому

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

  • @dashaxedit
    @dashaxedit 3 роки тому

    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.

  • @moataz2415
    @moataz2415 3 роки тому

    is there any room series for java

  • @RahulRawat-rj8ol
    @RahulRawat-rj8ol 2 роки тому

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

  • @doobofbattle9472
    @doobofbattle9472 3 роки тому

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

  • @mikelantzelo
    @mikelantzelo 3 роки тому

    Thank you Thank you Thank you

  • @FreePhoenix888
    @FreePhoenix888 2 роки тому

    This tutorial is more valuable than google guides

  • @sofuxjedup8330
    @sofuxjedup8330 2 роки тому

    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?

  • @onlinechatter8578
    @onlinechatter8578 3 роки тому

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

  • @DreamInterpretation01
    @DreamInterpretation01 3 роки тому

    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 роки тому +3

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

  • @marcscherzer
    @marcscherzer 3 роки тому +1

    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 роки тому +1

      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.

  • @VictorHugoGrabowskiBeltramini
    @VictorHugoGrabowskiBeltramini 2 роки тому

    this works as well when using Java ?

  • @QwertyUiop-rt8ou
    @QwertyUiop-rt8ou 3 роки тому

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

  • @mfz5166
    @mfz5166 3 роки тому

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

  • @the_sharma_amit
    @the_sharma_amit 3 роки тому

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

  • @cdm1949
    @cdm1949 2 роки тому

    How would I join two tables and retrieve data?

  • @hoddiewarrior4505
    @hoddiewarrior4505 3 роки тому

    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.

  • @francoterranova8080
    @francoterranova8080 3 роки тому

    thanks

  • @randy4443
    @randy4443 4 роки тому

    I can't open the grade in the drive

  • @karanbobade5266
    @karanbobade5266 3 роки тому +2

    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

  • @ziyadmansy6016
    @ziyadmansy6016 4 роки тому

    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.

  • @prantosaha8546
    @prantosaha8546 Рік тому

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

  • @Fun--knowledge
    @Fun--knowledge 2 роки тому

    think you

  • @HalimFurniture
    @HalimFurniture Рік тому

    GL bro

  • @ziyadmansy6016
    @ziyadmansy6016 4 роки тому

    do i need to study your previous series on SQLite Database before studying this series?

  • @sahilprajapati4526
    @sahilprajapati4526 4 роки тому

    Create a video on the Android search toolbar.

  • @tnnz9920
    @tnnz9920 3 роки тому

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

  • @tytee7794
    @tytee7794 Рік тому

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

  •  3 роки тому +2

    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

  • @atifabbasi7358
    @atifabbasi7358 3 роки тому

    how to check if user is added successfully.?

  • @technics6215
    @technics6215 Рік тому +1

    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.