PDA

View Full Version : مشکل با دستور ویرایش



eletcomp
چهارشنبه 19 آذر 1393, 12:44 عصر
با سلام بر اساتید
لطفا بگید مشکل این کد چی هست که هی ارور مربوط به گرامر میده!!! به 2 سبک نوشتم ولی باز همان ارور را میده!!
من میخوام فقط فیلدusername و per را اپدیت کنم!!!

http://www.uplooder.net/img/image/23/fc254773c55d2256ddd27c40726766df/er33.JPG

http://www.uplooder.net/img/image/57/a1260bb2d47ff61fe55e9e4b13a5c4f1/er2.JPG



SqlCommand cmd = new SqlCommand();
cmd.Parameters.Clear();
cmd.Connection = con;
string sql = "update Tbl_User set username='{0}',per='{1}' where id={2}";
sql = string.Format(sql,txtuser.Text, txtper.Text,txtid.Text);
cmd.CommandText = sql;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("اطلاعات ویرایش شد");






string str_sql = "update Tbl_User set usernmae='" + txtuser.Text + "',per='" + txtper.Text + "' where id=" + txtid.Text;
SqlCommand cmd = new SqlCommand(str_sql, con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("اطلاعات ویرایش شد");




سپاس

حسین.کاظمی
چهارشنبه 19 آذر 1393, 13:14 عصر
سلام
نوع فیلدت تو جدول چی هست؟؟؟

eletcomp
چهارشنبه 19 آذر 1393, 13:22 عصر
nvarchar 50 هست!

jpjpjp
چهارشنبه 19 آذر 1393, 13:26 عصر
این طوری بنویس ببین درست میشه.

"UPDATE tblPhoneBook SET [name]='" + txtName.Text + "' , [family]='" + txtFamily.Text + "'

حسین.کاظمی
چهارشنبه 19 آذر 1393, 13:37 عصر
یعنی این چهارنوع فیلد از نوع nvarchar50 هست؟؟؟؟

eletcomp
چهارشنبه 19 آذر 1393, 13:39 عصر
ممنون :ولی درست نشد!!!نمیدانم چرا این ارور را میده!! واقعا عجیب هست!!

eletcomp
چهارشنبه 19 آذر 1393, 13:41 عصر
یعنی این چهارنوع فیلد از نوع nvarchar50 هست؟؟؟؟
id از نوع int هست ولی ان 3 تا بله!

Share & Learn
چهارشنبه 19 آذر 1393, 13:45 عصر
سلام
تو دومین کدتون که username رو اشتباه تایپ کردید

string str_sql = "update Tbl_User set usernmae='" + txtuser.Text + "',per='" + txtper.Text + "' where id=" + txtid.Text;


حالا اینجوری بنویسید، ببینید چی می شه


cmd = new SqlCommand("update Tbl_User set username=@username,per=@per where id=@id", con);

cmd.Parameters.AddWithValue("@username", txtuser.Text);
cmd.Parameters.AddWithValue("@per", txtper.Text);
cmd.Parameters.AddWithValue("@id", txtid.Text);

eletcomp
چهارشنبه 19 آذر 1393, 14:16 عصر
ممنون دوست عزیز: من کد شما نوشتم: ارور نمیده ولی اپدیت هم نمی کنه!!!
یک سئوال: توی دستور اپدیت ما باید یک فیلد به عنوان کلید اصلی داشته باشیم حتما!! مثل id !!!؟؟ id را طوری تنظیم کردم که خودش اتومات عدد بگیره و زیاد بشه!!


SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd = new SqlCommand("update Tbl_User set username=@username,per=@per where id=@id", con);
cmd.Parameters.AddWithValue("@username", txtuser.Text);
cmd.Parameters.AddWithValue("@per", txtper.Text);
cmd.Parameters.AddWithValue("@id", txtid.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("اطلاعات ویرایش شد");

حسین.کاظمی
چهارشنبه 19 آذر 1393, 14:19 عصر
این کدم امتحان کن ببین درست میشه
cmd = new SqlCommand("update Tbl_User set username=@username,per=@per where id=@id", con);

cmd.Parameters.AddWithValue("@username",dbtype.int).value = txtuser.Text;


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

eletcomp
چهارشنبه 19 آذر 1393, 14:26 عصر
ممنون دوست عزیز: لطفا در مورد کد ات توضیح بده: جای datatype چی بزارم!! یک مثال میتونی بزنی!؟
سپاس

حسین.کاظمی
چهارشنبه 19 آذر 1393, 14:36 عصر
ممنون دوست عزیز: لطفا در مورد کد ات توضیح بده: جای datatype چی بزارم!! یک مثال میتونی بزنی!؟
سپاس

در مورد سوالت بله باید یک فیلد کلید اصلی داشته باشی تا بتونی براساس همون فیلد خذف یا ویرایش کنی.
ببین مثلا من توی جدولم یک فیلد از نوع عددی دارم int خب توی دستورات اس کیوال ام توی سی شارپ اگر از نوع پارامتری بخام کار کنم بعد از تعریف پارامتر میام با استفاده از دستور datatype نوع فیلد تو بانکمو اینجا تعریف میکنم مثل datatype.int-datatype.stringو... بعدش خاصیت value هر پارامتری را برابر با خاصیت مقدار ورودی شی مورد نظرم میکنم.
توجه داشته باش که نوع datatype.string (رشته ایی است) فیلد تو بانکمم باید از نوع رشته ایی باشه
امیدوارم که متوجه شده باشی و مشکلت حل شده باشه
موفق باشی

حسین.کاظمی
چهارشنبه 19 آذر 1393, 14:39 عصر
شرمندم اشتباه گفتم به جای datatype بزن dbtype
عذر میخام از دوستان

eletcomp
چهارشنبه 19 آذر 1393, 14:48 عصر
ممنون دوست عزیز:چرا ان کد برای username نوشتی!!! فیلد id از نوع int هست!!


cmd.Parameters.AddWithValue("@username",dbtype.int).value = txtuser.Text;

حسین.کاظمی
چهارشنبه 19 آذر 1393, 14:52 عصر
ممنون دوست عزیز:چرا ان کد برای username نوشتی!!! فیلد id از نوع int هست!!


cmd.Parameters.AddWithValue("@username",dbtype.int).value = txtuser.Text;

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

مهرداد صفا
چهارشنبه 19 آذر 1393, 22:07 عصر
[QUOTE=eletcomp;2145239]یک سئوال: توی دستور اپدیت ما باید یک فیلد به عنوان کلید اصلی داشته باشیم حتما!![QUOTE]

سلام.
اول اینکه این سوال مربوط به TSQL میشه و باید در تالار خودش مطرح بشه.
بعد اینکه: نه حتما بلکه معمولا.
ممکنه بخواهید تمام مقادیر ستون COLUMN1 رو به NULL تغییر بدید:

UPDATE TABLE1
SET COLUMN1 =NULL;