آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

ساخت یک پایگاه داده (SQLite Database) و یک جدول (table) برای آن، در برنامه نویسی اندروید

برای ساخت پایگاه داده (Database) در برنامه اندروید، پایگاه داده SQLite را به کار می بریم. پایگاه داده SQLite ، یک پایگاه داده ساده است که تنها در طرف کاربر (client side) مورد استفاده قرار می گیرد و نیازی به سرور (server) ندارد. بنابراین اگر در ادامه، تنها از لفظ پایگاه داده استفاده کردیم، منظورمان همان پایگاه داده SQLite می باشد.

معمولا کلاس هایی (class) برای راحت تر کار کردن با پایگاه داده (SQLite Database) در برنامه نویسی اندروید، ارائه می شود، ولی ما فعلا قصد داریم که با اصول کدنویسی مربوط به پایگاه داده در برنامه نویسی اندروید آشنا شویم و بنابراین در یک سری مباحث مختلف، بخش های مختلف کار با پایگاه داده را شرح خواهیم داد. شما می توانید ابتدا این مباحث را خوانده و اصول را یاد بگیرید و سپس به دلخواه، از یکی از کلاس های موجود در اینترنت، استفاده کنید.

فرض کنید که بخواهیم یک پایگاه داده (SQLite Database) با نام KELIDESTAN.db بسازیم و در آن، یک جدول (table) با نام MY_TABLE قرار بدهیم، برای این منظور، کدهای زیر را می نویسیم :


String DATABASE_NAME = "KELIDESTAN.db";    
String TABLE_NAME = "MY_TABLE";      
try{
    SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null);
    mydb.execSQL("CREATE TABLE IF  NOT EXISTS "+ TABLE_NAME +" (ID INTEGER PRIMARY KEY, NAME TEXT, CITY TEXT);");
    mydb.close();
}catch(Exception e){
    Toast.makeText(getApplicationContext(), "Error in creating table", Toast.LENGTH_LONG).show();
}

ویژگی های مربوط به جدول (table) را به طور دلخواه در نظر گرفته ایم و فعلا تنها هدفمان این است که با چگونگی ساخت یک پایگاه داده (SQLite Database) و همچنین ساخت یک جدول (table) برای آن، آشنا بشویم. فقط در همین حد بدانید که با عبارت نوشته شده درون روش execSQL ، تعیین کرده ایم که یک جدول (table) با سه ستون (column) ساخته شود. نام ستون اول، برابر ID و از نوع INTEGER ، نام ستون دوم برابر NAME و از نوع TEXT و نام ستون سوم، برابر CITY و از نوع TEXT می باشد.

همان طور که مشاهده می کنید، از ترکیب try و catch استفاده کرده ایم و در صورتی که در اجرای دستورات مربوط به ساخت پایگاه داده و جدول، خطایی به وجود بیاید، یک پیام به مدت چند ثاتیه به شما نمایش داده می شود (توسط Toast).

به این خط از کدها توجه کنید :


SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null);

از روش openOrCreateDatabase برای ساخت پایگاده داده (SQLite Database) استفاده کرده ایم. این روش چک می کند که اگر پایگاه داده، قبلا ساخته شده باشد، آن را باز می کند و یا اگر پایگاه داده ای با آن نام، قبلا ساخته نشده باشد، آن را ساخته و سپس باز می کند. نتیجه به صورت یک SQLiteDatabase با نام mydb می باشد.

سپس با استفاده از روش execSQL ، عبارت لازم برای ساخت یک جدول (table) برای پایگاه داده (SQLite Database) را اجرا می کنیم :


mydb.execSQL("CREATE TABLE IF  NOT EXISTS "+ TABLE_NAME +" (ID INTEGER PRIMARY KEY, NAME TEXT, PLACE TEXT);");

در آخر، باید پایگاه داده را که باز کرده ایم، با استفاده از روش close ببندیم :


mydb.close();

محل ذخیره فایل مربوط به پایگاه داده (SQLite Database) در حافظه خارجی (External Storage) :

فایل مربوط به پایگاه داده ای که ساخته ایم، در حافظه خارجی (همان پوشه های اصلی گوشی اندروید)، ذخیره می شود، اما چنانچه فولدر مربوط به آن را در گوشی اندروید باز کنید، هیچ فایلی مشاهده نمی کنید (قابل مشاهده توسط شما نیست). اگر بخواهیم که فایل مربوط به پایگاه داده (SQLite Database) در یک مسیر خاص ذخیره شود، می توانیم با یک سری کد، به این هدف برسیم، اما اگر هیچ کدی برای تعیین مسیر آن ننویسیم، فایل مربوط به پایگاه داده، به صورت پیش فرض، در مسیر زیر از حافظه خارجی (External Storage) ذخیره خواهد شد :


ROOT/data/data/APP_NAME/databases/FILENAME

که در آن، ROOT برابر مسیر پوشه (folder) اصلی حافظه خارجی (External Storage) می باشد. APP_NAME برابر نام برنامه اندروید ما (در واقع نام package برنامه) و FILENAME برابر نامی می باشد که در کدهایمان، برای پایگاه داده تعیین کردیم. باز هم تذکر می دهم که فایل مربوط به پایگاه داده را نمی توان در فولدربندی گوشی اندروید، به صورت عادی، مشاهده نمود (باید از روش های دیگری استفاده کرد). در واقع شما به آن دسترسی ندارید (برای امنیت پایگاه داده و اطلاعات برنامه)(فقط با اتصال به کامپیوتر و استفاده از نرم افزارهای خاصی می توان آن را دید). بنابراین اگر برایتان اهمیت دارد که حتما فایل پایگاه داده را ببینید، یک مسیر در پوشه ای دلخواه برای آن تعیین کنید تا بتوانید به فایل پایگاه داده دسترسی داشته باشید (اطلاعاتی که در مسیر پیش فرض قرار می گیرند، حفاظت شده هستند، پس شما می توانید یک مسیر دلخواه برای ساخت آن تعیین کنید، ولی با این کار، دیگران نیز به راحتی می توانند به آن دسترسی پیدا کنند).

به پوشه مربوط به مسیر پیش فرضی که ذکر کردیم، حافظه داخلی (Internal Storage) گفته می شود که تنها خود برنامه اندروید به آن دسترسی دارد (برای امنیت اطلاعات برنامه اندروید) و به بقیه حافظه، حافظه خارجی (External Storage) گفته می شود که تمامی برنامه های اندروید گوشی به آن بخش از حافظه، دسترسی دارند. بنابراین دو کلمه داخلی و خارجی شما را گیج نکند، هر دو موردی که گفتیم، بخش هایی از خود حافظه اصلی گوشی می باشند (برای کارت های حافظه که بر روی گوشی قرار داده می شوند، بهتر است که عبارت Removeable External Storage را به کار ببریم تا متفاوت از این موارد در نظر گرفته شود).

مسیر پوشه اصلی حافظه خارجی را معمولا با کد زیر به دست می آورند (تنها برای دانستن، آن را ذکر می کنیم و در این مبحث، کاربردی برای ما ندارد) :


File ROOT = android.os.Environment.getExternalStorageDirectory();
نویسنده علیرضا گلمکانی
شماره کلید 325
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 14 12 2
mohsen1473
۱۳۹۵/۰۵/۰۸
۱۲:۲۴

سلام قسمت آخر آموزش یک کد هست برای محل ذخیره سازی دیتابیس
من میخوام محل ذخیره سازه دیتا بیس رو عوض کنم چیکار باید بکنم ؟

یاسر
۱۳۹۵/۰۷/۰۶
۱۴:۰۱

سلام خسته نباشید
فایل دیتابیس در پروژه اندروید استودیو در کجای پروژه قرار دارد؟
مـثلا در b4a  در پوشه فایل هست
اما در اندروید استودیو پیداش نکردم

بهنام
۱۳۹۵/۰۸/۰۱
۲۲:۲۴

در قسمت android 
روی app کلیکی راست کن
new > folder < assets folder 
انتخاب کن
داخل اون فایل دیتا بیس رو کپی کن

Mr.Zeus
۱۳۹۵/۰۸/۱۵
۰۰:۳۶

سلام دوست عزیز
یک درخواست کوچیک دارم و اون اینه که در ابتدای آموزشتون بگید که کد ها رو توی چه جایی از اندروید استودیو و توی چه نوع فایلی باید بنویسیم
متشکرم 

مهدی
۱۳۹۵/۰۸/۲۳
۱۷:۵۳

سلام
من از eclipse استفاده میکنم وقتی کدها رو وارد کردم قسمت های زیر رو نمیشناسه
openOrCreateDatabase
getApplicationContext()
import هایی که انجام دادم
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;
علتش چیه؟؟؟؟؟

مهران
۱۳۹۵/۰۹/۱۲
۱۸:۲۲


سلام و خسته نباشید
من میخوام وقتی برنامه رو اندروید نصب میشه دیتابیس در مسیر به غیر از مسیر پیشفرض نصب بشه، یا به عبارت ساده تر اینکه دیتابیسم رو SD card نصب بشه که بتونم به فایل دیتابیس دسترسی مستقیم داشته باشم لطفا راهنمایی کنید که از چه دستوری برای این منظور استفاده کنم؟!
ممنون

sinakhamisi
۱۳۹۵/۰۹/۳۰
۱۵:۱۸

با سلام و تشکر از زحمات شما
یک سوال دارم.در زمان uninstall کردن اپ پایگاه داده از گوشی پاک میشود؟با نصب جدید مجددا ساخته میشود؟
اگر پاک نمیشود چیکار باید کرد تا در زمان نصب مجدد دچار مشکل نشویم؟با تشکر

admin
۱۳۹۵/۱۰/۰۱
۰۶:۳۱

سلام.
اگر مسیر دلخواهی برای ذخیره پایگاه داده (database) در حافظه خارجی (External Storage) تعیین نشده باشد، آنگاه به صورت پیش فرض، فایل مربوط به پایگاه داده (database) در حافظه داخلی (Internal Storage) ذخیره خواهد شد.
با uninstall کردن برنامه اندروید، اطلاعات موجود در حافظه داخلی (Internal Storage) حذف می شود، بنابراین اگر فایل مربوط به پایگاه داده (database) در حافظه داخلی (Internal Storage) ذخیره شده باشد، حذف خواهد شد.
دقت شود که حافظه داخلی (Internal Storage) مختص برنامه اندروید نصب شده خواهد بود (یعنی سایر برنامه های اندروید و یا کاربر، نمی توانند به اطلاعات موجود در آن دسترسی داشته باشند، مگر با روش های هک کردن) و حافظه خارجی (External Storage)، بخش دیگر و قابل دسترسی توسط کاربر و سایر برنامه ها می باشد ().

sinakhamisi
۱۳۹۵/۱۰/۰۱
۱۴:۲۵

متوجه شدم،تشکر فراوان

fatemeh
۱۳۹۶/۱۰/۲۹
۲۳:۲۴

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

admin
۱۳۹۶/۱۰/۳۰
۱۴:۳۹

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

بهنود
۱۴۰۰/۰۹/۲۸
۲۲:۲۴

سلام. من خیلی به برنامه نویسی آشنایی ندارم، سوالم اینه ممنون میشم راهنماییم کنید:
من یه جدول دارم شامل ۱۰۰ تا خودرو که میخوام به همراه اسم مالکشون و شماره موبایلشون اگر بشه بصورت یک اپ اندروید دربیارم.
آیا برنامه ای هست که با کمترین دانش حوزه برنامه نویسی وبیشتر با آبجکتها بتونم این اپ رو عملیاتی کنم؟
سپاس از لطفتون.

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)