PDA

View Full Version : سوال: تفاوت بین Add و AddWithValue در SqlCommand



ebrahim.rayatparvar
سه شنبه 12 بهمن 1395, 07:28 صبح
سلام خدمت خدمت همه دوستان عزیز.
میخواستم تفاوت بین Add , AddWithValue رو در SQLCommand بدونم. تو این لینک (https://kooy.ir/Forums/Post1794.html)توضیحی مختصر داده یا تمام تفاوت همینه ولی من احساس میکنم نباید چنین تفاوتی بینشون باشه بیشتر از اینها تفاوت داره.

Mani_rf
سه شنبه 12 بهمن 1395, 11:04 صبح
سلام خدمت خدمت همه دوستان عزیز.
میخواستم تفاوت بین Add , AddWithValue رو در SQLCommand بدونم. تو این لینک (https://kooy.ir/Forums/Post1794.html)توضیحی مختصر داده یا تمام تفاوت همینه ولی من احساس میکنم نباید چنین تفاوتی بینشون باشه بیشتر از اینها تفاوت داره.

کارایی این دو دستور متفاوته.

Add از یک متد اورلود شده است که 3نوع وروردی از شما میگیره. نوع اول یک ورودی از نوع پارامتر؛ دومی نام پارامتر و نوع داده؛ سومی به همراه سایز.
AddWithValue فقط یک جور پیاده سازی شده و اون هم به این صورت که نام و مقدا رو میگیره و یه پارامتر اضافه میکنه.

از AddWithValue زمانی استفاده میشه که شما نیازی ندارید نوع داده رو مشخص کنید، برای مثال معمولا برای SQLServer نیازی به مشخص کردن نوع داده سمت دیتابیس نیست اما گاها برای اوراکل نیاز هست که نوع داده رو مشخص کنید تا موقع اینسرت کردن با خطا مواجه نشید.
کارایی Add بیشتر زمانه که یا دارید از دیتابایس های غیر SQLServer استفاده میکنید یا به هر دلیلی میخواید بجای اضافه کردن نام و مقدار مستقیم پارامتر اضافه کنید. برای مثال دارید یک لیست از پارامتر ها به متدی که قراره command رو اجرا کنه میفرستید. و یا زمانی که درحال نوشتن یک Provider جدید برای یک دیتابیس هستید.

از همه اینها گذشته وقتی که به تعریف پایه پارامتر ها تو SQLCommand نگاه میکنی میبینی که به دلیل نحوه ارث بری و پیاده سازی که انتخاب کرده باید ADD و AddRange رو پیاده سازی میکرده:


// // Summary:
// The base class for a collection of parameters relevant to a System.Data.Common.DbCommand.
[DefaultMember("Item")]
public abstract class DbParameterCollection : MarshalByRefObject, IDataParameterCollection, IList, ICollection, IEnumerable

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