PDA

View Full Version : متد ()moveToFirst کرسر دقیقا چه کاری انجام میده



ho1377
جمعه 17 شهریور 1396, 11:50 صبح
1-سلام دوستان میخواستم بدونم متد ()moveToFirst برای چیه؟ لطفا مفهومی توضیح بدین.

2-اگه از متد SqliteDatabase.query با آرگومان های null برای ایجاد یک کرسر استفاده کنیم به تمام جدول اشاره کردیم؟ میشه توضیح بدین.

Nevercom
جمعه 17 شهریور 1396, 20:44 عصر
چون از ساختار داخلی Cursor کاملاً اطلاع ندارم، درک خودم از موضوع رو براتون می‌نویسم، تحقیقات بیشتر به عهده‌ی خودتون

بر اساس درک من، Cursor یک ساختار پیمایشی هست، به این معنی که نتیجه ی Query به اندازه ی Bufferش در حافظه نگهداری می کنه و اونها رو پیمایش می کنه و اگر حجم داده های برگشت داده شده توسط دیتابیس بیش از اندازه‌ی بافرش باشه، وقتی درخواست اون بخش از داده ها داده شد، اون بخش دیگه رو دریافت می کنه و در بافر نگه‌داری می کنه.

پس به شکل آرایه نیست که تمام اطلاعات رو در خودش داشته باشه و با اندیس بتونیم بهش اشاره کنیم، برای همین هست که با متدهای *move این ساختار رو پیمایش می کنیم تا دونه دونه رکوردها رو بهمون بده.

در ساختارهای Traversal یا Iterative یک شمارنده داخلی وجود داره که مشخص می کنه الان در کجای داده ها قرار داریم، تا وقتی گفتیم یکی برو جلو یا سه تا بیا عقب، ما رو محل دقیق هدایت کنه، ضمن اینکه هیچ تضمینی وجود نداره که Cursor حتی در اولین مرحله از دریافت داده ها، در موقعیت 0 یا ابتدای لیست باشه، برای همین ایده‌ی خوبی هست که همون ابتدا Cursor رو ابتدا هدایت کنیم و از اون محل پیمایش رو آغاز کنیم.

در مورد سوال دومتون، هر کدوم از پارامترهای متد query محدودیت هایی رو برای SELECT اعمال می کنه، که اگر به جز نام جدول، بقیه پارامترها null ارسال بشن، یعنی تمام رکوردهای جدول و تمام فیلد های هر رکورد رو برگردون، که میشه معادل این:

SELECT * FROM table

ho1377
شنبه 18 شهریور 1396, 09:21 صبح
واقعا ممنون خدا خیرت بده