دیتابیس SQ Lite در اندروید

امروزه بسیاری از اپلیکیشن ها برای مدیریت داده از database استفاده می کنند با استفاده از اپلیکیشن کاربر امکان حذف و به روزرسانی و اضافه اطلاعات بر روی دیتا را بدست می آورد در این مقاله قصد داریم با یکی از دیتابیس های اندروید آشنا شویم و در مورد دیتابیس در اندروید و دیتابیس SQLite در اندروید، مهم ترین امکانات SQLite و ساخت دیتابیس در اندروید با استفاده از SQLite صحبت کنیم.دیتابیس در اندروید چیست؟مجموعه ای از داده ها و اطلاعات است که در سیستم رایانه ای ذخیره می شود که این داده ها در دسترس هستند و قابلیت مدیریت،اصلاح، به روزرسانی،کنترل و سازمانی دارند و مطابق با یک Data model مشخص سازمان دهی شده اند، بیشتر دیتابیس ها از زبان SQL استفاده می کنند. یکی از کاربردهای دیتا بیس میریت اطلاعات در اپلیکیشن و نرم افزار است. دیتابیس می تواند چند جدول داشته باشد که هر جدول اطلاعات مربوط به یک موضوع را ذخیره می کند.دیتابیس SQLite در اندرویدSQLite برنامه ای برای مدیریت اطلاعات است که بر پایه زبان sql است SQLite پرکاربردترین موتور پایگاه داده در جهان است. SQLite در تمام تلفن های همراه و اکثر رایانه ها تعبیه شده است و در داخل تعداد بیشماری از برنامه های دیگر است که مردم هر روز از آن استفاده می کنند. اطلاعات را برای یک فایل متن روی دستگاه ذخیره می کند یک کتابخانه جمع و جور است.با فعال کردن همه ویژگی ها ، بسته به سیستم عامل هدف و تنظیمات بهینه سازی کامپایلر ، اندازه کتابخانه می تواند کمتر از 600KiB باشد یک کتابخانه نوشته شده به زبان c است که در سیستم عامل های ios و Android وجود دارد windows نیز از آن پشتیبانی می کند نسبت به sql سبک تر است. SQLite از تمام ویژگی های پایگاه داده رابطه ای پشتیبانی می کند. برای دسترسی به این پایگاه داده ، نیازی به ایجاد هیچ نوع ارتباطی مانند JDBC ، ODBC e.t.c برای آن ندارید.SQLite قابلیت ذخیره شدن در دیسک و حافظه را دارد و سرعت بسیار خوبی دارد فایل بانک اطلاعاتی SQLite قابلیت استفاده به صورت کراس پلتفرم را دارد SQLite برای ارتباط با سیستم عامل از SQLite و SQLite open helper استفاده می کند کدنویسی در محیط SQLite بسیار ساده است SQLite نیاز به نصب و پیکربندی ندارد همچنین رایگان است.مهم ترین امکانات SQLiteمعاملاتی(Transactional)بانک اطلاعاتی معاملاتی به پایگاه داده ای گفته می شود که در آن تمام تغییرات و نمایش داده ها اتمی Atomic ، سازگار Consistent ، Isolatedمنزوی و Durableبا دوام (ACID) باشد. حتی اگر معامله در اثر خرابی برنامه ، خرابی سیستم عامل یا قطع برق در رایانه قطع شود. همه تغییرات در یک تراکنش در SQLite یا کاملاً اتفاق می افتد یا اصلاً اتفاق نمی افتد ، حتی اگر عمل نوشتن تغییر روی دیسک قطع شود پایگاه داده به وضعیتی که قبل از تراکنش داشته بر‌می‌گردد و بدین ترتیب، تغییرات بر روی پایگاه داده ناقص انجام نمی شود. پیکربندی صفر (zero configuration)نیازی به تنظیم و مدیریت نیست، SQLite قبل از استفاده نیازی به “نصب” ندارد. روال “راه اندازی” وجود ندارد. هیچ فرآیند سروری وجود ندارد که باید شروع ، متوقف یا پیکربندی شود. دیگر نیازی به سرپرست نیست که یک نمونه پایگاه داده جدید ایجاد کند یا مجوزهای دسترسی را به کاربران اختصاص دهد. SQLite از هیچ پرونده پیکربندی استفاده نمی کند. برای گفتن سیستم که SQLite در حال اجرا است ، هیچ کاری نباید انجام شود. پس از خرابی سیستم یا قطع برق ، هیچ اقدامی برای بازیابی لازم نیست. هیچ چیزی برای عیب یابی وجود ندارد.SQLite فقط کار می کند.ممکن است موتورهای پایگاه داده دیگر عملکرد خوبی داشته باشند. اما انجام نصب و پیکربندی اولیه اغلب می تواند ترسناک باشد.بدون سرور(Serverless)اکثر موتورهای پایگاه داده SQL به عنوان یک فرایند جداگانه از سرور اجرا می شوند. برنامه هایی که می خواهند به پایگاه داده دسترسی پیدا کنند با استفاده از نوعی ارتباط بین پردازشی (معمولاً TCP / IP) برای ارسال درخواست به سرور و دریافت نتایج برگشتی، با سرور ارتباط برقرار می کنند. SQLite به این روش کار نمی کند. با SQLite ، فرایندی که می خواهد به پایگاه داده دسترسی پیدا کند مستقیماً از روی پرونده های پایگاه داده بر روی دیسک خوانده و می نویسد، هیچ فرایند سرور واسطه ای وجود ندارد.اکثر موتورهای پایگاه داده SQL مبتنی بر کلاینت / سرور هستند. از بین آنهایی که بدون سرور هستند ، SQLite تنها دیتابیسی است که به چندین برنامه امکان دسترسی همزمان به یک پایگاه داده را می دهد. خودمختار(Self-Contained)هیچ وابستگی خارجی ندارد. SQLite از این نظر مستقل است که وابستگی بسیار کمی دارد. SQLite از هیچ کتابخانه یا رابط خارجی (به غیر از چند تماس استاندارد کتابخانه C که در زیر توضیح داده شده است) استفاده نمی کند. کل کتابخانه SQLite در یک پرونده کد منبع واحد قرار دارد که برای ساخت آن نیازی به هیچگونه تسهیلات یا ابزار خاصی نیست.ساخت SQLite فقط به این روال ها از کتابخانه استاندارد C احتیاج دارد:()memcmp ()،memcpy ()،memmove ()،memset ()،strcmp()، strlen()،strncmpدر بیشتر ساختها نیز از روالهای اختصاصی حافظه سیستم استفاده می شود:()malloc()، realloc()، freeاما این روال ها اختیاری هستند که می توان با استفاده از گزینه زمان کامپایل حذف کرد.ساختارهای پیش فرض SQLite شامل اشیا VFS مناسب برای مکالمه با سیستم عامل اصلی هستند و این اشیا VFS شامل تماس های سیستم عامل مانند ()open(), read(), write(), fsync و غیره می شوند. همه این رابط ها در اکثر سیستم عامل ها به راحتی در دسترس هستند و VFS های سفارشی را می توان برای اجرای SQLite حتی در سخت ترین دستگاه های تعبیه شده نیز طراحی کرد.ساخت دیتابیس در اندروید با استفاده از SQLite1.یک رکورد در پایگاه داده ANDROID SQLITE ایجاد کنید.این به سوال شما درباره نحوه ایجاد یک رکورد در پایگاه داده Android SQLite پاسخ می دهد.1.1 یک دکمه “Create Student” قرار دهید.1.1.1 یک دکمه “Create Student” را روی res / layout / activity_main.xml خود قرار دهید1.1.2نمای متن”(Hello World) “را در آنجا حذف کنید.1.1.3 متن دکمه ای را برای create student ایجاد کنید.1.1.4 مقدار شناسه دکمه را به “@ + id / buttonCreateStudent” تبدیل کنیدکد باید به صورت زیر باشد.Button>"android:id="@+id/buttonCreateStudent"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true</"android:text="Create Student"1.2 On Click Listener را برای دکمه قرار دهید.1.2.1 ما دکمه On Click Listener را برای “create student” تنظیم می کنیم.1.2.2 ما می توانیم دکمه را با شناسه “buttonCreateStudent” شناسایی کنیم1.2.3 کد زیر در داخل روش() onCreate ، در زیر (setContentView (R.layout.activity_main قرار می گیرد. کد پرونده java / your.package.name / MainActivity.java شما.(Button buttonCreateStudent = (Button;(findViewById(R.id.buttonCreateStudentbuttonCreateStudent.setOnClickListener(new;(()ListenerCreateStudent1.3یک listener class ایجاد کنید “ListenerCreateStudent.java”1.3.1 بر روی نام پکیج خود راست کلیک کنید> “new” را کلیک کنید> ” java class”را کلیک کنید> نام” ListenerCreateStudent “را قرار دهید>” OK “را کلیک کنید1.3.2 کد پیش فرض را به جز درسطر اول (کد پکیج خود) حذف کنید.1.3.2 کد زیر را در ListenerCreateStudent.java قرار دهید. ;import android.view.Viewpublic class ListenerCreateStudent implements} View.ListenerOverride@}(public void (View view{{1.4 student input formخود را آماده کنید. 1.4.1 بر روی res / layout / Directory خود راست کلیک کنید> روی “New” کلیک کنید >”File” را کلیک کنید> نام آن را “student_input_form.xml” بگذارید1.4.2 کد زیر را در student_input_form.xml قرار دهید. RelativeLayout"xmlns:android="http://schemas.android.com/apk/res/android>"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent<"android:layout_height="match_parent<EditText"android:id="@+id/editTextStudentFirstname"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:hint="Student Firstname<"android:singleLine="true</requestFocus><EditText/>EditText>"android:id="@+id/editTextStudentEmail"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@+id/editTextStudentFirstname"android:hint="Student Email</"android:singleLine="true"<RelativeLayout/> 1.5″create form” را به کاربر نشان دهید.1.5.1 برگردید و “ListenerCreateStudent.java” خود را باز کنید.1.5.2 متن برنامه را دریافت کنید ، این مورد برای inflate یک فایل لایهXML مورد نیاز است. کد زیر را داخل روش () قرار دهید. ;()Context context = view.getRootView().getContext 1.5.3 student_input_form.xml را inflate کنید ، این باعث می شود عناصر UI یا ابزارک ها با استفاده از کد قابل دسترسی باشند. کد زیر را بعد از کد در 1.5.2 قرار دهید. (LayoutInflater inflater = (LayoutInflater;(context.getSystemService(Context.LAYOUT_INFLATER_SERVICE=final View formElementsView;(inflater.inflate(R.layout.student_input_form, null, false 1.5.4 ابزارکهای فرم داخل student_input_form.xml را به عنوان متغیرهای “final” لیست کنید. دلیل این امر این است که ما از آنها در داخل AlertDialog استفاده خواهیم کرد. کد زیر را بعد از کد در 1.5.3 قرار دهید. (final EditText editTextStudentFirstname = (EditText;(formElementsView.findViewById(R.id.editTextStudentFirstname(final EditText editTextStudentEmail = (EditText;(formElementsView.findViewById(R.id.editTextStudentEmail 1.5.5 یک AlertDialog با دکمه inflated student_input_form.xml و یک دکمه “Add” ایجاد کنید. کد زیر را بعد از کد 1.5.4 قرار دهید. (new AlertDialog.Builder(context(setView(formElementsView.("setTitle("Create Student.,"setPositiveButton("Add".} ()new DialogInterface.Listener} (public void (DialogInterface dialog, int id;() dialog.cancel{;()show.({1.5.6 سعی کنید run کنید. هنگام کلیک روی دکمه “create student” ، تصویر زیر باید خروجی باشد.1.6ذخیره ورودی کاربر1.6.1 در داخل AlertDialog در روش () on click اضافه کنید ، ما رکورد را ذخیره خواهیم کرد.1.6.2 مقادیر ورودی کاربر را با استفاده از کد زیر دریافت کنید. آنها را داخل روش() AlertDialog “Add” قرار دهید.=String studentFirstname;()editTextStudentFirstname.getText().toString;()String studentEmail = editTextStudentEmail.getText().toString1.6.3 ما در واقع از روش OOP در اینجا استفاده می کنیم. یک فایل “ObjectStudent.java” جدید با ویژگی های “firstname” و “email” ایجاد کنید. کد زیر را در داخل فایل ObjectStudent.java قرار دهید.} public class ObjectStudent; int id; String firstname; String email}()public ObjectStudent{{ 1.6.4 به روش () ، اضافه کردن AlertDialog’s برگردید، مقادیر ورودی را به عنوان یک شی تنظیم کنید ، بنابراین می توانیم آن را در پایگاه داده ذخیره کنیم.;()ObjectStudent objectStudent = new ObjectStudent;objectStudent.firstname= studentFirstname;objectStudent.email= studentEmail1.6.5 یک پرونده جدید “DatabaseHandler.java” ایجاد کنید. این فایل تمام اتصال پایگاه داده SQLite را مدیریت خواهد کرد. کد زیر را خواهد داشت. }public class DatabaseHandler extends SQLiteOpenHelper;private static final int DATABASE_VERSION = 1;"protected static final String DATABASE_NAME = "StudentDatabase}(public DatabaseHandler(Context context;(super(context, DATABASE_NAME, null, DATABASE_VERSION{Override@}(public void onCreate(SQLiteDatabase db+"String sql = "CREATE TABLE students+, id INTEGER PRIMARY KEY AUTOINCREMENT )"+"firstname TEXT, ";"(email TEXT ";(db.execSQL(sql{Override@public void onUpgrade(SQLiteDatabase db, int oldVersion, int}(newVersion;"String sql = "DROP TABLE IF EXISTS students;(db.execSQL(sql;(onCreate(db{{ 1.6.6 ایجاد پرونده جدید” DatabaseHandler، “TableControllerStudent.java راگسترش دهید این پرونده کلیه عملیات مربوط به student s table را کنترل می کند ، کد زیر را خواهد داشت.} public class TableControllerStudent extends DatabaseHandler} (public TableControllerStudent(Context context;(super(context{{1.6.7 روش ایجاد () را برای ایجاد رکورد جدید انجام دهید. روش زیر در کلاس TableControllerStudent است.}(public boolean create(ObjectStudent objectStudent;()ContentValues values = new ContentValues;(values.put("firstname", objectStudent.firstname;(values.put("email", objectStudent.email;()SQLiteDatabase db = this.getWritableDatabase;boolean createSuccessful = db.insert("students", null, values) > 0;()db.close;return createSuccessful{1.6.8 به داخل AlertDialog از ListenerCreateStudent.java برگردید و روش ایجاد () کلاس TableControllerStudent را فراخوانی کنید.boolean createSuccessful = new;(TableControllerStudent(context).create(objectStudent1.6.9 به کاربر بگویید که درج موفقیت بود یا شکست. ما برای انجام این کار از Android Toast استفاده خواهیم کرد.}(if(createSuccessful,".Toast.makeText(context, "Student information was saved;()Toast.LENGTH_SHORT).show}else{,".Toast.makeText(context, "Unable to save student information;() Toast.LENGTH_SHORT).show{1.6.10 سعی کنید اجرا کنید. شما باید بتوانید پیام toaste را ببینید و یک رکورد ایجاد کنید.جمع بندییکی از بخش های مهمی که ما در دوره های آموزش اندروید تخصصی با دانشجویان خود مطرح می‌کنیم بحث sqlite دیتابیس می‌باشد. درست مثل مقاله ای که مطالعه فرمودید در دوره های اندروید، مدیریت داده ها در دیتابیس اندروید، ساخت SQLite و استفاده از آن به عنوان یک پایگاه داده بی نظیر در طراحی اپلیکیشن های مختلف مورد مطالعه قرار خواهد گرفت و دانشجویان نیز موظفند در پروژه های پایانی خود از آن استفاده کنند.