PDA

View Full Version : سلام من می خواستم بدونم این راهی که برای updateاستفاده می کنم درست



mohsen622001
یک شنبه 27 تیر 1389, 00:30 صبح
var ObjupConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=forshgah;Integrated Security=True;Pooling=False");
var Objupcommand = new SqlCommand("Update Set cod,Name,ghkharid,ghforosh,tedadkh Values @code,@Name,@ghkharid,@ghforosh,@tedadkh Where ID="+edit.tx, ObjupConnection);
ObjupConnection.Open();

Objupcommand.Parameters.AddWithValue(@"@cod", textcod.Text);
Objupcommand.Parameters.AddWithValue(@"@name", textname.Text);
Objupcommand.Parameters.AddWithValue(@"@ghkharid", mony.Text);
Objupcommand.Parameters.AddWithValue(@"@ghforosh", monyforosh.Text);
Objupcommand.Parameters.AddWithValue(@"@tedadkh", tedad.Text);
Objupcommand.ExecuteNonQuery();
ObjupConnection.Close();
اگه درسته پس چرا این ایراد می گیرد
Incorrect syntax near the keyword 'Set'.
'cod' is not a recognized SET option.

mostafah110
یک شنبه 27 تیر 1389, 00:39 صبح
دستور update این طوری نوشته میشه:

update tableName set field1 = @f1 , field2 = @f2 ,..., where id = @id

پس بهتره کدت رو این طور بنویسی:

var Objupcommand = new SqlCommand("Update [نام جدول]Set cod = @code,Name = @name,ghkharid = @ghkharid,ghforosh = @ghforoosh,tedadkh = @tedadkh Where ID="+edit.tx, ObjupConnection);

FastCode
یک شنبه 27 تیر 1389, 01:20 صبح
ID="+edit.tx
من تا حالا فکر میکردم که parameter ها برای جلوگیری از SQLINJECTION به کار میرن.
و خطرنام ترین حالت SQLINJECTION حالتیه که بخش آخر دستور قابلیت INJECTION داشته باشه.
پس بهتره که به جاش یه پارامتر دیگه بزارید

Mahdi-563
یک شنبه 27 تیر 1389, 01:47 صبح
به نظر من بهترین راه حل sp هست اونم واسه پروژه های بزرگ

sia_2007
یک شنبه 27 تیر 1389, 05:57 صبح
دوست عزیز؛ کد Update شما فقط به درد سیستم های Single User میخوره؛
و در سیستم های چند کاربره شما برای مسئله کانکارنسی هیچ کاری انجام نداده اید.
مگه این که بگیم رکورد رو Lock کرده اید؛ که روش جالبی نیست.
---
کد دوم خوراک SQL Injection هستش.
---
اصول معماری چند لایه ای هم دیده نشده
---
موفق باشی