مقالات اپلیکیشن

شرح مقالات اپلیکیشن

مقالات اپلیکیشن

شرح مقالات اپلیکیشن

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

کارهایی که تا این مرحله اعمال دادیم مرتبط با تمجیدطراحی اپلیکیشن در مشهد  دیتابیس و جداول آن بود. حال فرصت به کار گیری از این جداول برای وارد کردن اطلاعات یا این که قرائت اطلاعات و یا این که تغییر تحول اطلاعات میباشد.  پیش از استعمال از Room می بایست شیئی از نوع دیتابیسی که در مرحله گذشته تمجید کردیم بدست آوریم. کد مرتبط با دسترسی بدین شی را در اسلوب onCreate از کلاس Application می نویسیم. رایاپارس  در صورتیکه تا قبل از اینً این کلاس را به پروژه اضافه نکرده اید application  کلاسی با اسم از روی اختیار به عنوان مثالً MyDatabaseApplication  بسازید که از Application ارث بری نماید به طور پایین:


// Mohamadreza Amani

// Email: help4usr@gmail.com

public class MyDatabaseApplication extends Application {


MyDatabase myDatabase;


@Override

public void onCreate() {

super.onCreate();


// fallbackToDestructiveMigration() متد

// استفاده شده تا اگر نسخه را تغییر دادید تمام داده های دیتابیس پاک شود

// در برنامه کاربردی بجای پاک کردن داده ها باید داده ها را متناسب با تغییرات به روز کنید

myDatabase = Room.databaseBuilder(this, MyDatabase.class, MyDatabase.NAME).fallbackToDestructiveMigration().build();

}


public MyDatabase getMyDatabase() {

return myDatabase;

}


}

برای به کار گیری از کلاس Application می بایست اسم آن را در Manifest معلوم نمایید. اسم این کلاس را در کد بالا MyDatabaseApplication گزینش کرده بودیم، هم اکنون اسم آن را در پوشه AndroidManifest.xml در خصوصیت android:name وارد می‌کنیم:


android:name=\".MyDatabaseApplication\"

...>



 


 


عملیات های نخستین CRUD

 


CRUD مخفف کلمه و واژه های Create در معنای «ساختن»، Read در معنای «قرائت»، Update در معنای «آپ دیت رسانی» و  Delete در معنای «حذف کردن» میباشد و اشاره به دستوراتی در SQL دارا‌هستند که برای تغییر‌و تحول اطلاعات استعمال می گردند.


در کد تحت عملیات Create (ساختن) را میبینید. یک شی از کالا User و یک شی از فرآورده Organization می‌سازیم و آنها‌را از روش یک تراکنش (Transaction) در دیتابیس ذخیره میکنیم:


// Mohamadreza Amani

// Email: help4usr@gmail.com

final Organization organization = new Organization();

organization.setName(\"Android\");


final User user = new User();

user.setName(\"Mohamadreza Amani\");


// Get the DAO

final UserDao userDao = ((MyDatabaseApplication) getApplicationContext()).getMyDatabase().userDao();


// Define the task

((MyDatabaseApplication) getApplicationContext()).getMyDatabase().runInTransaction(new Runnable() {

@Override

public void run() {

userDao.insertOrganization(organization);

userDao.insertUser(user);

}

});

 


 


کوئری دیتابیس

 


کلیه کوئری ها می بایست در کلاس های مرتبط با دسترسی به اطلاعات (DAO) نوشته شوند.


در‌صورتی‌که بخواهیم به شکلی درباره استفاده کننده (User) جست و جو کنیم که اسم سازمان (Organization) او‌را نیز بدست آوریم. میتوانیم به طور تحت کوئری را بنویسیم:


// declare inner join here

@Query(\"SELECT User.*, Organization.name AS organization_name FROM User INNER JOIN Organization \" +

\"ON User.organization_id = Organization.id WHERE User.id = :id\")

public UserWithOrganization getWithOrgById(int id);

در کوئری بالا بجای استعمال از (organization.name)  از organization_name به کارگیری کردیم و برای اینکار از کلام AS به کار گیری کردیم. با اینکار می اقتدار نقص‌ همنام بودن ردیف ها در جدول های متفاوت را حل کرد از جملهً هر دو جدول Organization و User ستونی به اسم name دارا هستند. برای استعمال از مقدار بازگشتی این روال که دربرگیرنده User و organization_name میباشد بایستی کلاس جدیدی بسازیم. اسم این کلاس را در کد بالا UserWithOrganization گذاشتیم که کد آن به طور تحت میباشد.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد