PDA

View Full Version : OledbCommand چه استفاده ای داره؟



vbapr2005
جمعه 13 آبان 1384, 02:38 صبح
من این دفعه دو تا سوال دارم
یکی این که اصلا OledbCommand به چه درد می خوره؟!!! آخه ما که میتونیم تو همون OledbAdapter.SelectCommand.CommandText دستورات خودمون رو بنویسیم

دیگه این که همون Adapter چرا 4 تا پراپرتی مربوط به Command داره؟
SelectCommand
UpdateCommand
DeleteCommand
و InsertCommand
؟؟
خب با همون SelectCommand مگه نمیشه دستورات پاک کردن یا اینسرت کردن یا ... رو داد؟

خیلی ممنون. دستتون درد نکنه

mehrdotnet
شنبه 14 آبان 1384, 15:52 عصر
ببینین تا اونجایی که من می دونم روند کار اینطوریه :
فرض کنین شما بخواین یک سری داده های خاص رو از DB بیرون بکشین و به کاربر ارائه بدین(مثلا توی یک دیتا گرید). بعد کاربر موارد را اضافه ، حذف و ویرایش کنه و بعدش با تایید کردن اونا ثبتشون کنه. هدف اصلی ADO.Net این بوده که بتونین یک سری داده را از DB به APP تون بکشونین و بعد از اینکه به طور Disconnected کلی تغییر روشون دادین بتونین یکبار به DB وصل بشین و همه تغییرات رو اعمال کنین. میدونیم که همه تغییرات توی برنامه روی DS اعمال میشه (البته اگه از راه استاندارد ADO.Net) عمل کرده باشین و خودتون هر بار به صورت دستی DB رو بروزش نکنین).
خوب حالا وقتی شما با کمک SelectCommand مربوط به DA داده ها رو واکشی کردین و به کاربر نشون دادین اگه دستورات Update ، Delete و Insert متناسب با دستور Select تون رو توی DeletCommand ، UpdateCommand و InsertCommand مربوط به DA قرار بدین بایک دستور Update که به DA بدین خودش تمام تغییرات اعم از حذف و اضافه و ویرایش رو روی DB اعمال می کنه و نیازی به کار دستی نداره.

mehrdotnet
شنبه 14 آبان 1384, 15:56 عصر
در ضمن لازمه بگم این رو هم بگم که نیاز نیست شما دستورات Update ، Delete و Insert مناسب رو خودتون برای DA بنویسین بلکه می تونین فقط دستور Select را مشخص کنین و بعد با یک CommandBuilder دستورات مناسب رو از روی اون تولید کنین. (این یعنی اند راحتی برای برنامه نویس !!!!)

mehrdotnet
شنبه 14 آبان 1384, 16:03 عصر
یه چیزه دیگه در مورد اینکه می گین Command به چه دردی می خوره :
اگه شما روند بالا را رعایت کنین همه کارها با بانک اطلاعاتی اتوماتیک انجام میشه. ولی توی بعضی مواقع شما نیاز دارین خودتون دستی یه کاری رو روی DB انجام بدین (مثل یه عمل حذف یا اضافه) اینجا دیگه نیازی نیست از DA استفاده کنین می تونین خیلی راحت به کمک Command که فضای کمتری رو هم نسبت به DA اشغال می کنه و فکر کنم سرعت بیشتری هم داره این عمل رو به صورت دستی انجام بدین.
راستش می دونم نتونستم درست تفهیم کنم!!!! شزمنده خودتون دیگه....
کلاً اگه DA را درست درکش کنین اون وقت خودتون متوجه میشین که Command هم چه فایده ای داره!!!! به هر حال به نظر من هر دوشون لازم و بجاست و هر جایی یکیش کاربرد داره
از اینکه سرتونو درد آوردم ببخشین !!! نمی دونم چرا وقتی از این بحث ها پیش میاد نمی تونم جلوی خودم رو بگیرم!!! دست خودم نیست!!! ان شاء الله توی پستهای بعدی پرحرفی نمی کنم!!!

vbapr2005
سه شنبه 17 آبان 1384, 02:48 صبح
اولا شرمندم که انقدر دیر جواب میدم. از اونایی که سه سال بعد از این که آدم جوابشونو میده واکنش نشون میدن خیلی بدم میاد اما متاسفانه خودم حداقل 48 ساعت نتونستم به اینترنت وصل شم. خلاصه ببخشید.

از جواب هایی هم که دادی خیلی تشکر می کنم.
من از جواب اولتون فهمیدم که اگه ما بخوایم حداکثر استفاده رو از DA بکنیم باید میتونیم یه دستور Select (مثلا برای سرچ کردن)، یه دستور Delete و یه Insert داشته باشیم و اگه بخوایم بیشتر از یه دستور بدیم(مثلا سه تا دستور اینسرت) و بعدا دیتابیس اصلی رو آپدیت کنیم، باید از راه های دیگه ای استفاده کنیم.

راجع به جواب دوم هم شرمدنم چون من اصلا CommandBuilder رو نمیشناسم و باهاش هم تا حالا کار نکردم.

و درباره ی جواب سوم هم باید بگم که این یه چیز بدیهی یی هستش که به OledbCommand نیاز بوده. چون معلومه که اگه نیاز نبود که اصلا نمیذاشتنش. من هم شوخی کردم که این حرف رو زدم. در حقیقت برای این، این حرف رو زدم که بفهمم زا OledbCommand چه استفاده ای میشه کرد و الا من که نمیتونم تشخیص بدم چی نیاز بوده که بذارن و چی نیاز نبوده.

حالا من از این جوابها نتیجه می گیرم که بهتره من که برای اولین بار هستش که از Oledb به طور حرفه ای میخوام استفاده کنم از همون DA و Command هاش استفاده کنم برام بهتره. ان شالله بعدا راه های پیشرفته تر و سریع تری رو یاد می گیرم.

بازم از این که زحمت کشیدی و جواب دادی خیلی خیلی تشکر می کنم. دستت درد نکنه

mehrdotnet
سه شنبه 17 آبان 1384, 17:23 عصر
خوشحالم از اینکه تونستم کمکتون کنم.
همیشه موفق و سربلند باشید