ذخیره‌داده‌ها در برنامه‌های اندروید - قسمت دوم

ذخیره‌سازی در دنیای موبایل

در شماره پیش در مورد ذخیره‌سازی داده‌ها در سیستم‌عامل اندروید صحبت کردیم و گفتیم ۴ روش برای این کار وجود دارد و 2 روش را به اختصار توضیح دادیم. در این شماره قصد داریم 2 روش دیگر برای ذخیره‌سازی داده‌ها در سیستم‌عامل اندروید را مورد بحث و بررسی قرار دهیم.
کد خبر: ۴۳۵۴۳۴

امیر بهاءالدین سبط‌الشیخ

این 2 روش به 2 صورت External Storage و Database است، اما توضیح این روش‌ها.

External Storage

در این روش داده‌ها به جای آن که در یک Internal Storage‌ ذخیره شوند، در یک External Storage‌ یا همان کارت حافظه جای می‌گیرند.

boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
    mExternalStorageAvailable = true;
    mExternalStorageWriteable = false;
} else {
    mExternalStorageAvailable = mExternalStorageWriteable = false;
}

در کد بالا ابتدا وضعیت کارت حافظه را با استفاده از Environment.getExternalStorageState بازیابی می‌کنیم، سپس به مقایسه مقدار Environment.MEDIA_MOUNTED می‌پردازیم که مشخص شود کارت حافظه در دسترس است یا خیر. مرحله بعد آن را با MEDIA_MOUNTED_READ_ONLY مقایسه می‌کنیم تا مشخص شود قابلیت خواندن دارد یا خیر. سپس مانند روش قبلی (Internal Storage) داده‌های خود را در آن ذخیره می‌کنیم. برای آدرس دهی کارت حافظه می‌توان از Enviroment. getExternalStorageDirectory استفاده می‌کنیم.

Database

در سیستم‌عامل اندروید از پایگاه‌داده‌های مبتنی بر SQLite پشتیبانی می‌شود. در شماره‌های پیشین در مورد این پایگاه‌ داده توضیحاتی داده شده است.

برای یادآوری اشاره می‌کنیم که این پایگاه داده به صورت فایل است و برای مدیریت آن نیازی به یک سرور نیست و به همین خاطر می‌تواند در تمامی سیستم‌‌های عامل براحتی اجرا شود و شبیه Microsoft SQL Server CE است.

هر برنامه می‌تواند از یک یا چند پایگاه‌ داده برای ذخیره‌سازی داده‌های خود استفاده کند؛ اما محل ذخیره‌سازی داده‌ها کجاست؟ این پایگاه به صورت پیشفرض در کارت حافظه داخلی دستگاه ذخیره می‌شود و مسیر آن به این صورت است:

/data/data/««app_name»»/databases/««database_name»»

مقدار app_name مقداری نام برنامه شما یا در واقع بسته (Package) اصلی پروژه شما برای پایگاه داده است، مقدار database_name‌ توسط خود شما در کد مشخص می‌شود(در سطور پایین‌تر توضیحات بیشتری ارائه خواهد شد) به طور مثال :

/data/data/azure3bt.com/databases/click.db

بسیار خب،این موضوع را با مثال بررسی می‌کنیم: برای شروع شما باید یک کلاس بنویسید که از کلاس SQLiteOpenHelper مشتق شده باشد. این کلاس فراهم کردن امکان برقراری ارتباط شما با پایگاه داده و ساختن و به‌روزرسانی ساختاری پایگاه داده را به عهده دارد، به کد زیر دقت کنید:

public class DbHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "db_name";

private static final int DATABASE_VERSION = 1;

Context context;

public DbHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

this.context = context;

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(this.context.getString(R.string.create_menu));

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

onCreate(db);

}

}

این کلاس 3 فیلد دارد؛ اولی DATABASE_NAME‌ که نام پایگاه ‌داده شما را مشخص می‌کند (همان database_name که در بالا گفته شد)، مقدار بعدی نسخه پایگاه‌داده را مشخص می‌کند، این عدد برای زمانی استفاده می‌شود که بخواهید پایگاه داده خود را به‌روزرسانی کنید (منظور از به‌روزرسانی ساختار پایگاه‌داده است)، یک شی‌ء Context که اطلاعاتی در مورد برنامه‌ای که قرار است از این پایگاه داده استفاده کند در خود دارد. این کلاس دارای 2 رخداد مهم بوده یکی onCreate است که یک شی‌ء SQLiteDatabase‌ که برای مدیریت پایگاه‌داده است دریافت می‌کند، سپس پایگاه داده را از روی یک script متنی می‌سازد که شما مشخص می‌کنید. رخداد بعدی onUpgrade است که زمانی شما ساختار پایگاه داده خود را به روز می‌کنید، این رخداد فراخوانی می‌شود.

امیر بهاءالدین سبط‌الشیخ

newsQrCode
ارسال نظرات در انتظار بررسی: ۰ انتشار یافته: ۰

نیازمندی ها