View Full Version : کدهای من برای حذف درستند؟
pesare
جمعه 21 آذر 1393, 22:23 عصر
سلام دوستان
این کدها برای حذف درستند؟
db = myDbHelper.getReadableDatabase();
String sql = "DELETE FROM tbl_name WHERE id ="+tvid.getText().toString();
db.execSQL(sql);
Nevercom
جمعه 21 آذر 1393, 22:38 عصر
بهتره برای کار با دیتابیس از متدهای خود فریم وورک استفاده کنید، البته استفاده از کوئری هم مشکلی نداره.
احساس می کنم اینجا باید دسترسی به دیتابیس رو بصورت Writeable بگیرید.
pesare
جمعه 21 آذر 1393, 22:40 عصر
میشه یه نمونه کد بنویسید؟
pbm_soy
جمعه 21 آذر 1393, 22:45 عصر
استفاده اینجوری بصورت کویری خوبی که دارد برنامه نویس مجبور نیست وقت برای یادگیری دستورات فریم ورک بذارد و با همان دانسته ها از sql تقریبا بیشتر نیازها را براورده میکند
نظر شما جطور است؟
pesare
جمعه 21 آذر 1393, 22:46 عصر
من از این کدها استفاده میکنم اما رکوردم حذف نمیشه چرا؟
pesare
جمعه 21 آذر 1393, 23:11 عصر
SELECT locale FROM android_metadata failed
این خطا مال چیه؟
Nevercom
جمعه 21 آذر 1393, 23:20 عصر
دلیل اینکه اجازه داریم که کوئری رو بصورت خام وارد کنیم این هست که SQL خودش دنیایی داره و کوئری بد می تونه Performance رو بیاره پایین و یا اینکه نیاز ما در محدوده ی عملیات CRUD نباشه (Create, Read, Update, Delete).
اما برای عملیات CRUD معمولی که بیشتر وقت ها باهاش روبرو بودم، متد های فریم وورک رو ترجیح میدم، چون در سطح فریم وورک بعضی از خطا ها مدیریت شده و بهینه سازی ها صورت گرفته، احتمال خطای دستوری کمتره و در نهایت کدها خوانا تر و منظم تر هستن که از دید من از خیلی چیزها با ارزش تره.
من به این جمله اعتقاد دارم: Premature optimization is the root of all evil
که ترجمه ی دم دستیش این میشه که بهینه سازی های الکی و زیادی ریشه همه ی دردسر ها هستن. مثلاً فرض کنیم یه کدی وجود داره که خوب کار می کنه اما میشه از لحاظ Performance بهبودش داد، اول از همه اینکه معمولاً بهبود پرفرمنس با نوشتن کدهای بیشتری همراه هست، که خودش می تونه باگ های بالقوه به سیستم معرفی کنه. و اینکه تا وقتی سیتم به چیزی نیاز نداره اضافه کردن بهترین چیزها به صورت وسواس گونه فقط باعث کند شدن روند ساخت و بزرگتر شدن پروژه میشه. البته این با فرض این هست که کدها از استاندارد های خوبی پیروی می کنن و ما دنبال پرفرمنس بالاتر هستیم، نه اینکه خود کدها اصلاً خوب نوشته نشده باشن.
همه ی اینا رو گفتم که تو این مورد خاص بی ربط بنظر میان، اما برای من مهم هست که کدی که مینویسم کمتر میزان سر به دیوار کوبیدن رو نیاز داشته باشه وقتی یکسال بعد خودم یا دیگری میره سراغش.
وقتی من کوئری رو بصورت String می نویسم، کامپایلر نمیتونه خطاهای نحوی من رو تشخیص بده، حتی ممکنه خطای نحوی نداشته باشم ولی از دستور اشتباهی استفاده کرده باشم و مشکلاتی از این دست.
درنهایت من در برنامه های معمولی اندروید بجز زمان ساخت دیتابیس نیازی به استفاده از دستورات SQL بصورت مستقیم نداشتم و استفاده از متدهای فریم وورک برام ارجحیت داره (گرچه بخاطر اینکه سمت سرور با دیتابیس کار می کنم، با کدهای SQL بخوبی آشنایی دارم)
این البته نظر من هست فقط، هیچ دلیلی هم ندارم که بنظر سایر دوستان هم بهترین روش باشه
Nevercom
جمعه 21 آذر 1393, 23:24 عصر
SELECT locale FROM android_metadata failed
این خطا مال چیه؟
اگر از دیتابیس آماده استفاده می کنید، نیاز هست که یک تیبل با نام android_metadata داشته باشه با یک فیلد بنام locale
میشه یه نمونه کد بنویسید؟
من الان به IDE دسترسی ندارم که نمونه کدی بهتون بدم، اما منظور من این بود که خط اول اینطور عوض بشه:
db = myDbHelper.getWriteableDatabase();
pesare
جمعه 21 آذر 1393, 23:29 عصر
اگر از دیتابیس آماده استفاده می کنید، نیاز هست که یک تیبل با نام android_metadata داشته باشه با یک فیلد بنام locale
چطوری باید ایجادش کنم؟
Nevercom
جمعه 21 آذر 1393, 23:34 عصر
با یه برنامه ی مدیریت دیتابیس بازش کنید و تغییرات رو اعمال کنید. حتی برای مرورگرها هم افزونه ای هست که بتونید باهاش با دیتابیس های SQLite کار کنید.
pesare
جمعه 21 آذر 1393, 23:35 عصر
الان کدها دارن کار میکنن فقط بروزرسانی لیست ویو رو چطور انجام بدم که تغییرات رو رفرش کنه و نشون بده؟
pesare
جمعه 21 آذر 1393, 23:36 عصر
با sqlite browser درستش میکنم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.