با سلام
فکر نمی کنم که سوال، نامفهوم بوده باشه. اگر علت دیگری دارد که دوستان پاسخ نمی دهند، بفرمایند تا بیشتر توضیح دهم.
راستی ، جستجو هم کردم ولی پاسخ را نیافتم.
Printable View
با سلام
فکر نمی کنم که سوال، نامفهوم بوده باشه. اگر علت دیگری دارد که دوستان پاسخ نمی دهند، بفرمایند تا بیشتر توضیح دهم.
راستی ، جستجو هم کردم ولی پاسخ را نیافتم.
سلام
به همان دلیل که برای کپی میتوانید...نقل قول:
سوالی دارم مبنی بر اینکه: چه تفاوتی بین 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 =...
جمیعاً موفق باشید.