ورود

View Full Version : سه سوال در مورد کوئری های sqlite



بیتا حکمت
پنج شنبه 16 مهر 1394, 11:38 صبح
سلام دوستان ،

سوال اول : اولین سوالی که دارم اینکه فرض کنید داخل اکتیویتی یه کوئری زدیم




select name from company where id=10



حالا این Name که برگشت داده میشه ، چه جوری داخل یک Textview بریزیم ؟
سوال دوم :
ایا اگر کوئری به این صورت بود



select * from company where id>1


می تونستیم اینها رو داخل ارایه بریزیم و از ارایه استفاده کنیم ( مشابه Datatable در #C ، مثل سوالی که اینجا پرسیده شده منظورم هست : لینک (http://barnamenevis.org/showthread.php?412639-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D9%85%D8%B3%D8%AA%D9%82%DB%8C%D9%85-%D8%A8%D9%87-%D8%AC%D8%AF%D9%88%D9%84-sql-server-%D8%A8%D8%A7-%D8%B4%D9%85%D8%A7%D8%B1%D9%87-%D8%B3%D8%B7%D8%B1-%D9%88-%D8%B3%D8%AA%D9%88%D9%86-!))
یعنی میخوام به صورت سطر و ستون به اون خروجی ها دستری داشته باشم .


سوال سوم : فرض کنید که دیتابیس رو زمان اجرا ساختیم مشابه کوئری پایین چند هزار Insert داریم


INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );




با توجه به اینکه نظم و ترتیب اکتویتی بهم می ریزه چند هزار کوئری Insert رو داخلش قرار بدیم به خصوص اینکه باید از گیومه و + هم بین این کوئری ها استفاده کنیم
الف: آیا در اندروید ساختاری برای ذخیره کوئری هست ، مثلا خودم فکر اینکه این کوئری پایین رو داخل یک فایل تکست ذخیره کنم و از اونجا فراخوانی کنم
اما شاید راه بهتری هم باشه

ب : با توجه به زیاد بودن تعداد کوئری ها ممکنه زمان اجرا گوشی کاربر هنگ کنه ، ممکنه یک مثال ساده Insert با استفاده از theread بهم بدین که
از این مشکل جلوگیری بشه ...

slr560
پنج شنبه 16 مهر 1394, 20:24 عصر
1- پاسخ هر کوئری ای که زده میشه رو باید داخل یک شئ cursor ریخت و با استفاده از یک حلقه میشه خیلی راحت cursor رو پیمایش کرد و اطلاعات رو کشید بیرون
2- مشابه بالا داخل یه cursor میریزیم و توی هربار پیمایش حلقه خروجی cursor رو به یک آرایه اضافه کنه
3-موردی نداره که کوئری توی تکست باشن . اصولا هم باید همین کارو کرد . فایل تکست کوئری ها رو داخل یک آرایه بریزید و دونه دونه Insert کنید
برای اینکار هم از AsyncTask استفاده کنید . نه هنگ میکنه نه چیزه دیگه :لبخندساده:

بیتا حکمت
پنج شنبه 16 مهر 1394, 23:36 عصر
1- پاسخ هر کوئری ای که زده میشه رو باید داخل یک شئ cursor ریخت و با استفاده از یک حلقه میشه خیلی راحت cursor رو پیمایش کرد و اطلاعات رو کشید بیرون
2- مشابه بالا داخل یه cursor میریزیم و توی هربار پیمایش حلقه خروجی cursor رو به یک آرایه اضافه کنه
3-موردی نداره که کوئری توی تکست باشن . اصولا هم باید همین کارو کرد . فایل تکست کوئری ها رو داخل یک آرایه بریزید و دونه دونه Insert کنید
برای اینکار هم از AsyncTask استفاده کنید . نه هنگ میکنه نه چیزه دیگه :لبخندساده:

اگه میشه یه مثال در مورد AsyncTask بنویسید

slr560
جمعه 17 مهر 1394, 00:26 صبح
عبارت سرچ شده در گوگل :
how to use asynctask in android ?
نتایج جستجو : :لبخندساده:

http://stackoverflow.com/questions/14250989/how-to-use-asynctask-correctly-android
http://stackoverflow.com/questions/18069678/how-to-use-asynctask-to-display-a-progress-bar-that-counts-down
http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html
http://www.compiletimeerror.com/2013/01/why-and-how-to-use-asynctask.html
http://programmerguru.com/android-tutorial/what-is-asynctask-in-android/

ali.s7092
جمعه 17 مهر 1394, 10:00 صبح
سلام به مثال زیر توجه کنید



public String name_amaken_com(String id,int row){

Cursor cu=mydb.rawQuery("select * from company where ID='"+id+"'", null);
String fild= null;
if(cu.moveToPosition(row))
fild=cu.getString(0);

return fild;

}


در این مثال آرایه ای از فیلدها درست می شود.
cu.movetoposition اشاره به سطری می کند که می خواهیم خوانده شود (با استفاده از یک حلقه مقدار row را تغییر می دهیم البته باید تعداد سطرهای جدول را داشته باشیم تا بتوانیم حلقه به همان مقدار اجرا شود)
تابع cu.getstring مشخص می کند که چه ستونی را می خواهیم بخوانیم مثلا در اینجا اولین ستون را مدنظر داریم.(ستون اول نوعش string است)
فیلد خوانده شده در متغیر fild قرار دارد حال هر جا که بخواهیم استفاده کنیم( مثلا تکست ویو )لازم است که تابع را فراخوانی نماییم.