خطا هنگام update در sql با سیشارپ
با سلام
دوستان خسته نباشین
من یه برنامه کنسول دارم تو سی شارپ
SqlCommand cmd = new SqlCommand("UPDATE Sharp SET C=@caa,D=@daa,ip=@ip,time=@time Where Name==@Hostnamefull)", ccon);
ccon.Open();
cmd.ExecuteNonQuery();
ccon.Close();
من میخوام با شرط اینکه اگه نام کامپیوترم توی رکورد های جدولم بود اطلاعات جدید رو توی دیتابیس آپدیت کنه
مرسی از دوستان
3 پاسخ
آقا دستت درد نکنه
اصلاح کردم کد رو
جالبه که کد توی sql کار میکنه ولی زمانی که توی سیشارپ اجراش میکنم خطا میده
SqlCommand cmd = new SqlCommand("UPDATE Space SET C=@caa,D=@daa,ip=@ip,time=@time Where Name=@Hostnamefull", ccon);
ccon.Open();
cmd.ExecuteNonQuery();
ccon.Close();
خطاشم اینه
An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
Additional information: Must declare the scalar variable "@caa".
جالبه که متغیر caa درست تعریف شده
اینجوری var caa =13457
ببینید ، کامند شما باید به فرمت sql باشه ، یعنی همین رو توی sql manager اجرا کنید کار کنه. مثلا رشته شما باید اینجوری باشه :
UPDATE Sharp SET C='1',D='2',ip='3',time='4' Where Name='5'
مقایسه کنید و ببینید ،
1- آیا وقتی کدتون اجرا میشه ، مثل رشته من همه ' (آپاستروف) ها خورده ؟
2- توی شرط sql نیاز به == نیست ، همون یه مساوی کار می کنه.
3- ضمنا یه ( هم بعد hostname اضافه گذاشته اید.
پیشنهاد می کنم یه string بگیرید به نام query و اول رشته رو بریزید توش و ببینید دقیقا مثل دستور صحیح sql هست یا نه و بعد بدیدنش به cmd.
نه دیگه ! شما بین آپاستروف نمی زاریش و اصلا هم مقدار دهی نمیشه! همون کاری که گفتم رو بکنید ؛ کل کامند رو بریزیدش تو یک string و ببینید چی دارید به sql میدید.
الان شما دارید بهش می گید c=@caa و اصلا این caa شما با 13457 جایگزین نمیشه ! بعد اون ازش برداشت یه متغیر تو sql رو میکنه می گیه چنین متغیری رو تو sql تعریف نکرده اید.
شما دو راه دارید :
یا کدتون رو شبیه این بنویسید (که پیشنهاد نمیشه) :
SqlCommand cmd = new SqlCommand("UPDATE Space SET C='"+caa+"',D='"+daa+"',ip='"+ip+"',time='"+time+"' Where Name='"+hostFullName+"'", ccon);
یا اینکه ظاهرا می خواید از روش Add parameter استفاده کنید و چند خطی رو جا انداختید :
command.Parameters.Add("@caa", caa);
command.Parameters.Add("@daa", daa);
....