کلیدستان

نسخه‌ی کامل: خواندن داده های ذخیره شده دیتابیس در برنامه نویسی اندرویید
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام دیتابیسی ساختم که دادهایی از کاربر میگیره و ذخیره میکنه و id دادها را در یک لیست ویو نمایش میده الان میخوام با کلیک بر روی هر  id که در لیست ویو نمایش داده شده همه داده های اون ستون رو برای کاربر نمایش بده برای گرفتن کل داده های یک ستون از چه کدی باید استفاده کرد؟؟
سوالمو واضح تر میگم شاید دوستان متوجه نشدن
برنامه ای ساختم که اطلاعات نام ونام خانوادگی و شماره  رو در دیتابیسذخیره میکنه

و در لیست ویو نام خانوادگی نمایش داده شده

الان قصد دارم  با کلیک شدن بر روی هر ایتم از لیست ویو نام و شماره رو از دیتابیس بخونه و در تواست نمایش بده

من این کد نوشتم

کد پی‌اچ‌پی:
    c db.rawQuery("SELECT * FROM " dbh.TABLENAME null);
            
            while (
c.moveToNext()) {
                
                
            
nam c.getString(0);
                
namehesab namehe;

                
                
                
famil c.getString(1);
                
familmokhatb famil;

                
number c.getString(2);
                
numbermokhatab number ;


اما مشکل اینجاست که فقط اطلاعات اخرین ایتم رو نشان میده
خب شما یک اشتباه کردید.
شما نوشتید SELECT * FROM ...
خب این دستور میداد همه ستونها رو از دیتابیس   رو  به اشاره گر شما (cursor)  وصل کنه.
وقتی حلقه میزنید، به این معنی هست که از سطر اول اشاره گر شروع به حرکت کنه تا برسه به انتهای دیتابیس(چون هیچ شرطی نذاشتید).
به این صورت که حلقه شما در اولین تکرار میاد سطر اول مقادیر میریزه داخل 3 متغییر (نام و فامیلی و شماره).
حلقه برای بار دوم میاد تکرار میشه ،این دفعه میاد سطر دوم دیتابیس میریزه داخل 3 متغییر  و الی آخر
و حلقه وقتی آخرین بار اجرا بشه ،میاد سطر آخر دیتابیس میریزه داخل 3 متغییر .
پس شما روی هر کدوم از ایتم های لیست ویو کلیک کنید ، مقادیر سطر آخر نشون میده.(این از دلیل این اتفاق)
راه حل چیه؟
شما باید برای کوئری تون یک شرط بزارید. شما وقتی هر آیتم کلیک میشه ،میتونید از متغییر position اون آیتم استفاده کنید.و داخل کوئری به کار ببرید مثل دستور
زیر
کد پی‌اچ‌پی:
db.rawQuery("SELECT * FROM " dbh.TABLENAME+"WHERE id="+ (postion+1)+" , null); 
بعد بقیه دستورای بالا رو همون جوری در ادامه اش بنویسی.
دستور بالا میگه : بیا از دیتابیس سطری انتخاب کن که شماره اش مثلا 3 است.

نکته : دلیل اینکه داخل کوئری از Postion+1      استفاده کردم ،بخاطر اینه که مقدار پوزیشن از صفر شروع میشه ولی id  مقدارش از یک .
بخاطر همین با مقدار یک جمع کردم تا باهم ست بشه.

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

داخل کوئری یک فاصله پشت WHERE بنداز .
" WHERE  "
مشکل حل شد مرسی

ادمین عزیز لطفا موضوع سوال رو به ((خواندن داده های ذخیره شده دیتابیس در برنامه نویسی اندرویید)) تغییر بده چون تو سایت های زیادی گشتم ولی چیزی در این مورد نبود کمکی میشه واسه بقیه دوستان