جلسه ششم: پایگاه داده، بانک اطلاعاتی یا دیتابیس (Database) در اندروید
در این جلسه با مبحث پایگاه داده، بانک اطلاعاتی یا دیتابیس (Database) در اندروید آشنا می شویم. با استفاده از دیتا بیس تمام اطلاعات در یک فایل ذخیره می شود. از مزیت های اینکار دسترسی آسان به اطلاعات، جلوگیری از افزونگی (اطلاعات زائد)، گزارش گیری راحت با دستورات SQL، بروزآوری یا آپدیت اطلاعات با اس کیو ال، حذف رکوردها و در کل مدیدیت آسان اطلاعات می باشد. اصولا دو روش در بکارگیری دیتا بیس وجود دارد. یکی اینکه فایل دیتابیس در داخل کد برنامه و به محض اولین اجرای برنامه ساخته شود و اطلاعات به مرور در آن قرار بگیرد (مثل برنامه های دفترچه یادداشت). و روش دوم اینکه فایل دیتابیس در خارج از برنامه و مثلا در کامپیوتر و توسط نرم افزارهای خاص ایجاد و پر شود و سپس به عنوان منبع اطلاعات به منابع برنامه افزوده گردد (مثل برنامه های محتوایی، کتاب ها). در روش دوم بایستی فایل Database توسط یک نرم افزار در کامپیوتر ساخته شود. از آنجاییکه Android از SQLite پشتیبانی می کند ما در ابتدای این جلسه نرم افزار رایگان SQLite Browser را آموزش می دهیم. با استفاده از این نرم افزار می توانید فایلهای دیتابیس Sqlite ایجاد کنید و آن را با جدول ها و اطلاعات خاص پر کرده و سپس در پوشه ی assets در اپلیکیشن کپی کنید تا از طریق برنامه و با کمک Query های SQL به صورت سازمان یافته اطلاعات خود را استخراج نمایید.
آموزش نرم افزار SQLite Browser یا DB Browser for SQLite
قبل از هر چیز آخرین نسخه ی DB Browser for SQLite را از سایت رسمی آن به نشانی sqlitebrowser.org دریافت نمایید. پس از دانلود و نصب برنامه، با اجرای آن پنجره ای شبیه به شکل زیر را مشاهده خواهید کرد. برای باز کردن فایل های دیتابیس می توانید روی Open Database کلیک کنید و برای ایجاد یک دیتابیس جدید نیز بر روی New Database کلیک نمایید. ما در این آموزش تصمیم داریم یک بانک اطلاعاتی ساده با یک جدول و دو فیلد بسازیم تا با نحوه ی عملکرد این نرم افزار آشنا شویم. پس بر روی کلید New Database کلیک کنید.
پس از کلیک روی New Database پنجره ای مطابق با شکل زیر باز می شود. یک نام دلخواه مانند mydb در فیلد File name وارد کرده و دکمه ی Save را کلیک کنید.
بلافاصله پنجره ی زیر بصورت خودکار باز می شود. در این پنجره در فیلد Table یک نام دلخواه برای جدول خود مثل mytable1 بنویسید. سپس روی Add field کلیک کرده و نام فیلد را به id_ تغییر دهید (این نام تقریبا اجباریست، بدلیل اینکه در ادامه با کلاسهایی کار می کنیم که نام فیلد کلید اصلی در آن بصورت ثابت id_ درج شده است، اما در لزوماً این نام نباید به این شکل باشد و اگر بدون استفاده از کلاسهای کمکی و بطور مستقیم به دیتابیس متصل شوید از هر نام دلخواهی می توانید استفاده کنید). سپس گزینه های PK به معنای PRIMARY KEY یا همان کلید اصلی و AI به معنای AUTOINCREMENT یا افزایش خودکار را تیک زده و در نهایت تیک U یه معنای UNIQUE یا تک را نیز بزنید. نوع فیلد را نیز INTEGER انتخاب کنید. این فیلد، کلید اصلی جدول خواهد بود و از نوع عدد صحیح بوده و به محض ورود اطلاعات به طور خودکار یک رقم افزایش می یابد. همچنین یونیک بودن آن هم تضمین می کند که این نام در تمام رکوردها تک باشد. از این فیلد برای تشخیص رکورد درج شده، آپدیت شده و حذف شده استفاده می شود. سپس یک فیلد دیگر با نام پیشفرض Field2 و از نوع TEXT ایجاد کنید. با زدن کلید Save پنجره ی زیر نمایش داده می شود. فراموش نکنید که حتما در انتها کلید Write Changes را برای ثبت تغییرات انجام شده کلیک نمایید (پس از کلیک، کلید فوق الذکر غیر فعال می شود).
فایل دیتابیس با نام mydb و بدون پسوند ایجاد شده است. براحتی می توانید از منوی File>Import اطلاعات انبوه خود را در این دیتا بیس وارد کنید. البته برای ورود اطلاعات معمولا باید یک جدول دیگر با مثلا با نام tbl2 و یک فیلد مثلا به نام f2 و از نوع TEXT ایجاد کرده و اطلاعات را در آن وارد کنید. سپس وارد زبانه ی Execute SQL شده و دستوری شبیه به دستور زیر را نوشته و اجرا کنید تا محتوای جدول دوم به جدول اول انتقال داده شود و در آن کپی شود. در اجرای این دستورات برای انتقال اطلاعات بین جدول ها همیشه دقت داشته باشید که فیلد کلید اصلی جدول اصلی را (id_) هرگز در دستور SQL درج نکنید و فقط نام فیلد(های) اطلاعات را در داخل پرانتز با کاما , از هم جدا کنید. و تعداد فیلدهای داخل پرانتر باید به تعداد فیلدهای جدول موقتی دوم باشد. نیازی به نوشتن نام فیلدهای جدول دوم در دستور نمی باشد. در کل تعداد کل فیلدهای جدول موقتی دوم همیشه باید از تعداد کل فیلدهای جدول اصلی یک واحد کمتر باشد (در صورتی که جدول اصلی دارای فیلد کلید اصلی AUTOINCREMENT باشد). پس از اجرای دستور خواهید دید که اطلاعات با موفقیت در جدول اصل کپی شده و فیلد کلید اصلی نیز بصورت خودکار در هر رکورد افزایش یافته است. فراموش نکنید که در نهایت جدول موقتی را پاک کنید و حتما برای ثبت تغییرات روی دکمه ی Write Changes کلیک کنید.
INSERT INTO mytable1 (Field2) SELECT * FROM tbl2;