PDA

View Full Version : Parameters.Clear();



niloofar norouzi
چهارشنبه 27 آذر 1387, 23:27 عصر
سلام
دستور


Parameters.Clear();


برای چه منظوری استفاده می شه؟

اصولاً این دستور بعد از

objcommand.ExecuteNonQuery();

استفاده می شود یا قبل از



objcommand.Parameters.AddWithValue(
"@RegionID", strID);


دانستن این مطلب که چرا از



objcommand.Parameters.Clear();


استفاده می کنند، برایم مهم است.
با تشکر

اوبالیت به بو
یک شنبه 01 دی 1387, 23:28 عصر
ترتيب به اين صورت هستش:


objcommand.Parameters.Clear();
objcommand.Parameters.AddWithValue("@RegionID", strID);
objcommand.ExecuteNonQuery();

به اين دليل كه بايد مقدار پارامترهاي قبلي در صورتيكه در حافظه باقي مانده اند پاك بشن.

afshinb2
سه شنبه 03 دی 1387, 23:34 عصر
لزومی نداره که حتماً از این دستور استفاده کنید.

اگه بخواهیم پارامترهای یک Command رو پاک کنیم ازش استفاده می کنیم.

تو این مثال نیازی به استفاده از Clear نیست:



Using cnn As New SqlConnection("ConnStr")
Using cmd As SqlCommand = cnn.CreateCommand

cmd.CommandText = "SpName"
cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.Add(New SqlParameter("@SomeParam", SqlDbType.Int)).Value = 1

cnn.Open()
cmd.ExecuteNonQuery()
cnn.Close()

End Using
End Using

ولی تو این مثال باید از Clear استفاده کرد، چون پارامترهایی که به دستور قبلی Assign کردیم، هنوز وجود دارند و ما نمی خواهیم که اونها رو به دستور جدید هم Assign کنیم:



Using cnn As New SqlConnection("ConnStr")
Using cmd As SqlCommand = cnn.CreateCommand

'first command
cmd.CommandText = "SpName"
cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.Add(New SqlParameter("@SomeParam", SqlDbType.Int)).Value = 1

cnn.Open()

'executing first cmd
cmd.ExecuteNonQuery()

cmd.CommandText = "SomeOtherSp"

'clearing params collection
cmd.Parameters.Clear()

cmd.Parameters.AddWithValue("2ndCmdParam", "SomeValue")

'executing second cmd
cmd.ExecuteNonQuery()

cnn.Close()

End Using
End Using