PDA

View Full Version : سوال: دستور آپدیت باوجود primary key



cisco ++
دوشنبه 24 تیر 1392, 18:12 عصر
سلام
دوستان برنامه نویس ،
میدونید وقتی اولین فیلد از جدول بصورت کلید اصلی باشه چطور میشه دستور آپدیت رو روش انجام داد و کد نوشت براش؟؟؟؟

shadi khanum
دوشنبه 24 تیر 1392, 18:24 عصر
update کردن کلید اصلی هم مثل سایر کلیدهاست فقط نباید مقداری که برای آپدیت کردن ستفاده میکنید تکراری باشه

cisco ++
دوشنبه 24 تیر 1392, 18:36 عصر
حتی وقتی کلید اصلی بصورت Auto increment هست ؟؟؟؟؟

danialafshari
دوشنبه 24 تیر 1392, 18:42 عصر
حتی وقتی کلید اصلی بصورت Auto increment هست ؟؟؟؟؟

در هنگام query نوشتن از قسمت set برش دارید و لازم نیست بهش مقدار بدید فقط از where استفاده کنید

cisco ++
دوشنبه 24 تیر 1392, 18:53 عصر
در هنگام query نوشتن از قسمت set برش دارید و لازم نیست بهش مقدار بدید فقط از where استفاده کنید

میشه توضیح بدید؟
این کد منه واسه آپدیت. در textbox1 مقادیر جدول بر اساس کلید اصلی که اولین فیلد جدول هست جستجو شده و روی گریدویو میارم . ولی error syntax میده
نمیدونم کجای کد ایراد داره


objcon.Open();
string sql = "update TblBimar set BimarFName={1},BimarLName={2},BimarTel={3},DateOfv isit={4},bime={5},DrLastName={6},khadamat={7},pard akht={8} where row={0}";
sql = string.Format(sql ,
DGV1 [1,0].Value,
DGV1 [2,0].Value,
DGV1 [3,0].Value,
DGV1 [4,0].Value,
DGV1 [5,0].Value,
DGV1 [6,0].Value,
DGV1 [7,0].Value,
DGV1 [8,0].Value,
int.Parse(textBox1.Text));

objcom.CommandText = sql;
objcom.ExecuteNonQuery();
objcon.Close();

roolinjax
دوشنبه 24 تیر 1392, 19:07 عصر
سلام الان اون فیلد کلیدی که مقدار خودکار میگیره کدومه ؟

cisco ++
دوشنبه 24 تیر 1392, 19:09 عصر
دوستان ، کلید اصلی من تو textbox1 هستش ولی این نکته رو باید بگم که تو sql managment کلید اصلیم بصورت numeric هست ، حالا با int.parse تبدیلش کرده ام مشکل از اون میتونه باشه؟؟؟؟
میدونید چطور میشه نوع numeric رو تبدیل کرد؟؟

cisco ++
دوشنبه 24 تیر 1392, 19:12 عصر
سلام الان اون فیلد کلیدی که مقدار خودکار میگیره کدومه ؟

اسمشو که تو آپدیت نیاورده ام ، فیلد row هستش که مقدارش رو با دستور select در textbox آورده ام

roolinjax
دوشنبه 24 تیر 1392, 19:21 عصر
من روش غیر پارامتری شو می دونم که می تونم بهتون بگم اگر خواستین
توی روشی که من می دونم اصلا نیازی به تبدیل نوع نیست
شما دارید اسکریپت اس کیو ال می نویسید در حالی که تبدیلاتی که می فرمایید مربوط به سی شارپه
در اس کیو ال رشته ها با تک کوتیشن و اعداد بدون تک کوتیشن شناسایی میشن

cisco ++
دوشنبه 24 تیر 1392, 19:25 عصر
من روش غیر پارامتری شو می دونم که می تونم بهتون بگم اگر خواستین
توی روشی که من می دونم اصلا نیازی به تبدیل نوع نیست
شما دارید اسکریپت اس کیو ال می نویسید در حالی که تبدیلاتی که می فرمایید مربوط به سی شارپه
در اس کیو ال رشته ها با تک کوتیشن و اعداد بدون تک کوتیشن شناسایی میشن

ممنون میشم اگه کد روش خودتون رو بنویسید و ببینم. شاید اونو بهتر درک کردم و کارم راحت تر شد

roolinjax
دوشنبه 24 تیر 1392, 19:44 عصر
cmd.CommandText = "update tbl1 set name ='" + _name + "',family ='" + _family + "',riazi=" + _riazi + ",fizik=" + _fizik + " where id =" + id;

دقت کنید که توی این قطعه کد فیلد های نام و فامیلی رشته ای هستند پس تک کوتیشن دارن
اما فیلدهای ریاضی و فیزیک و آیدی از نوع عددی هستن پس تک کوتیشن ندارن
بعد از این خط کافیه اجرا بشه اسکریپت مون با خط زیر :
cmd.ExecuteNonQuery();

cisco ++
دوشنبه 24 تیر 1392, 19:46 عصر
خیلی ممنون از راهنمایی تون
باید روی جداولم اعمال کنم و نتیجه رو ببینم

roolinjax
دوشنبه 24 تیر 1392, 19:50 عصر
خیلی ممنون از راهنمایی تون
باید روی جداولم اعمال کنم و نتیجه رو ببینم

من سالهاست به این روش می نویسم و مشکلی هم تا حالا نداشتم
ضمنا توی این روش اگر خواستین مقدار فیلد تاریخ رو تغییر بدین باید تک کوتیشن بذارید اما برای فیلد های دو مقداری true و false نیازی به کوتیشن نیست
موفق باشید.

shadi khanum
سه شنبه 25 تیر 1392, 08:47 صبح
در ادامه صحبت دوستان با توجه به سوالی که پرسیدین ، اگر فیلدی که میخواین تغییر بدید AutoIncrement باشه نمیتونی دستی تغییرش بدی