آموزش دیتابیس اندروید-قسمت اول

Farzad Sarseifi
توسط Farzad Sarseifi در آموزش برنامه نویسی اندروید,
در اندروید 4 روش برای ذخیره اطلاعات وجود دارد : 1- Shared preferences 2- Sqlite Databases 3- Content Provider 4- Files که بیشتر بر روی Sqlite(http://www.sqlite.org) کار خواهیم کرد و بقیه را در آموزش های بعدی معرفی خواهم کرد،بحث دیتابیس بدلیل گستردگی، نمی توان در یک آموزش بیشتر مباحث را شرح داد پس مرحله به مرحله پیش می رویم و در مرحله اول با ساختار دیتابیس و پیشنیازهای اولیه کار خواهیم کرد. دیتابیس Sqlite : Sqlite یک موتور دیتابیسی کوچک ولی قوی بود که توسط دکتر ریچارد هیپ در سال 2000 میلادی ایجاد شد. Sqlite ابتدا توسط اپل برای iphone ، موبایل های Symbian ،موزیلا فایرفاکس ، Skype ، PHP ، Adobe Air ، Mac OS X ، Solaries و بیشتر محیط های برنامه نویسی دیگر نیز استفاده می شد.که در اندروید نیز از همین دیتابیس استفاده خواهد شد. برای مدیریت دیتابیس sqlite باید از برنامه های زیر استفاده کنید : 1- SqliteAdmin 2- sqliteBrowser 3- یک ADD-ONS Mozilla به نام SQLite Manager 4- و . . . [align=center] توانایی های Sqlite عبارتند از : [/align][align=center][/align] بیشتر این ایتم های بررسی خواهند شد و مثال های کاربردی نیز ارائه خواهد شد و برای شروع با متدها و کلاس های دیتابیس آشنا خواهیم شد. - چگونه دیتابیس را باز کنیم روش اول) public staticSQLiteDatabase.openDatabase( Stringpath, SQLiteDatabase.CursorFactoryfactory, intflags )   پارامتر ها : Path : مسیر دیتابیس Factory : یک متد اختیاری برای وقتی که Cursor یک شرط را فراخوانی می کند استفاده می شود( cursor بعدا بررسی خواهد شد) Flags : برای کنترل کردن حالت دسترسی به دیتابیس که سه حالت دارد : OPEN_READWRITE- OPEN_READONLY- CREATE_IF_NECESSARY   مثال 1 ) ایجاد کردن دیتابیس Sqlite : [/align][align=center] شرح کدها : ابتدا باید یک متغیر از نوع SQLiteDatabase با اسم db بصورت عمومی اعلان کنیم، تا بتوانیم در قسمت های دیگر کلاس ازش استفاده کنیم. سپس در متد OnCreate باید دیتابیس باز کنیم( دیتابیس که قبلا وجود دارد) اگر وجود نداشت آنرا ایجاد خواهد کرد. ارگومان "/data/data/cis493.sqldatabases/myfriendsDB" مسیر دیتابیس را که با نام myfriendsDB ایجاد کرده ایم را باز می کند. و پوشه های data که آمده ، برای این است که در حین اجرای برنامه در آن مسیر قرار گرفته.برای دستیابی به این مسیر در ایکلیپس باید آیکن DDMS را که در بالای برنامه قرار دارد را انتخاب کرده ، سپس در کادر باز شده روی تب File Exploree رفته و می توانید مسیر را مانند نمونه بالا پیدا کنید که باید در مسیر data نام پروژه خود را انتخاب و سپس در پوشه database نام دیتابیس قرار داده شده را مشاهده کنید. [/align][align=center] - متد db.close(); : بستن دیتابیس روش دوم) روش دوم برای بازکردن/ ایجاد کردن دیتابیس در داخل برنامه بصورت زیر میباشد [/align][align=center][/align] - اجرای دستورات : بعد از اینکه دیتابیس باز/ایجاد شد ، می توان روی دیتابیس اعمال : ایجاد جداول،حذف جداول، افزودن اطلاعات و ... قابل انجام خواهد بود. 1- ایجاد جدول : کلا برای کار با sqlite باید با زبان sql آشنایی کافی داشته باشید.برای ایجاد جدول مانند زیر از دستور : create table tblAMIGO( recIDinteger PRIMARY KEY autoincrement, name text, phone text );   استفاده می کنیم.این دستور یک جدول با نام tblAMIGO را که دارای سه فیلد میباشد ایجاد می کند. نوشتن دستور در برنامه نویسی : db.execSQL("create table tblAMIGO("+ " recID integer PRIMARY KEY autoincrement, "+ " name text, "+ " phone text ); " );   شی db را قبلا ایجاد کرده ایم و توسط متد execSQL می توان دستورات sql را نوشت.از این متد برای اجرای دستور استفاده می شود. 2- افزودن اطلاعات : برای این کار دقیقا مانند مثال بالا عمل می کنید و دستور insert را اجرا می کنید : db.execSQL( "insert into tblAMIGO(name, phone) values ('AAA', '555' );" ); این خط باعث افزودن یک رکورد اطلاعاتی به جدول مربوطه می شود. که فیلد اول بصورت یکتا میباشد ، فیلد دوم AAA و فیلد سوم 555 در آن قرار می گیرد. مثال های زیر هم : db.execSQL( "insert into tblAMIGO(name, phone) values ('BBB', '777' );" ); db.execSQL( "insert into tblAMIGO(name, phone) values ('CCC', '999' );" ); دو رکورد در آن قرار می دهند. ** برای افزودن اطلاعات به جدول مثلا یک اطلاعات خاصی که کابر وارد کند باید یک textview را تعریف کرد و در دستور db.execSQL( "insert into tblAMIGO(name, phone) values (t1.getText(), '777' );" ); اصلاعات آن را در فیلد مربوطه قرار داد. فیلدهای پشتیبان کننده Sqlite : text,varchar, integer, float, numeric, date, time, timestamp, blob, boolean که بیشترشون مشخص هستند و نیاز به توضیح خاصی در مورد کاربردشون نیست. بهتره همیشه موقعی که دستورات نوشته بشه درون یک try /catch نوشته بشه و برنامه crash نکنه و بتونید برنامه را مدیریت کنید تا از بروز خطا و خروج از برنامه جلوگیری بشه. مانند مثال زیر ) try{ //perform your database operations here ...} catch(SQLiteException e){ //report problem }finally{ db.endTransaction(); }    
  • 22 پاسخ