PDA

View Full Version : سوال: خطا در هنگام ثبت



mahlake
سه شنبه 15 اردیبهشت 1394, 08:08 صبح
با سلام خدمت مهندسیت عزیز

من وقتی میخوام عملیات ثبت رو انجام بدم با این خطا روبرو میشم میشه بنده را راهنمایی کنید که چطور میتوانم این خطا را رفع کنم؟
تو نت و این انجمن گشتم اما به جواب نرسیدم...

خطا:
The variable name '@rname' has already been declared. Variable names must be unique within a query batch or stored procedure.\r\nIncorrect syntax near 'rname'

کد:

SqlConnection con = new SqlConnection("Data Source=********;Initial Catalog=*****;User ID=****;Password=*******;Persist Security Info=True;");
SqlCommand com = new SqlCommand("insert into rclient values rname=@rname,frn=@frn,rsh=@rsh,rcn=@rcn,ptlc=@ptlc ,[add]=@add,rtn=@rtn",con);

if (con.State == ConnectionState.Closed)
con.Open();
com.Parameters.AddWithValue("rname",rname.Text.Trim());
com.Parameters.AddWithValue("frn",frn.Text.Trim());
com.Parameters.AddWithValue("rsh",rsh.Text.Trim());
com.Parameters.AddWithValue("rcn",rcn.Text.Trim());
com.Parameters.AddWithValue("ptlc",ptlc.Text.Trim());
com.Parameters.AddWithValue("add",add.Text.Trim());
com.Parameters.AddWithValue("rtn", rtn.Text.Trim());
com.ExecuteNonQuery();
con.Close();
com.Parameters.Clear();

Davidd
سه شنبه 15 اردیبهشت 1394, 09:03 صبح
سلام. پارامترها اونایی هستند که با @ شروع میشن. به صورت زیر دستور اضافه کردن پارامتر برای همه پارامترها اصلاح کنید:
com.Parameters.AddWithValue("@rname",rname.Text.Tri m());

mahlake
سه شنبه 15 اردیبهشت 1394, 09:34 صبح
من مشکلم با این کد حل شد اما خوب نمیدونم خطا برای این بود که مقدار فارسی وارد میکردم که با N حل شد یا برای @ بود که دوست عزیزمون اشاره کردن.. البته الان امتحان میکنم خدمتتون خبر میدم...
بازم ممنون از کمک های خوب شما..

کدی که خودم نوشتم:

SqlCommand com = new SqlCommand("insert into [rclient] (rname,frn,rsh,rcn,ptlc,[add],rtn)values(N'" + rname.Text.Trim() + "',N'" + frn.Text.Trim() + "',N'" + rsh.Text.Trim() + "',N'" + rcn.Text.Trim() + "',N'" + ptlc.Text.Trim() + "',N'" + add.Text.Trim() + "',N'" + rtn.Text.Trim() + "')", con);
try
{
if (con.State == ConnectionState.Closed)
con.Open();
com.ExecuteNonQuery();
con.Close();
com.Parameters.Clear();
}

محمد رضا فاتحی
سه شنبه 15 اردیبهشت 1394, 09:51 صبح
این دو تا صورت مسالش فرق داره سوال اولتون با پارامتر فرستادین سوال دومی به صورت ساده

mahlake
سه شنبه 15 اردیبهشت 1394, 13:52 عصر
سلام. پارامترها اونایی هستند که با @ شروع میشن. به صورت زیر دستور اضافه کردن پارامتر برای همه پارامترها اصلاح کنید:
com.Parameters.AddWithValue("@rname",rname.Text.Tri m());

سلام دوست عزیز کد شما هم ارورو زیر را میده:

Incorrect syntax near 'rname'.

من فکر میکنم که اگه بشه پشت این ها از N استفاده کرد مشکل حل میشه چون من دارم مقدار فارسی میفرستم و این خطا احتمال زیاد برای این هست اما نمیدونم چطور باید این کار رو بکنم اما با کد دوم که گذاشتم چون N پارامتر ها رو با اون میفرستادم مشکل حل شد...

البته اگه برداشتم درست باشه...
لطفا راهنمایی کنید...

mahlake
سه شنبه 15 اردیبهشت 1394, 13:55 عصر
این دو تا صورت مسالش فرق داره سوال اولتون با پارامتر فرستادین سوال دومی به صورت ساده

خوب اولی چطور درست میشه؟ من کد دوم رو بدون N تست کردم ارور Incorrect syntax near 'rname'. رو میداد... خوب حالا کد اول رو با توجه به چیزی که میدونیم چطور درست کنم؟

محمد رضا فاتحی
سه شنبه 15 اردیبهشت 1394, 18:05 عصر
نگاه کن من این کد رو الان نوشتم بدون خطا و درد سر فارسی ثبت کرد نه @ داره نه N
string command = "insert into costumer (name,famil) values(@name,@famil)"; SqlCommand com = new SqlCommand(command, con);
com.Parameters.AddWithValue("name", textBox1.Text);
com.Parameters.AddWithValue("famil", textBox2.Text);
con.Open();
com.ExecuteNonQuery();
con.Close();

یه تست زدم برات اگه برای خودت خطا می ده ببین مشکل از کجاشه

Davidd
سه شنبه 15 اردیبهشت 1394, 18:37 عصر
سلام دوست عزیز کد شما هم ارورو زیر را میده:

Incorrect syntax near 'rname'.

من فکر میکنم که اگه بشه پشت این ها از N استفاده کرد مشکل حل میشه چون من دارم مقدار فارسی میفرستم و این خطا احتمال زیاد برای این هست اما نمیدونم چطور باید این کار رو بکنم اما با کد دوم که گذاشتم چون N پارامتر ها رو با اون میفرستادم مشکل حل شد...

البته اگه برداشتم درست باشه...
لطفا راهنمایی کنید...

من به کوئری دقت نکردم. کوئری شما syntax اشتباست.
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);