ورود

View Full Version : جستجو در اس کیو ال



dasssnj
پنج شنبه 28 فروردین 1393, 12:58 عصر
سلام . من می خواستم بدونم چطوری میشه یه کلمه رو توی دیتا بیس جستجو کنیم و اطلاعات برگردونده شده رو استفاده کنیم.
من این رو نوشتم ولی cursor بر نمی گردونه . پس اطلاعات کجا میره؟
db.execSQL("select * from tablename where field like '"+search+"%'");
راه دیگه ای برای جستجو وجود داره ؟ و اگه ممکنه یه مثال بزنید.

saeed_g21
پنج شنبه 28 فروردین 1393, 14:20 عصر
کافیه به صورت زیر استفاده کنی
Cursor cursor = db.rawQuery("select * from tablename where field like '"+search+"%'", null);
cursor.moveToFirst();
String txt1 = cursor.getString(cursor.getColumnIndex("id"));

smemamian
پنج شنبه 28 فروردین 1393, 14:33 عصر
نکته : انتخاب تمامی ستون ها در هیچ شرایطی توصیه نمیشه
(نه تنها در برنامه نویسی اندروید بلکه تحت ویندوز یا تحت وب هم
صدق می کنه) :

select *

#root#
پنج شنبه 28 فروردین 1393, 15:54 عصر
نکته : انتخاب تمامی ستون ها در هیچ شرایطی توصیه نمیشه
(نه تنها در برنامه نویسی اندروید بلکه تحت ویندوز یا تحت وب هم
صدق می کنه) :

select *

یعنی توی یه دیتابیس که دو تا ستون داره و 100 تا ردیف هم این قضیه صدق میکنه؟

smemamian
پنج شنبه 28 فروردین 1393, 17:56 عصر
یعنی توی یه دیتابیس که دو تا ستون داره و 100 تا ردیف هم این قضیه صدق میکنه؟

مستندات اندورید ساده ترین مسائلی که ما در نظر نمی گیریم رو جزو هشدارها در نظر گرفته. برای مثال
تعریف یک متغیر که به صورت Global یا همان جهانی تعریف می کنیم و مقدار دهی می شود را اصلاً توصیه
نمی کنه. به همین دلیل گفته شده که در onCreate مقداردهی کنید. این مثال رو زدم که ببنید مستندات که
محدودیت زیادی برای برنامه نویس ها/توسعه دهندها قائل شده. حتی تعریف یک متغیر ساده !
(در حاشیه : علت چیست که به صورت جهانی توصیه نمی کنند؟ چون زباله روب ها (Garbage collector)
نمی توانند این مقادیر رو مدیریت کنند.)

جستجو در دیتابیس به صورت انتخاب کل ستون ها هزینه زیادی داره و حتی در چند مقاله مختلف اورده شده
که جستجو به این صورت یک جستجوی خطی نیست. ( بدین معنی که در نظر نگیرید ما 100 ردیف و 2 ستون داریم
و به ازای هر جستجو در نهایت 200بار جستجو کرده ایم. ). همیشه سعی کنید جستجو رو راهنمایی کنید به درست ترین
ستون در جدول.

بیشتر بدانید 1 (http://use-the-index-luke.com/blog/2013-08/its-not-about-the-star-stupid) - بیشتر بدانید 2 (http://blogs.lessthandot.com/index.php/datamgmt/dbprogramming/why-you-shouldn-t-use/)