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

با نام و یاد خدا
در این جلسه قصد داریم به آموزش کار با دیتابیس در اندروید استودیو بپردازیم. در هر برنامه یا اپلیکیشنی یک سری داده یا اطلاعات ایجاد می شود که ذخیره آن داده ها به صورت منظم برای استفاده در آینده بسیار مهم می باشد.
اساسی ترین روش برای ذخیره داده ها استفاده از پایگاه داده یا دیتابیس(database) می باشد.

تعریف دیتابیس:

به مجموعه ای از داده ها که در ساختار منظمی داخل جداول ذخیره می شوند، دیتابیس گویند. این اطلاعات توسط سیستم مدیریت پایگاه داده (DBMS)، قابل دسترسی ، به روز رسانی و حذف می باشد.

حالا می خواهیم با روش استفاده از دیتابیس در اندروید آشنا شویم. یعنی چگونه دیتابیس بسازیم؟ جدول بسازیم؟ چگونه اطلاعات را وارد کنیم؟و … در این جلسه فقط به ایجاد دیتابیس و جدول و به روز رسانی دیتابیس می پردازیم و در جلسات بعد نحوه اضافه کردن اطلاعات، به روزرسانی اطلاعات و حذف اطلاعات را آموزش می دهیم.

ایجاد پروژه

  • خب ابتدا یک پروژه جدید با نام دلخواه myDatabase ایجاد می کنیم.(طبق آموزش جلسه ششم)
  • به غیر از کلاس MainActivity ،یک کلاس جدید می سازیم با نام دلخواه myDatabaseHelper.نکته: می خواهیم در این کلاس عملیات ایجاد پایگاه داده، جدول، متدهای اضافه کردن اطلاعات، به روز رسانی و حذف اطلاعات و … را تعریف کنیم. و در هر جای برنامه که نیاز بود، این کلاس را فراخوانی کنیم.(طبق آموزش شی گرایی)

برای ایجاد کلاس از قسمت app->java روی پوشه اول راست کلیک کنید و New -> javaClass‌ را انتخاب کنید. در پنجره باز شده نام کلاس را انتخاب می کنیم.

آموزش کار با دیتابیس در اندروید استودیو-ایجاد کلاس

آموزش کار با دیتابیس در اندروید استودیو-ایجاد کلاس

  • بعد از ایجاد کلاس myDatabaseHelper نیاز داریم تا این کلاس از SQLiteOpenHelper، اکستند شود. یعنی ارث بری کند و به تمام خصوصیات و متدهای این کلاس دسترسی داشته باشد. برای این کار از کلمه کلیدی extends استفاده می کنیم:

public class myDatabaseHelper extends SQLiteOpenHelper{

}

آموزش کار با دیتابیس در اندروید استودیو-SQLite

SQLiteOpenHelper: یک کلاس کمکی برای ایجاد دیتابیس و مدیریت آن می باشد که در اندروید استودیو تعریف شده و ما به راحتی از این کلاس ارث بری می کنیم.

  • حالا نیاز داریم متدهای مورد نیاز برای کلاس myDatabaseHelper تعریف کنیم. بعد از ارث بری از SQLite باید ۳ متد اصلی در این کلاس تعریف شود.

تعریف متدها

  • برای تعریف توابع داخل کلاس راست کلیک می کنیم و گزینه Generate را انتخاب می کنیم. در کادر ظاهر شده گزینه  Override Methods را انتخاب می کنیم.

آموزش کار با دیتابیس در اندروید استودیو - ایجاد توابع کلاس SQLite

آموزش کار با دیتابیس در اندروید استودیو - ایجاد توابع کلاس SQLite

  • در پنجره باز شده لیستی از توابعی که در کلاس SQLiteOpenHelper وجود دارد را نمایش می دهد. ما باید کلاس های مورد نیاز خود را انتخاب کنیم .

آموزش کار با دیتابیس در اندروید استودیو - SQLiteOpenHelper

  • تابع سازنده کلاس SQLiteOpenHelper و توابع  onCreate و onUpgrade‌ را انتخاب می کنیم و ok را می زنیم تا پیاده سازی شوند.

آموزش کار با دیتابیس در اندروید استودیو - توابع SQliteOpenHelper

 

  • داخل کلاس و بیرون از متدها یک متغیر برای دیتابیس با نام دلخواه DB_NAME و یک متغیر برای جدول با نام دلخواه TBL_NAME تعریف می کنیم:

public static final String DB_NAME=“uni.db”;
public static final String TBL_NAME=“stu”;

تابع سازنده 

تابعی که هم نام با نام کلاس می باشد، تابع سازنده است. ابتدا طبق تصویر بالا تمام ورودی ها به غیر از Context را پاک می کنیم. در واقع وقتی شی ای از این کلاس ساخته می شود، تابع سازنده اولین تابعی است که اجرا می شود.
در تابع سازنده، خود تابع سازنده کلاس پدر را با کلمه کلیدی Super فراخوانی می کند. ورودی های super را هم به شکل زیر تعریف می کنیم. name‌ را متغیر دیتابیس ، factory هم null و version‌ دیتابیس هم 1‌ قرار می دهیم.

 

public myDatabaseHelper(Context context) {
super(context, DB_NAME, null, 1);
}

تابع onCreate

در این تابع ما ساختار جدول ها را تعریف می کنیم.
به عنوان ورودی یک دیتابیس با نام db و از نوع SQLiteDatabase دریافت می کند و با متد execSQL  دستورات sql را اجرا می کند.

توضیح کد زیر: در کد زیر گفته شده یک جدول ایجاد شود با نام stu  و ستون یا فیلدهای آن Id‌ و name و lastname باشد.
نکته: حروف کوچک و بزرگ رعایت شود.

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(” CREATE TABLE ” + TBL_NAME + “(Id INTEGER PRIMARY KEY AutoIncrement , name TEXT , LastName TEXT)”);
}

آموزش کار با دیتابیس در اندروید استودیو - تابع OnCreate

تابع onUpgrade

توجه داشته باشید این تابع مربوط به، به روز رسانی و تغییر ساختار دیتابیس می باشد (در جلسات آتی یک تابع update مربوط به ، به روزرسانی اطلاعات جدول آموزش می دهیم)

کاربرد این تابع به این صورت است که اگر تصمیم بگیریم یک ستون جدید به جدول اضافه کنیم یا هر تغییر در ساختار ، باید تغییرات را در این تابع تعریف کنیم. و با اجرای این تابع تغییرات اعمال شود.

نکته:حواستون باشه که اطلاعات قبلی پاک می شوند. پس قبل از تغییر به فکر بک آپ باشید.

توضیح کد: دوباره با استفاده از متد execSQL دستورات SQL را اجرا می کنیم. در این دستور می گوییم اگر جدولی با نام TBL_NAME وجود دارد را پاک کن و جدول با ساختار جدید که در تابع onCreate تعریف شده است را مجدد اجرا کن.

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(” DROP TABLE IF EXISTS ” + TBL_NAME);
onCreate(db);
}

  • یک خط کد در تابع سازنده اضافه می کنیم که پایگاه داده db را قابل نوشتن می کند(نکته: فعلا این خط کد را اینجا اضافه کنید تا در جلسه بعد در جای اصلی خودش قرار بدهیم )

SQLiteDatabase db=this.getWritableDatabase();

کدهای کلاس myDatabaseHelper به صورت کامل

خب تا اینجا کدهای داخل کلاس myDatabaseHelper به این صورت است:

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class myDatabaseHelper extends SQLiteOpenHelper{

public static final String DB_NAME=“uni.db”;
public static final String TBL_NAME=“stu”;

//تابع سازنده
public myDatabaseHelper(Context context) {
super(context, DB_NAME, null, 1);
SQLiteDatabase db=this.getWritableDatabase();
}

//تابع onCreate
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(” CREATE TABLE ” + TBL_NAME + “(Id INTEGER PRIMARY KEY AutoIncrement , name TEXT , LastName TEXT)”);
}

//تابع به روزرسانی
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(” DROP TABLE IF EXISTS ” + TBL_NAME);
onCreate(db);

}

}

فراخوانی کلاس myDatabaseHelper

  • حالا باید کلاسی(myDatabaseHelper ) که ایجاد کردیم را در MainActivity‌ فراخوانی کنیم. برای این کار باید از کلاس myDatabaseHelper شی بسازیم:

داخل کلاس و بیرون توابع یک متغیر با نام دلخواه mydb‌  از نوع myDatabaseHelper تعریف می کنیم:

myDatabaseHelper mydb;

سپس داخل متد onCreateشی را ایجاد می کنیم:

کلاس myDatabaseHelper یک ورودی به نام context می خواهد که به جای آن مقدار this را قرار می دهیم.

mydb=new myDatabaseHelper(this);

ایجاد شی و فراخونی کلاس myDatabaseHelper

  • حالا برنامه را اجرا کنید(ما از Genymotion‌ برای اجرای برنامه استفاده می کنیم).
  • در حالی که برنامه در حال اجرا است، در قسمت کناری سمت راست اندروید استودیو گزینه Device File Explorer‌ را انتخاب کنید و دستگاه خود را انتخاب کنید . بعد  data->data را انتخاب کنید تا لیستی از پروژه ها نمایش داده شود. پروژه خود را انتخاب کنید:

پایگاه داده

پایگاه داده ایجاد شده

همانطور که در تصویر می بینید پایگاه داده با نام uni ایجاد شده است.شما می توانید این دیتابیس را ذخیره و در نرم افزار Navicate باز کنید.

امیدواریم از آموزش کار با دیتابیس در اندروید استودیو استفاده برده باشید. در جلسه بعد به نحوه اضافه کردن اطلاعات به جدول می پردازیم.
لطفا سوالات و پیشنهادات خود را در قسمت دیدگاه ها با در میان بگذارید.

مدرس: مهندس مهدی نیکخواه

 

به این مقاله چند تا ستاره میدی؟
[تعداد رای: 30 امتیاز: 4.3]