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

آموزش دیتابیس اندروید از مبتدی تا پیشرفته – بخش ۲

توی بخش قبل، بعد از آشنا شدن با مفهوم دیتابیس، به ساده‌ترین شکل ممکن یک دیتابیس ساختیم و داخلش اطلاعات رو وارد کردیم.

حالا قصد داریم نحوه خواندن اطلاعات از دیتابیس و جدولمون رو آموزش ببینیم.

اگر با دیتابیس و مباحث اولیه آشنایی ندارید لازمه ابتدا بخش قبل رو از ایـنــجــــا مطالعه کنید.

 

خواندن اطلاعات از دیتابیس

برای خوندن اطلاعات از جدول باید از Cursor استفاده کنیم. این کار هم دو روش داره. هر کدوم که فکر میکنید راحت ترید استفاده کنید.

روش اول:

به شکل زیر تمام سطرها و اطلاعات داخل جدول رو میریزیم توی Cursor

Cursor allrows = mydb.rawQuery("SELECT * FROM " + tableName, null);

ما تو این کد با نوشتن * تمام ستون های جدول رو به ترتیب داخل cursor ریختیم. در صورت نیاز میتونید فقط چند ستون رو انتخاب کنید که باید به جای * اسم ستون‌ها رو به ترتیب بنویسید و با کاما از هم جدا کنید. و میتونید فقط سطرهایی رو انتخاب کنید که یک شرط خاص رو داشته باشند. (مثلا دانشجویان با معدل بالای ۱۶)

از اونجایی که این کارها بیشتر مرتبط با sql هست میتونید از سایر رفرنس‌ها یاد بگیرید یا سوال بپرسید تا براتون بعدا مثال بزنم.

روش دوم:

توی این روش به جای کوئری نوشتن از ارسال پارامتر استفاده می‌کنیم. قالب کلی به شکل زیر هست:

Cursor allrows = mydb.query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);

۱- پارامتر table اسم جدول شماست

۲- پارامتر columns اسم ستون‌هایی هست که میخواین اطلاعاتش رو بگیرید. به شکل زیر:

new String[]{"id", "name", "mark"}

۳- با پارامتر selection میتونید برای نتایج شرط بذارید. مثل دانشجویان با معدل بالای ۱۶. در صورتی که این مقدار null باشه تمام سطرها برگشت داده میشه.

"mark > ?"

۴- توی پارامتر selectionArgs باید مقدارهای شرطی که توی پارامتر قبلی گذاشتین رو به شکل آرایه مشخص کنین. (به جای علامت سوال ها)

new String[]{"16"}

۵- با پارامتر groupBy میتونید نتایج رو بر اساس یک ستون گروه بندی کنید. اگر مقدارش null باشه تاثیری توی نتایج نمیذاره.

۶- پارامتر having هم یک نوع شرط روی نتایج میذاره که به دلیل پیچیده بودن فرآیندش اینجا توضیح نمیدم کامل. در صورت null بودن تاثیری روی نتیجه نمیذاره.

۷- با پارامتر orderBy میشه تعیین کرد نتایج بر چه اساسی چیده بشن. مثلا بگیم به ترتیب نمره از کم به زیاد. کافیه اسم ستونی که میخواین براساس اون چیده بشه رو بنویسید. این پارامتر میتونه null باشه و تاثیری روی نتایج نذاره.

۸- پارامتر limit هم مشخص میکنه که چه تعداد سطر برگشت داده بشه. مثلا ۱۰۰ بازیکن برتر رو بگیرید. این مقدار در صورتی که null باشه تمام نتایج موجود برگشت داده میشه.

در نهایت برای گرفتن تمام سطرها و اطلاعات جدول به شکل زیر مینویسیم.

Cursor allrows = mydb.query(tableName, new String[]{"id", "name", "mark"}, null, null, null, null, null, null);

 

گرفتن اطلاعات از Cursor

خب حالا اطلاعات داخل cursor رو میتونیم سطر به سطر بخونیم و استفاده کنیم. مثلا توی آرایه بذاریم یا توی textView نمایش بدیم یا …

اگر نیاز داشتید تعداد سطرهای برگشت داده شده رو بدونید از کد زیر استفاده کنید.

int count = allrows.getCount();

توی کد زیر داخل یک حلقه تکرار، شرط میذاریم تا زمانی که cursor ما سطر جدیدی برای خوندن داره اطلاعاتش رو بخون و مثلا توی textView اضافه کن.

while(allrows.moveToNext()){
    int id = allrows.getInt(allrows.getColumnIndex("id"));
    String name = allrows.getString(allrows.getColumnIndex("name"));
    int mark = allrows.getInt(allrows.getColumnIndex("mark"));
    myTextView.append("id: " + id + ", name: " + name + ", mark: " + mark + "\n");
}

نحوه گرفتن مقدار هر ستون رو توی کد بالا میتونید ببینید. نکات مهم نوع داده ستون و اسم ستون هست که باید مشخص بشه.

یادتون باشه حتما بعد از اینکه کارتون با شیء دیتابیس و cursor تموم شد باید ببندیدشون. به شکل زیر:

allrows.close();
mydb.close();

خب این شد ساده‌ترین روش برای خوندن اطلاعات از جدول و استفاده اونها.

 

در ادامه …

توی بخش‌های بعدی نحوه آپدیت کردن اطلاعات یک سطر (مثلا تغییر نمره)، حذف یک سطر، حذف یک جدول و … رو یاد میگیریم.

همینطور کم کم دیتابیس رو به صورت پیشرفته‌تر کار میکنیم.

لطفا بازخوردهای خودتون رو توی کامنت بنویسید و اگر سوالی داشتید بپرسید.

بخش سوم: آپدیت اطلاعات و حذف

بخش چهارم: شروع کار پیشرفته و ساختار یافته

بخش پنجم: پیاده سازی نمونه پروژه دیتابیس اندروید

آموزش استفاده از دیتابیس آماده

من عاشق برنامه‌نویسی، یاد گرفتن و آموزش دادن هستم. انجام کارای جدید توی برنامه‌نویسی رو بیشتر به چشم سرگرمی میبینم تا کار.

حجت ریحانه

من عاشق برنامه‌نویسی، یاد گرفتن و آموزش دادن هستم. انجام کارای جدید توی برنامه‌نویسی رو بیشتر به چشم سرگرمی میبینم تا کار.

7 ديدگاه بر “آموزش دیتابیس اندروید از مبتدی تا پیشرفته – بخش ۲

    1. سلام
      از اونجایی که پارامترهای null رو باید موردی گفت تا دقیق فهمیده بشه، شاید نشه اینجا کامل توضیح داد.
      در مورد group by و having بهتره از منابع تخصصی sql اطلاعات بیشتری بگیرید، چون فهمشون نیاز به مثال و توضیح زیادی داره.
      پارامتر orderBy همونطور که توضیح دادم چینش نتایج بر اساس یک ستون رو مشخص میکنه، به صورت صعودی یا نزولی. مثلا میگین اطلاعات این جدول رو بر اساس امتیاز بازیکنان صعودی (ASC) یا نزولی (DESC) به من بده.
      Cursor allrows = mydb.query(tableName, new String[]{“id”, “name”, “score”}, null, null, null, null, “score DESC”, null);
      این دستور اطلاعات بازیکنان رو بر اساس امتیاز بیشتر به کمتر میاره. یعنی بیشترین امتیاز سطر اول هست.
      اگر ASC یا DESC رو ننویسید، پیش فرض اطلاعات رو صعودی (ASC) برمیگردونه.

      پارامتر limit هم که تنها یک عدد هست. مشخص میکنید که چند سطر برگشت داده بشه.

      اگر دستورات sql رو خوب متوجه بشید کار کردن با این پارامترها مشکلی نداره.
      https://www.tutorialspoint.com/sql/sql-group-by.htm
      این منبع شاید بتونه کمکتون کنه.

  1. توی دیتابیس sqliteم بغیر id دوتا مقدار دارم. میخوام تمام مقادیر دومی که کاربر تاحالا وارد کرده رو بگیرم و جمع کنم
    میتونید راهنمایی کنید

  2. سلام من میخوام یه دستور if رو توی موقع ورود اطلاعات به دیتابیس داشته باشم چطور میتونم؟
    SELECT * FROM tabelemon WHERE addadid= g0
    متاسفانه هرچی خروجی میگیرم با اینکه عدد g0 نیست، ولی همون عدد g0 رو برمیگردونه

  3. باز هم ممنون از اموزش های ساده و روانتون میخواستم بدونم آیا این اطلاعات به صورت دائمی ئارد برنامه میشن یعنی مثلا اگه مقادیر یک ستون قبل از تغییر یه چیزی باشه و بعد از تغییر برنامه رو کاملا ببندیم و دوباره بازش بکینم و بخوایم مقدار اون ستون رو بگیریم ، آخرین مقدار به ما داده خواهد شد یا همون مقدار اولیه؟

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *