PDA

View Full Version : سوال: مشکل در add کردن پارامترها به Command



emperor8778
سه شنبه 07 اردیبهشت 1389, 21:29 عصر
با سلام
سایتی طراحی کردم. توی این سایت یه صفحه دارم که قراره بعد از ثبت نام کاربر، اطلاعات تکمیلی رو از کاربر بگیره و در بانک ذخیره کنه. دو روش کدنویسی ای که قبلا کار می کردم رو تست کردم، ولی با هر دو روش به یه همچین خطایی برخورد کردم :
An SqlParameter with ParameterName '@username' is not contained by this SqlParameterCollection.

کدهایی که نوشتم اینا بودن :


SqlConnection conn = null;
SqlTransaction trans = null;
SqlCommand cmd;

string strcon = "Data Source=MILAD-PC\\SQLEXPRESS;Initial Catalog=gcd;Integrated Security=True";
conn = new SqlConnection(strcon);
conn.Open();
trans = conn.BeginTransaction();
cmd = new SqlCommand();
cmd.Connection = conn;
cmd.Transaction = trans;
cmd.CommandText = "insert into details(username,fname,lname,burn,state,city,addre ss,postcode,tel) values (@username,@fname,@lname,@burn,@state,@city,@addre ss,@postcode,@tel)";

cmd.Parameters.Add("username", SqlDbType.UniqueIdentifier);
cmd.Parameters.Add("fname", SqlDbType.NVarChar, 25);
cmd.Parameters.Add("lname", SqlDbType.NVarChar, 30);
cmd.Parameters.Add("burn", SqlDbType.NVarChar, 18);
cmd.Parameters.Add("state", SqlDbType.NVarChar, 21);
cmd.Parameters.Add("city", SqlDbType.NVarChar, 30);
cmd.Parameters.Add("address", SqlDbType.NVarChar, 250);
cmd.Parameters.Add("postcode", SqlDbType.NVarChar, 11);
cmd.Parameters.Add("tel", SqlDbType.NVarChar, 12);

cmd.Parameters["@username"].Value = Label2.Text;
cmd.Parameters["@fname"].Value = TextBox2.Text;
cmd.Parameters["@lname"].Value = TextBox3.Text;
string day = DropDownList2.SelectedItem.ToString();
string month = DropDownList3.SelectedItem.ToString();
string year = DropDownList4.SelectedItem.ToString();
cmd.Parameters["@burn"].Value = day + " " + month + " " + year;
cmd.Parameters["@state"].Value = DropDownList1.SelectedItem.ToString();
cmd.Parameters["@city"].Value = TextBox6.Text;
cmd.Parameters["@address"].Value = TextBox7.Text;
cmd.Parameters["@postcode"].Value = TextBox8.Text;
cmd.Parameters["@tel"].Value = TextBox9.Text;

cmd.ExecuteNonQuery();
conn.Close();

Response.Redirect("default.aspx");کدهای سری دوم :


SqlConnection con = new SqlConnection("Data Source=MILAD-PC\\SQLEXPRESS;Initial Catalog=gcd;Integrated Security=True");
string q = "insert into details(username,fname,lname,burn,state,city,addre ss,postcode,tel) values (@username,@fname,@lname,@burn,@state,@city,@addre ss,@postcode,@tel)";
SqlCommand command1 = new SqlCommand(q, con);

SqlParameter param1 = new SqlParameter("username", SqlDbType.UniqueIdentifier);
SqlParameter param2 = new SqlParameter("fname", SqlDbType.NVarChar,25);
SqlParameter param3 = new SqlParameter("lname", SqlDbType.NVarChar,30);
SqlParameter param4 = new SqlParameter("burn", SqlDbType.NVarChar,18);
SqlParameter param5 = new SqlParameter("state", SqlDbType.NVarChar,21);
SqlParameter param6 = new SqlParameter("city", SqlDbType.NVarChar,30);
SqlParameter param7 = new SqlParameter("address", SqlDbType.NVarChar,250);
SqlParameter param8 = new SqlParameter("postcode", SqlDbType.NVarChar,11);
SqlParameter param9 = new SqlParameter("tel", SqlDbType.NVarChar,12);

command1.Parameters.Add(param1);
command1.Parameters.Add(param2);
command1.Parameters.Add(param3);
command1.Parameters.Add(param4);
command1.Parameters.Add(param5);
command1.Parameters.Add(param6);
command1.Parameters.Add(param7);
command1.Parameters.Add(param8);
command1.Parameters.Add(param9);


command1.Parameters["@username"].Value = Label2.Text;
command1.Parameters["@fname"].Value = TextBox2.Text;
command1.Parameters["@lname"].Value = TextBox3.Text;
string day = DropDownList2.SelectedItem.ToString();
string month = DropDownList3.SelectedItem.ToString();
string year = DropDownList4.SelectedItem.ToString();
command1.Parameters["@burn"].Value = day + month + year;
command1.Parameters["@state"].Value = DropDownList1.SelectedItem.ToString();
command1.Parameters["@city"].Value = TextBox6.Text;
command1.Parameters["@address"].Value = TextBox7.Text;
command1.Parameters["@postcode"].Value = TextBox8.Text;
command1.Parameters["@tel"].Value = TextBox9.Text;

con.Open();
command1.ExecuteNonQuery();
con.Close();

Response.Redirect("default.aspx");
لطفا اگه ممکنه راهنمایی کنین. حتماً یه جای کار اشکال داره.

اوبالیت به بو
سه شنبه 07 اردیبهشت 1389, 21:56 عصر
ظاهرا اشکال نداره ولی این رو تست کنید:


cd.Parameters.AddWithValue("@userName",lable2.text);

emperor8778
چهارشنبه 08 اردیبهشت 1389, 00:46 صبح
سلام .
با استفاده از اون کدی که دادین ارور قبلی رو بر طرف کردم. اما الان همین که ExecuteNonQuery رو اجرا می کنه این خطا رو می ده :
The variable name '@username' has already been declared. Variable names must be unique within a query batch or stored procedure.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

لطفا راهنمایی کنین.
بازم ممنون.