PDA

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



m.bibjan
جمعه 26 اسفند 1390, 10:36 صبح
سلام
شاید این مشکل یا تاپیک تکراری باشه ولی از دیشب تا الان دارم میگردم چیزی پیدا نکردم
من واسه ابدیت کردن جدولم از این کد استفاده کردم
SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = @"server = (local) ; database=dbsql; integrated security = true";
SqlCommand Cmd = new SqlCommand();
Cmd.Connection = Conn;
//"update sql name=@name,family=@family,dadname=@dadname,idbasij i=@idbasiji where idpublic=@idpublic";
//
Cmd.CommandText =" UPDATE sql SET name = " + " '" + txtname.Text + "'family=" + " '" + txtfamily.Text + "'" + "dadname = '" + txtdadname.Text + "'" + " idbasiji'" + txtidbasiji.Text + "'" + " WHERE idpublic = " + "'" + txtidpublic.Text + "'";
Cmd.Parameters.AddWithValue("@ name",txtname.Text);
Cmd.Parameters.AddWithValue("@ family",txtfamily.Text);
Cmd.Parameters.AddWithValue("@ dadname", txtdadname.Text);
Cmd.Parameters.AddWithValue("@ idpublic", txtidpublic.Text);
Cmd.Parameters.AddWithValue("@ idbasiji", txtidbasiji.Text);
Conn.Open();
Cmd.ExecuteNonQuery();
Conn.Close();
حالا اولا این کد درست هست؟
دوما اگه درسته این ارورش ماله چیه؟
Incorrect syntax near 'nvarchar'.
Incorrect syntax near ''.
به نظرتون چیکار میشه کرد؟
اگه توی تاپیکی این مشکل حل شده ارجاع بدین ممنون میشم.

Hybrid
جمعه 26 اسفند 1390, 10:52 صبح
سلام ، اینجوری تغییرش بده ببین درست میشه :


SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = @"server = (local) ; database=dbsql; integrated security = true";
SqlCommand Cmd = new SqlCommand();
Cmd.Connection = Conn;
//"update sql set name=@name,family=@family,dadname=@dadname,idbasij i=@idbasiji where idpublic=@idpublic";
//
Cmd.CommandType = CommandType.Text;
Cmd.CommandText = "update sql set name=@name,family=@family,dadname=@dadname,idbasij i=@idbasiji where idpublic=@idpublic";
Cmd.Parameters.AddWithValue("@name", txtname.Text);
Cmd.Parameters.AddWithValue("@family", txtfamily.Text);
Cmd.Parameters.AddWithValue("@dadname", txtdadname.Text);
Cmd.Parameters.AddWithValue("@idbasiji", txtidbasiji.Text);
Cmd.Parameters.AddWithValue("@idpublic", txtidpublic.Text);

Conn.Open();
Cmd.ExecuteNonQuery();
Conn.Close();

**اون فاصله ای که داخل idbasiji وارد میشه رو پاک کن .

m.bibjan
جمعه 26 اسفند 1390, 11:11 صبح
سلام
این ارور رو میده
Incorrect syntax near 'nvarchar'.
چیکار میشه کرد واسه این مشکل؟

Hybrid
جمعه 26 اسفند 1390, 12:12 عصر
کلا میشه بگین نوع کل فیلدها رو جدولتون چیه ؟

مثلا name از چه نوعیه و...

m.bibjan
جمعه 26 اسفند 1390, 12:14 عصر
nvarchar50

Sirwan Afifi
جمعه 26 اسفند 1390, 12:21 عصر
idbasiji و idpublic رو nvarchar تعریف کردی.
اگر نه باید تبدیل به عدد بشه.

Cmd.Parameters.AddWithValue("@idbasiji",Int32.Parse(txtidbasiji.Text));
Cmd.Parameters.AddWithValue("@idpublic",Int32.Parse(txtidpublic.Text));

m.bibjan
جمعه 26 اسفند 1390, 12:28 عصر
ممنون
ببخشید حالا ارورش شده این
Input string was not in a correct format.

AliSaeedi_v
جمعه 26 اسفند 1390, 12:49 عصر
سلام با این روش بنویس خیلی راحت تره...
اشکال توی قرار گیری تک کوتیشن هاست دوست عزیز...

string sql = "update customer set name=N'{1}',phone=N'{2}',address=N'{3}',groupid={4 } where id={0}";
sql = string.Format(sql, this.cid, this.name, this.phone, this.address, this.groupid);
cmd.commandtext=sql;

MortezaGity
جمعه 26 اسفند 1390, 12:53 عصر
از کدوم خط خطا میگره اگه از خط زیر خطا میگیره احتمالا داخل textbox رشته ای قرار داره که نمیتونه به int32 تبدیل بشه
2
Cmd.Parameters.AddWithValue("@idbasiji",Int32.Pars e(txtidbasiji.Text));

m.bibjan
جمعه 26 اسفند 1390, 13:18 عصر
تغییرات شما رو اعمال کردم
نتیجه اش همون ارور بود.
ولی بخاطر
Cmd.Parameters.AddWithValue("@idbasiji",Int32.Pars e(txtidbasiji.Text));
Cmd.Parameters.AddWithValue("@idpublic",Int32.Pars e(txtidpublic.Text));
این دو میگه
Input string was not in a correct format.

AliSaeedi_v
جمعه 26 اسفند 1390, 13:37 عصر
شما که همه ی فیلداتون از نوع nvarchar هستن که نباید به عدد تبدیل کنید.همون برنامتون درسته فقط باید جای تک کوتیشنهارو درست کنین...

m.bibjan
جمعه 26 اسفند 1390, 13:59 عصر
ببخشید کل جریان ازین قراره حالا هرچی به نظرتون میرسه که دچار اشکال هستش بگین تا مشکلم حل بشه ممنون
البته ببخشید وقتتون رو گرفتم

AliSaeedi_v
جمعه 26 اسفند 1390, 14:10 عصر
دوست عزیز دیگه پارامترهایی که به cmd فرستادی نیاز نیست...از بعد از sql=string... تا قبل از conn.open پاک کن و فقط بنویس cmd.commandtext=sql;
اونجایی هم که رشته sql رو فرمت کردی چرا 5تا پارامتز فرستادی؟؟

m.bibjan
جمعه 26 اسفند 1390, 14:27 عصر
ببخشید بابت پارامترها حواسم نبود.فقط این نحوه کد نوشتن استاندارد هست ؛ واسه ابدیت کردن.
اگه هست پس چرا دوباره گیر داده بخاطر این ارور
Incorrect syntax near 'nikoee'.
nikoee مقداریه که وارد کردم توی تکس باکس نام خانوادگی
اینقدر ارور های الکی میگیره که ادم دیگه روش نمیشه تاپیک بزنه اینجا.شرمنده

Sirwan Afifi
جمعه 26 اسفند 1390, 14:39 عصر
دوست عزیز همه Spaceهای بعد از کاراکتر N رو حذف کن مشکلت حل میشه.
N '{0}'
به اینصورت بنویس :
N'{0}'

Sirwan Afifi
جمعه 26 اسفند 1390, 14:42 عصر
این کد هیچ مشکلی نداره :

SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = @"server = (local) ; database=dbsql; integrated security = true";
SqlCommand Cmd = new SqlCommand();
Cmd.Connection = Conn;
Cmd.CommandType = CommandType.Text;
string sql = "update sql set name=N'{0}',family=N'{1}',dadname=N'{2}',idbasiji= '{3}' where idpublic='{4}'";
sql = string.Format(sql, txtname.Text, txtfamily.Text, txtdadname.Text, txtidbasiji.Text, txtidpublic.Text);
Cmd.CommandText = sql;
Conn.Open();
Cmd.ExecuteNonQuery();
Conn.Close();

m.bibjan
جمعه 26 اسفند 1390, 14:49 عصر
خیلی ممنون،خلاف قوانین سایته ولی حیفم اومد فقط دکمه تشکر رو بزنم.
حلال کنید لطفا.