ورود

نسخه کامل مشاهده نسخه کامل : Parameters ، AddWithValue و نقش @



قله بلند
11-12-2008, 22:07
با عرض سلام

راجع به این خط کد چند سوال دارم:
objcommand.Parameters.AddWithValue("@RegionID", RegionID);

اول: نقش parameters چیست؟

دوم:نقش AddWithValue چیست؟

سوم:@ چه کاری انجام میدهد؟

Ultimator
11-12-2008, 23:42
سلام

parameters مجموعه ی پارامترهای یک شی کامند هست که به دستور sql یا استورد پراسیجر ارسال میشه . برای اضافه کردن یک پارامتر هم میتونیم از متد AddWithValue استفاده کنیم .
@ نمادیه کعه اول متغیر های sql وجود داره و به sql server میفهمونه که این آیتم نوشته شده تو دستور sql یه متغیره ( پارامتره ) و وقتی بخواین دستور پارامتر دار رو اجرا کنید باید به ترتیبی که نوشتید خودتون پارامتر رو تعریف کنید
:20:

قله بلند
12-12-2008, 12:44
سلام.ضمن تشکر از پاسخ شما.برنامه من تابعی دارد که ورودی با نام RegionID را وارد تابع می کند. خط کد زیر، این ورودی را به RegionID در جدول Region مقید می کند.آیا عبارت مقید می کند صحیح است؟objcommand.Parameters.AddWithValue("@RegionID", RegionID);

Ultimator
12-12-2008, 14:29
سلام

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

shalineh
15-12-2008, 14:42
یه توصیه هم من بکنم که بعد از استفاده از پارامترها، حتما آنرا پاک کنید ( تجربه ام اینو میگه ...)
objcommand.Parameters.Clear

قله بلند
15-12-2008, 19:52
یه توصیه هم من بکنم که بعد از استفاده از پارامترها، حتما آنرا پاک کنید ( تجربه ام اینو میگه ...)
objcommand.parameters.clear



سلام
می شه بگویید چرا و کجا؟
اول اینکه دقیقاً کی از کد شما استفاده کنم؟
دوم اینکه لطف کنید و تجربتون رو در اختیارم قرار دهید. نکته جالبی است

قله بلند
16-12-2008, 12:15
سلام
من پارامترها را بعد از دستور زیر clear کردم. یعنی با دستور
objcommand.ExecuteNonQuery();
همه چیز به درستی و با منطق کار می کند. ولی هنوز دلیل این کار را نمی دانم.

لطف کنید و بفرمایید چرا باید این کار انجام شود
ممنون

قله بلند
23-12-2008, 00:18
یه توصیه هم من بکنم که بعد از استفاده از پارامترها، حتما آنرا پاک کنید ( تجربه ام اینو میگه ...)
objcommand.parameters.clear


با سلام
جواب اینکه چرا باید پارامترها را پاک کرد: به خاطر اینکه اگر در حافظه پارامتری وجود داشته حذف بشه
محل استفاده این دستور هم قبل از تعریف پارامتر است. در انتهای کار هم که باید دستورات اجرا شوند

Ultimator
23-12-2008, 12:34
سلام

گاهی پیش میاد که پارامتر ها تو حافظه وجود دارن و دفعه ی بعد که Insert میکنید اطلاعات قبلیش اینسرت میشن !
البته زیاد منطقی نیست و همیشه هم پیش نمیاد اما همون گاهی هم که پیش میاد لازمه ازش جلوگیری بشه !

قله بلند
18-01-2009, 00:33
با سلام

سوالی دارم مبنی بر اینکه: چه تفاوتی بین Parameters.AddWithValue و Parameters.Add وجود دارد؟

می توان رفتاری همانند Parameters.Add را با Parameters.AddWithValue هم داشت؟ پس چرا دو گزینه برای این امر وجود دارد؟

قله بلند
19-01-2009, 00:22
با سلام

فکر نمی کنم که سوال، نامفهوم بوده باشه. اگر علت دیگری دارد که دوستان پاسخ نمی دهند، بفرمایند تا بیشتر توضیح دهم.
راستی ، جستجو هم کردم ولی پاسخ را نیافتم.

_H2_
19-01-2009, 16:10
سلام

سوالی دارم مبنی بر اینکه: چه تفاوتی بین Parameters.AddWithValue و Parameters.Add وجود دارد؟

می توان رفتاری همانند Parameters.Add را با Parameters.AddWithValue هم داشت؟ پس چرا دو گزینه برای این امر وجود دارد؟

به همان دلیل که برای کپی میتوانید...
Ctrl+C را بزنید یا
راست کلیک کنید و Copy را بزنید یا
از منوی Edit گزینه Copy را انتخاب کنید یا
مورد را (مثلاً فایل) را با راست کلیک ماوس گرفته ودر جای جدید رها کنید!

برای اضافه کردن پارامتر یک متد Add داریم که SqlParameter را میگیرد، این متد اصلی است و بقیه متدها خودشان این را اجرا میکنند.
در واقع فر اخوانی ها چنین است:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

==========

ضمناً اجرای متد Clear بعد از اجرای دستور در صورتی واجب میشود که از همین شی Command بعداً هم بخواهید استفاده کنید و در استفاده مجدد بخواهید پارامترها را Add کنید، که نتیجتاً به علت وجود قبلی پارامترها به مشکل برمیخورید.

اگر از یک شی واحد Command بارها در دستورات SQL متعدد استفاده میکنید که هر کدام پارامتر ویژه خود را دارند... انگاه یک قرار داد برای خودتان تعیین کنید!
یعنی...
یا همیشه قبل از Add متد Clear را اجرا کنید تا موارد احتمالی قبلی پاک شوند. (بهتر است)
یا همیشه بعد از اجرای دستور و پایان استفاده جاری از Command متد Clear را اجرا کنید تا برای دفعه بعد خالی و آماده باشد.

در غیر این صورت و اگر یک Command را در جاهای مختلف استفاده مجدد نمیکنید، فقط یک بار پارامترها را در شروع (مثلاً Form_Load) به آن Add کنید و دیگر در هیچ جای کد اینکار را نکنید و برای مقدار دهید پارامترهایی که قبلاً وجود داشته از دستوراتی شبیه این استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یعنی اگر مطمئن باشید تداخل Add پیش نمی آید نیاز به Clear نیست وگرنه همانطور که کاربر shalineh گفتند برای اطمینان و ثبات باید Clear را انجام دهید.

جمیعاً موفق باشید.