با عرض سلام
راجع به این خط کد چند سوال دارم:
objcommand.Parameters.AddWithValue("@RegionID ", RegionID);
اول: نقش parameters چیست؟
دوم:نقش AddWithValue چیست؟
سوم:@ چه کاری انجام میدهد؟
Printable View
با عرض سلام
راجع به این خط کد چند سوال دارم:
objcommand.Parameters.AddWithValue("@RegionID ", RegionID);
اول: نقش parameters چیست؟
دوم:نقش AddWithValue چیست؟
سوم:@ چه کاری انجام میدهد؟
سلام
parameters مجموعه ی پارامترهای یک شی کامند هست که به دستور sql یا استورد پراسیجر ارسال میشه . برای اضافه کردن یک پارامتر هم میتونیم از متد AddWithValue استفاده کنیم .
@ نمادیه کعه اول متغیر های sql وجود داره و به sql server میفهمونه که این آیتم نوشته شده تو دستور sql یه متغیره ( پارامتره ) و وقتی بخواین دستور پارامتر دار رو اجرا کنید باید به ترتیبی که نوشتید خودتون پارامتر رو تعریف کنید
:20:
سلام.ضمن تشکر از پاسخ شما.برنامه من تابعی دارد که ورودی با نام RegionID را وارد تابع می کند. خط کد زیر، این ورودی را به RegionID در جدول Region مقید می کند.آیا عبارت مقید می کند صحیح است؟objcommand.Parameters.AddWithValue("@Regio nID", RegionID);
سلام
فکر میکنم بگیم انتساب بهتر باشه البته تفاوتی هم نداره کلمات مهم نیستند ! مهم برنامست که زبونش دات نته نه فارسی یا انگلیسی !!
یه توصیه هم من بکنم که بعد از استفاده از پارامترها، حتما آنرا پاک کنید ( تجربه ام اینو میگه ...)
objcommand.Parameters.Clear
نقل قول:
سلام
می شه بگویید چرا و کجا؟
اول اینکه دقیقاً کی از کد شما استفاده کنم؟
دوم اینکه لطف کنید و تجربتون رو در اختیارم قرار دهید. نکته جالبی است
سلام
من پارامترها را بعد از دستور زیر clear کردم. یعنی با دستور
objcommand.ExecuteNonQuery();
همه چیز به درستی و با منطق کار می کند. ولی هنوز دلیل این کار را نمی دانم.
لطف کنید و بفرمایید چرا باید این کار انجام شود
ممنون
با سلامنقل قول:
جواب اینکه چرا باید پارامترها را پاک کرد: به خاطر اینکه اگر در حافظه پارامتری وجود داشته حذف بشه
محل استفاده این دستور هم قبل از تعریف پارامتر است. در انتهای کار هم که باید دستورات اجرا شوند
سلام
گاهی پیش میاد که پارامتر ها تو حافظه وجود دارن و دفعه ی بعد که Insert میکنید اطلاعات قبلیش اینسرت میشن !
البته زیاد منطقی نیست و همیشه هم پیش نمیاد اما همون گاهی هم که پیش میاد لازمه ازش جلوگیری بشه !
با سلام
سوالی دارم مبنی بر اینکه: چه تفاوتی بین Parameters.AddWithValue و Parameters.Add وجود دارد؟
می توان رفتاری همانند Parameters.Add را با Parameters.AddWithValue هم داشت؟ پس چرا دو گزینه برای این امر وجود دارد؟
با سلام
فکر نمی کنم که سوال، نامفهوم بوده باشه. اگر علت دیگری دارد که دوستان پاسخ نمی دهند، بفرمایند تا بیشتر توضیح دهم.
راستی ، جستجو هم کردم ولی پاسخ را نیافتم.
سلام
به همان دلیل که برای کپی میتوانید...نقل قول:
سوالی دارم مبنی بر اینکه: چه تفاوتی بین Parameters.AddWithValue و Parameters.Add وجود دارد؟
می توان رفتاری همانند Parameters.Add را با Parameters.AddWithValue هم داشت؟ پس چرا دو گزینه برای این امر وجود دارد؟
Ctrl+C را بزنید یا
راست کلیک کنید و Copy را بزنید یا
از منوی Edit گزینه Copy را انتخاب کنید یا
مورد را (مثلاً فایل) را با راست کلیک ماوس گرفته ودر جای جدید رها کنید!
برای اضافه کردن پارامتر یک متد Add داریم که SqlParameter را میگیرد، این متد اصلی است و بقیه متدها خودشان این را اجرا میکنند.
در واقع فر اخوانی ها چنین است:
==========کد://C#
public SqlParameter Add(string parameterName, SqlDbType sqlDbType)
{
return this.Add(new SqlParameter(parameterName, sqlDbType));
}
public SqlParameter Add(string parameterName, object value)
{
return this.Add(new SqlParameter(parameterName, value));
}
public SqlParameter Add(string parameterName, SqlDbType sqlDbType, int size)
{
return this.Add(new SqlParameter(parameterName, sqlDbType, size));
}
public SqlParameter Add(string parameterName, SqlDbType sqlDbType, int size, string sourceColumn)
{
return this.Add(new SqlParameter(parameterName, sqlDbType, size, sourceColumn));
}
public SqlParameter AddWithValue(string parameterName, object value)
{
return this.Add(new SqlParameter(parameterName, value));
}
'VB.Net
Public Function Add(ByVal parameterName As String, ByVal sqlDbType As SqlDbType) As SqlParameter
Return Me.Add(New SqlParameter(parameterName, sqlDbType))
End Function
Public Function Add(ByVal parameterName As String, ByVal value As Object) As SqlParameter
Return Me.Add(New SqlParameter(parameterName, value))
End Function
Public Function Add(ByVal parameterName As String, ByVal sqlDbType As SqlDbType, ByVal size As Integer) As SqlParameter
Return Me.Add(New SqlParameter(parameterName, sqlDbType, size))
End Function
Public Function Add(ByVal parameterName As String, ByVal sqlDbType As SqlDbType, ByVal size As Integer, ByVal sourceColumn As String) As SqlParameter
Return Me.Add(New SqlParameter(parameterName, sqlDbType, size, sourceColumn))
End Function
Public Function AddWithValue(ByVal parameterName As String, ByVal value As Object) As SqlParameter
Return Me.Add(New SqlParameter(parameterName, value))
End Function
ضمناً اجرای متد Clear بعد از اجرای دستور در صورتی واجب میشود که از همین شی Command بعداً هم بخواهید استفاده کنید و در استفاده مجدد بخواهید پارامترها را Add کنید، که نتیجتاً به علت وجود قبلی پارامترها به مشکل برمیخورید.
اگر از یک شی واحد Command بارها در دستورات SQL متعدد استفاده میکنید که هر کدام پارامتر ویژه خود را دارند... انگاه یک قرار داد برای خودتان تعیین کنید!
یعنی...
یا همیشه قبل از Add متد Clear را اجرا کنید تا موارد احتمالی قبلی پاک شوند. (بهتر است)
یا همیشه بعد از اجرای دستور و پایان استفاده جاری از Command متد Clear را اجرا کنید تا برای دفعه بعد خالی و آماده باشد.
در غیر این صورت و اگر یک Command را در جاهای مختلف استفاده مجدد نمیکنید، فقط یک بار پارامترها را در شروع (مثلاً Form_Load) به آن Add کنید و دیگر در هیچ جای کد اینکار را نکنید و برای مقدار دهید پارامترهایی که قبلاً وجود داشته از دستوراتی شبیه این استفاده کنید:
یعنی اگر مطمئن باشید تداخل Add پیش نمی آید نیاز به Clear نیست وگرنه همانطور که کاربر shalineh گفتند برای اطمینان و ثبات باید Clear را انجام دهید.کد:Command.Parameters[0].Value =...
یا
Command.Parameters["paramname"].Value =...
جمیعاً موفق باشید.