PDA

View Full Version : سوال: مشکل در کد جستجو



Jean Reno
یک شنبه 28 مهر 1387, 14:36 عصر
با سلام من توی فرمم یه بخش جستجو گذاشتم که از طریق یک فیلد جستجو رو انجام می ده
دفعه اول جستجو خیلی خوب و کامل انجام می شه اما وقتی که جستجوی دوم و سوم و ... رو انجام می دهم پیغام خطای زیر رو می ده


The variable name '@id' has already been declared. Variable names must be unique within a query batch or stored procedure.



کد تابع جستجویی رو که نوشتم رو در پایین می زارم






private void Search_data()
{
string Mystr = "SELECT * FROM Aza where Id=@id";

if (textBox7.Text != "")
{
dataSet21.Clear();
SqlCommand mycomm = new SqlCommand(Mystr, sqlConnection1);

mycomm.Parameters.AddWithValue("@id", textBox7.Text);
sqlConnection1.Open();
SqlDataReader sdr = mycomm.ExecuteReader();
if (sdr.Read())
{
sqlConnection1.Close();

sqlDataAdapter1.SelectCommand.Connection = sqlConnection1;
sqlDataAdapter1.SelectCommand.CommandText = Mystr;
sqlDataAdapter1.SelectCommand.Parameters.AddWithVa lue("@id", textBox7.Text);

dataSet21.Clear();
sqlConnection1.Open();
sqlDataAdapter1.Fill(dataSet21, "Aza");
dataGridView1.Refresh();
sdr.Close();
sqlConnection1.Close();
}
else
{
sqlConnection1.Close();
MessageBox.Show("موردی یافت نشد", "خطای کاربر", MessageBoxButtons.OK, MessageBoxIcon.Information);
Show_data();
}

}
else
MessageBox.Show("کد عضویت را برای جستجو وارد کنید", "خطای کاربر", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

naeeme
یک شنبه 28 مهر 1387, 14:53 عصر
بعد از

if (sdr.Read())

mycomm رو dispose کنین

Jean Reno
یک شنبه 28 مهر 1387, 19:18 عصر
بعد از

if (sdr.Read())
mycomm رو dispose کنین

ممنون از پاسخت ولی مشکلم حل نشد

naeeme
دوشنبه 29 مهر 1387, 08:56 صبح
شما همین مشکل رو در sqlDataAdapter1.SelectCommand هم دارین.
این مشکل شما به این دلیل هست که قبلا این پارامتر رو شما به command معرفی کردین و حالا دوباره می خواین اون رو معرفی کنین. چون sqlDataAdapter1.SelectCommand از قبل مونده، پس id یه پارامتر تکراری هست.
یا شما باید sqlDataAdapter1.SelectCommand=null کنین یا اون را dispose کنین.

--------
البته من دلیل اینکه شما sqlDataAdapter1.SelectCommand رو دقیقا مثل myconmm تعریف کردید، متوجه نمیشم! اگه یکی هستن دیگه نیاز به تعریف مجدد در قالب sqlDataAdapter1.SelectCommand نیست.