پایگاه داده با کاتلین برای برنامه نویسی اندروید

شاید شما هم مثل من درگیر کار با پایگاه داده در اپ های اندرویدی باشید . اولش خیلی سخته معمولا توی اموزش ها فایل های زیادی درست میکنن و آدم سردرگم میشهحقیقت این هست کدها برای اتصال و مدیریت جدول های دیتابیس با زبان کاتلین در محیط اندروید استودیو خیلی پیچیده و زیاد به نظر میرسه ولی اینطور نیست.خب بیایید یکی یکی شروع کنیم ...آموزش کار با پایگاه داده ( دیتابیس )‌ sqlite در زبان کاتلین در محیط اندروید استودیوچه کلاس هایی برای اتصال به دیتابیس با زبان kotlin در برنامه نویسی اندروید نیازه ؟یه سری کلاس ها بعنوان کمک کننده حتما باید بسازید که من اونا رو اینجا مینویسم شاید به دردتون بخورهاین کلاس ها در ابتدا باید نوشته بشه تا اتصال و مدیریت دیتابیس با کاتلین بصورت استاندارد انجام بشهکلاس ها :‌کلاس برای هندل کردن دیتابیس به اسم DbHandlerکلاسی برای ساختن مدلی از هر موجودیت در پایگاه داده Modelsکلاسی برای آداپتور ( چیزی که اطلاعات رو ست میکنه روی دیتابیس )‌MyAdapterهر کدام از کلاس های بالا باید تعریف بشن و اصولی انجام بگیرند تا روند اتصال به دیتابیس در اپ اندرویدی کامل انجام بگیره دیتابیس مورد نظر هم Sqlite هست که یه دیتابیس سبک و راحت برای اپ های اندرویدی هست.و اما اگر بخوام یه توضیح کوچیک درباره ی کلاس های بالا بدم اینطوری میگمکلاس DBHandler همون کمک کننده ی اصلی یا هلپر ما هست که تو بعضی اموزش ها اسمش را DBHelper هم میزارن و این کلاس از کلاس SQLiteOpenHelper ارث بری میکنه و تمام متود های لازم برای عملیات CRUD یعنی CREATE READ UPDATE و DELETE اینجا نوشته میشه.فایل Models میتونه در بردارنده ی مدل کلاس های زیادی باشه مدل ها همون موجودیت های جداول هست یعنی خوبه به ازای هر موجودیت که همون جدول هست یه مدل درست کنید مثلا اگر در دیتابیس جدول books دارید که فیلد های book_name و book_id داره این رو بعنوان یک کلاس تعریف کنید به این شکل : class Model(){var bookID : Int = 0var bookName : String = ""}کلاس Adapter وظیفه ی این رو داره که اطلاعات رو در view ها پر بکنه و برای هر یک از آیتم هایی که از جداول لود کردیم یک view جدا با ویژگی های جدا بسازه تا بتونیم روی هر view عملیات انجام بدیم مثلا دکمه اضافه کن با قابلیت کلیک شدن که بشه هر یک از ایتم ها را دیلیت کرد :)) اینم از یه کلاسی ارث بری میکنه بستگی به این داره که چه چیزی رو برای نمایش انتخاب کردید معمولا recyclerview انتخاب میکنند که در این صورت این کلاس از RecyclerView.Adapter ارث بری خواهد کرد.اینا مفاهیم کلی هست که من خودم خیلی باهاشون درگیر بودم در ابتدا دنبال یه نوشته ای بود که بصورت کلی نشون بده قراره من چیکار کنم و بعد برم تو دل کدنویسی و یاد بگیرم . البته اموزش های خوب زیادی هست که من دیدم و اگر اول کار پیداشون میکردم این همه مشکلات نمیکشیدم نمونش دوره ی پروژه محور کاتلین استاد نیکزاد هست که بینظیر بود برای یادگیری این موارد : اینجا میتونین ببینینبرای نمایش داده ها شما بهتره از یه لیست منعطف مثل RecyclerView استفاده کنید چون در این صورت یه لیست عادی و ساده ندارید شما میتونید روی هر یک از آیتم هایی که لود شده عملیات انجام بدید و همچنین هر نوع view را اضافه کنید.مثلا تصویر زیر دو نوع مختلف نمایش در recyclerview هست :‌آموزش کار با دیتابیس در sqlite کاتلینروی هر آیتم دکمه ی ویرایش یا حذف میتونید قرار بدید تصویر میتونید به هر شیوه ای لود کنید و ....اما بعد از ساختن سه کلاس اصلی بالا که اتصال شما به دیتابیس با کاتلین را فراهم میکند باید چیکار کنین ؟‌برای عملیات CRUD دیتابیس باید متودهایی را درون DbHandler یا همون DbHelper بنویسید.دیگه بقیه کار یعنی نامگذاری متود و کدنویسی درون اونها کار ساده ای هست که بر اساس سلیقه ی برنامه نویس انجام میگیره مثلا داخل DbHanlder میتونید یه متودی برای اضافه کردن دانش آموزان به دیتابیس به این شکل بنویسید:fun addStudent(cTx: Context, student: Student) { val values = ContentValues() values.put(COLUMN_STUDENT_NAME,student.studentName) values.put(COLUMN_STUDENT_PHONE,student.studentPhone) values.put(COLUMN_STUDENT_MARK,student.studentMark) val db = this.writableDatabase try { db.insert(STUDENT_TABLE_NAME,null,values) Toast.makeText(cTx,&quotstudent added successfully&quot,Toast.LENGTH_SHORT).show() }catch (e:Exception){ Toast.makeText(cTx,&quotError : ${e.message}&quot,Toast.LENGTH_SHORT).show() } }این ویدیو رایگان هم فارسی هست پیدا کردم برای یادگیری کار با دیتایس در اندروید عالیه که پیشنهاد میکنم ببینید :‌ https://www.aparat.com/v/t9kho/ بازم اگر سوالی بود درباره ی کاتلین یا برنامه نویسی پایگاه داده با کاتلین در کامنت ها بپرسید جواب میدم