هم اکنون عضو شوید

ورود

فراموشی گذرواژه

گذروازه خود را فراموش کردید ؟

ورود

عضو شوید

با عضویت در سایت از امکانات فوق العاده بهرمنده خواهید شد.

دوره آموزش برنامه نویسی اندروید
آموزش دیتابیس Room در اندروید

آموزش دیتابیس Room در اندروید

سلام توسعه دهندگان گرامی در این سری از آموزش برنامه نویسی اندروید به آموزش دیتابیس Room در اندروید می پردازیم قبلا دیتابیس جدید گوگل (Room Persistence Library) را به شما معرفی کردیم در این آموزش نحوه استفاده از Room Persistence Library را برای شما قرار میدهیم در ادامه با ما همراه باشید.

 

Room Persistence Library چیست ؟

وارد فایل build.gradle شده و در بخش dependencies دو خط زیر را قرار دهید.

دو خط بالا کتابخانه room را به پروژه شما اضافه می کند قندشکن فراموش نشود منتظر بمانید پروژه sync شود.

در ابتدای کار باید یک کلاس به نام User ایجاد کنید این کلاس نام دیتابیس و ستون های ما را شامل خواهد شد.

از واژه @Entity به منظور تعیین نام table استفاده کردیم برای اینکه یک فیلد را PrimaryKey کنیم کافی است از annotation آن استفاده کنیم اگر بخواهیم آن را به صورت autoGenerate تعیین کنیم کافی است مقدار آن را برابر با true قرار دهیم و در نهایت برای تعریف ستون از واژه ColumnInfo استفاده می کنیم در واقع کلاس بالا یک نوع Getter/Setter است که با دادن مقادیر داده ها در ستون های مشخص شده با annotation قرار می گیرند.(این کلاس شامل نام دیتابیس و فیلد ها یا ستون های آن بود)

باید یک Interface ایجاد کنید تا عمل query زدن در آن انجام شود به interface (در کاربر) Dao گفته می شود که شامل چهار annotation به نام های  @Query@Insert@Update@Delete برای انجام عملیات CRUD (درج جذف آپدیت و خواندن) استفاده می شود.

یک Interface به نام UserDao ایجاد کرده و کدهای زیر را در آن قرار دهید.

اگر دقت کنید Query زدن در بالا انجام شده است.

در نهایت باید یک کلاس به نام AppDatabase.class ایجاد کنید این فایل نگهدارنده دیتابیس یا Database Holder است ارتباط بین Interface و Getter/Setter توسط این کلاس انجام می شود.

در اینجا نام فایل دیتابیس رو مشخص کردیم و کلاس ها را بهم ارتباط دادیم.

یک کلاس کمکی ایجاد می کنیم تا یکسری داده تست در دیتابیس درج کنیم نام این فایل برابر با DatabaseInitializer.java است و کدهای زیر را در آن قرار دهید.

و در نهایت در اکتیویتی از کد زیر استفاده کنید.

 

 

این آموزش هم به پایان رسید.

موفق و پیروز باشید.

 

 

درباره نویسنده

با زبان های برنامه نویسی C# , Java , Php به صورت تخصصی کار کردم و بیشتر وقتم رو در برنامه نویسی می گذرونم علاقه زیادی به ساخت اپلیکیشن اندروید دارم.

نظرها ( ۴ )

  1. reza
    ۲۱, دی , ۱۳۹۷ در ۵:۵۵ ب.ظ

    سلام من با دیتابیس Room کار میکنم

    تو کوئری زدن واسه جستجو کردن ب مشکل خوردم

    ۹۵۵ تا سطر تو دیتابیس دارم اگه بخوام مثلا بخوام علی نذری رو جستجو کنم
    ۹۵۵ تا علی نذری بر میگردونه یعنی همش تکراری دو تا کوئری زدم ب این شکل ایا مشکلی داره؟
    @Query(“SELECT * FROM advari WHERE C LIKE ‘%’ || :search|| ‘%’ “)
    fun search_frosh(search: String): List

    @Query(“SELECT * FROM advari WHERE C =:search “)
    fun search_frosh(search: String): List

    • محمد حسین جعفری پور
      ۲۳, دی , ۱۳۹۷ در ۴:۰۸ ب.ظ

      کد زیر رو بررسی کنید.
      @Query(“SELECT * FROM DealInfo WHERE deal LIKE :dealText LIMIT 1 “)
      public LiveData> getDealsList(String dealText);
      موفق و پیروز باشید.

  2. kamal
    ۱۹, فروردین , ۱۳۹۸ در ۱:۰۲ ق.ظ

    Async task در این کد چیکار می کنه ؟ به دیتابیس room ربطی داره یا همون بحث ارتباط با سروره که داده ها رو از سرور می گیره؟

    • mahdidrv
      ۱۳, تیر , ۱۳۹۸ در ۹:۴۰ ب.ظ

      سلام کوئری زدن عمل زمان بری محسوب میشه و بهتره خارج از Main Thread انجام بشه (در یک ترد جدید) و Async Task هم همون ترد جدید هست که این کار رو برامون می کنه در روم ربطی به سرور نداره.
      اینکه معمولا Async Task رو همراه ارتباط با سرور میبینیم عملیات ریکوئست و ریسپانس هم عمل زمان بری هستن
      در کل هرجا از Async Task استفاده میشه یعنی عمل زمان بری در حال انجامه که نباید در Main Thread انجام بشه که یوآی بلاک نشه و اپمون تجربه کاربری بدی نداشته باشه 🙂