آموزش دیتابیس SQLite در اندروید - 4
متد Select
این متد خیلی مهمه. کلا برای خوندن از دیتابیس از این متد استفاده میشه. یعنی هر کاری از قبیل سرچ و نمایش و اینا وظیفه این متد هست. مثل قبل، برای استفاده از این متد دو روش وجود داره:
1. استفاده از متد "rawQuery"
2. استفاده از متد "query"
این دو متد هر دو خروجی Cursor دارن. cursor یک نمونه ای از کل دیتابیس هست که اشاره گرش به سطری قبل از سطر اول اشاره میکنه. (بیشتر توضیح داده میشه) - فرق این دو متد اینه که "rawQuery" یک دستور SQL ای میگیره (یعنی کد SQL) ولی "query" از متدهای API دیتابیس هست و نیازی به دستورات SQL نداره.
حواسمون باشه که برای Select نمیشه از execSQL استفاده کرد چون این متد خروجی نداره. در حالی که ما نیاز به خروجی Cursor داریم.
توی عکس زیر متد Search رو میبینین. این متد در واقع میره توی دیتابیس میگرده و فردی که مشخصاتش با ورودی یکی هست رو بیرون میده. برای این کار هم باید یک نمونه از کل دیتابیس رو از طریق متد "query" بگیریم و توش سرچ کنیم.
نکته مهم اینه که هر وقت cursor گرفتیم اول دستور
if(cursor.moveToFirst())
رو مینویسیم. این میگه آقا اگر سطر اول وجود داشت فلان کارو انجام بده. اگرم وجود نداشت هیچی. do-while برای اینه که عملیات مورد نظر برای سطر اول هم انجام بشه.
دو تا نکته مهم:
1. به نحوه بیرون کشیدن اطلاعات از cursor دقت کنید. مثلا اگر قراره اطلاعاتی که از نوع int هست رو بیرون بکشیم، اینجوری مینویسیم:
cursor.getInt(شماره ستون)
شماره ستون از صفر شروع میشه. بجای اینکه خودمون دستی شماره ستون رو بدیم، میشه به صورت زیر نوشت:
cursor.getInt(cursor.getColumnIndex(اسم ستون))
اسم ستون رو هم که گفتیم توی کلاس Labels تعریف میکنیم. پس میشه اینجوری:
person.setId(cursor.getInt(cursor.getColumnIndex(Labels.COLOUMN_ID)));
2. یادمون نره حتما کلاس Model رو بسازیم. کلاس مدل یعنی همون که قراره به دیتابیس اد، جستجو، حذف یا ویرایش بشه. توی این مثال کلاس مدل از نوع person بود. حتما باید getter ها و setter ها تعریف بشن.