70٪ تخفیف ویژه جشنواره تابستانه توسینسو
پایان تخفیف تا:
مشاهده دوره‌ها
0

خطا هنگام 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();

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


مرسی از دوستان

پرسیده شده در 1401/01/06 توسط

3 پاسخ

0

آقا دستت درد نکنه

اصلاح کردم کد رو 


جالبه که کد توی 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

پاسخ در 1401/01/06 توسط
1

ببینید ، کامند شما باید به فرمت 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.



پاسخ در 1401/01/06 توسط
1

نه دیگه ! شما بین آپاستروف نمی زاریش و اصلا هم مقدار دهی نمیشه! همون کاری که گفتم رو بکنید ؛ کل کامند رو بریزیدش تو یک 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);
....

پاسخ در 1401/01/06 توسط

پاسخ شما