ساخت یک پایگاه داده (SQLite Database) و یک جدول (table) برای آن، در برنامه نویسی اندروید
برای ساخت پایگاه داده (Database) در برنامه اندروید، پایگاه داده SQLite را به کار می بریم. پایگاه داده SQLite ، یک پایگاه داده ساده است که تنها در طرف کاربر (client side) مورد استفاده قرار می گیرد و نیازی به سرور (server) ندارد. بنابراین اگر در ادامه، تنها از لفظ پایگاه داده استفاده کردیم، منظورمان همان پایگاه داده SQLite می باشد.
معمولا کلاس هایی (class) برای راحت تر کار کردن با پایگاه داده (SQLite Database) در برنامه نویسی اندروید، ارائه می شود، ولی ما فعلا قصد داریم که با اصول کدنویسی مربوط به پایگاه داده در برنامه نویسی اندروید آشنا شویم و بنابراین در یک سری مباحث مختلف، بخش های مختلف کار با پایگاه داده را شرح خواهیم داد. شما می توانید ابتدا این مباحث را خوانده و اصول را یاد بگیرید و سپس به دلخواه، از یکی از کلاس های موجود در اینترنت، استفاده کنید.
فرض کنید که بخواهیم یک پایگاه داده (SQLite Database) با نام KELIDESTAN.db بسازیم و در آن، یک جدول (table) با نام MY_TABLE قرار بدهیم، برای این منظور، کدهای زیر را می نویسیم :
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).
به این خط از کدها توجه کنید :
از روش openOrCreateDatabase برای ساخت پایگاده داده (SQLite Database) استفاده کرده ایم. این روش چک می کند که اگر پایگاه داده، قبلا ساخته شده باشد، آن را باز می کند و یا اگر پایگاه داده ای با آن نام، قبلا ساخته نشده باشد، آن را ساخته و سپس باز می کند. نتیجه به صورت یک SQLiteDatabase با نام mydb می باشد.
سپس با استفاده از روش execSQL ، عبارت لازم برای ساخت یک جدول (table) برای پایگاه داده (SQLite Database) را اجرا می کنیم :
در آخر، باید پایگاه داده را که باز کرده ایم، با استفاده از روش close ببندیم :
محل ذخیره فایل مربوط به پایگاه داده (SQLite Database) در حافظه خارجی (External Storage) :
فایل مربوط به پایگاه داده ای که ساخته ایم، در حافظه خارجی (همان پوشه های اصلی گوشی اندروید)، ذخیره می شود، اما چنانچه فولدر مربوط به آن را در گوشی اندروید باز کنید، هیچ فایلی مشاهده نمی کنید (قابل مشاهده توسط شما نیست). اگر بخواهیم که فایل مربوط به پایگاه داده (SQLite Database) در یک مسیر خاص ذخیره شود، می توانیم با یک سری کد، به این هدف برسیم، اما اگر هیچ کدی برای تعیین مسیر آن ننویسیم، فایل مربوط به پایگاه داده، به صورت پیش فرض، در مسیر زیر از حافظه خارجی (External Storage) ذخیره خواهد شد :
که در آن، ROOT برابر مسیر پوشه (folder) اصلی حافظه خارجی (External Storage) می باشد. APP_NAME برابر نام برنامه اندروید ما (در واقع نام package برنامه) و FILENAME برابر نامی می باشد که در کدهایمان، برای پایگاه داده تعیین کردیم. باز هم تذکر می دهم که فایل مربوط به پایگاه داده را نمی توان در فولدربندی گوشی اندروید، به صورت عادی، مشاهده نمود (باید از روش های دیگری استفاده کرد). در واقع شما به آن دسترسی ندارید (برای امنیت پایگاه داده و اطلاعات برنامه)(فقط با اتصال به کامپیوتر و استفاده از نرم افزارهای خاصی می توان آن را دید). بنابراین اگر برایتان اهمیت دارد که حتما فایل پایگاه داده را ببینید، یک مسیر در پوشه ای دلخواه برای آن تعیین کنید تا بتوانید به فایل پایگاه داده دسترسی داشته باشید (اطلاعاتی که در مسیر پیش فرض قرار می گیرند، حفاظت شده هستند، پس شما می توانید یک مسیر دلخواه برای ساخت آن تعیین کنید، ولی با این کار، دیگران نیز به راحتی می توانند به آن دسترسی پیدا کنند).
به پوشه مربوط به مسیر پیش فرضی که ذکر کردیم، حافظه داخلی (Internal Storage) گفته می شود که تنها خود برنامه اندروید به آن دسترسی دارد (برای امنیت اطلاعات برنامه اندروید) و به بقیه حافظه، حافظه خارجی (External Storage) گفته می شود که تمامی برنامه های اندروید گوشی به آن بخش از حافظه، دسترسی دارند. بنابراین دو کلمه داخلی و خارجی شما را گیج نکند، هر دو موردی که گفتیم، بخش هایی از خود حافظه اصلی گوشی می باشند (برای کارت های حافظه که بر روی گوشی قرار داده می شوند، بهتر است که عبارت Removeable External Storage را به کار ببریم تا متفاوت از این موارد در نظر گرفته شود).
مسیر پوشه اصلی حافظه خارجی را معمولا با کد زیر به دست می آورند (تنها برای دانستن، آن را ذکر می کنیم و در این مبحث، کاربردی برای ما ندارد) :
سلام قسمت آخر آموزش یک کد هست برای محل ذخیره سازی دیتابیس
من میخوام محل ذخیره سازه دیتا بیس رو عوض کنم چیکار باید بکنم ؟
سلام خسته نباشید
فایل دیتابیس در پروژه اندروید استودیو در کجای پروژه قرار دارد؟
مـثلا در b4a در پوشه فایل هست
اما در اندروید استودیو پیداش نکردم
در قسمت android
روی app کلیکی راست کن
new > folder < assets folder
انتخاب کن
داخل اون فایل دیتا بیس رو کپی کن
سلام دوست عزیز
یک درخواست کوچیک دارم و اون اینه که در ابتدای آموزشتون بگید که کد ها رو توی چه جایی از اندروید استودیو و توی چه نوع فایلی باید بنویسیم
متشکرم
سلام
من از eclipse استفاده میکنم وقتی کدها رو وارد کردم قسمت های زیر رو نمیشناسه
openOrCreateDatabase
getApplicationContext()
import هایی که انجام دادم
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;
علتش چیه؟؟؟؟؟
سلام و خسته نباشید
من میخوام وقتی برنامه رو اندروید نصب میشه دیتابیس در مسیر به غیر از مسیر پیشفرض نصب بشه، یا به عبارت ساده تر اینکه دیتابیسم رو SD card نصب بشه که بتونم به فایل دیتابیس دسترسی مستقیم داشته باشم لطفا راهنمایی کنید که از چه دستوری برای این منظور استفاده کنم؟!
ممنون
با سلام و تشکر از زحمات شما
یک سوال دارم.در زمان uninstall کردن اپ پایگاه داده از گوشی پاک میشود؟با نصب جدید مجددا ساخته میشود؟
اگر پاک نمیشود چیکار باید کرد تا در زمان نصب مجدد دچار مشکل نشویم؟با تشکر
سلام.
اگر مسیر دلخواهی برای ذخیره پایگاه داده (database) در حافظه خارجی (External Storage) تعیین نشده باشد، آنگاه به صورت پیش فرض، فایل مربوط به پایگاه داده (database) در حافظه داخلی (Internal Storage) ذخیره خواهد شد.
با uninstall کردن برنامه اندروید، اطلاعات موجود در حافظه داخلی (Internal Storage) حذف می شود، بنابراین اگر فایل مربوط به پایگاه داده (database) در حافظه داخلی (Internal Storage) ذخیره شده باشد، حذف خواهد شد.
دقت شود که حافظه داخلی (Internal Storage) مختص برنامه اندروید نصب شده خواهد بود (یعنی سایر برنامه های اندروید و یا کاربر، نمی توانند به اطلاعات موجود در آن دسترسی داشته باشند، مگر با روش های هک کردن) و حافظه خارجی (External Storage)، بخش دیگر و قابل دسترسی توسط کاربر و سایر برنامه ها می باشد ().
متوجه شدم،تشکر فراوان
سلام خسته نباشید
من میخوام توی یک دیتابیس چندتا جدول داشته باشم . باید چیکار کنم؟؟؟؟
سلام.
همین کدها را باید تکرار کنید (کد ساخت پایگاه داده و جدول) و نام ((پایگاه داده)) را همان نام قبلی انتخاب می کنید (اگر قبلا ساخته شده، فقط آن را باز می کند) و نام جدول را هم برابر یک نام جدید در نظر می گیرید تا جدول جدید در همان پایگاه داده قبلی ایجاد شود.
بنابراین بر اساس همین کدها و تنها با تغییر نام جدول (Table)، می توانید تعدادی جدول (Table) جدید در پایگاه داده (Database) بسازید (البته در صورت تمایل، ساختار جدول های جدید را هم مطابق میل خود تعریف کنید، یعنی تعریف تعداد ستون ها و نام ستون ها و ...).
سلام. من خیلی به برنامه نویسی آشنایی ندارم، سوالم اینه ممنون میشم راهنماییم کنید:
من یه جدول دارم شامل ۱۰۰ تا خودرو که میخوام به همراه اسم مالکشون و شماره موبایلشون اگر بشه بصورت یک اپ اندروید دربیارم.
آیا برنامه ای هست که با کمترین دانش حوزه برنامه نویسی وبیشتر با آبجکتها بتونم این اپ رو عملیاتی کنم؟
سپاس از لطفتون.