PDA

View Full Version : علت ایراد Incorrect syntax near 'e'.



salehvasaleh
جمعه 31 تیر 1390, 02:20 صبح
دوستان من برای نمونه دو تا تکست باکس گذاشتم توی فرم و خواستم با زدن کلید اطلاعات وارد شده در تکست باکس ها ذخیره بشه این هم کدهای رویداد کلید باتن:


string str;
str = "Data Source=.\\SQLEXPRESS;AttachDbFilename=\"C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\STUDENT.mdf\";Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection my_con = new SqlConnection(str);
my_con.Open();
SqlCommand my_cm = new SqlCommand("insert into PERSON(NAME,FAMILY)values('"+textBox1.Text+"','"+textBox2.Text+"'",my_con);
my_cm.ExecuteNonQuery();
my_con.Close();


اما موقع اجرا ارور زیر رو می ده:



Incorrect syntax near 'e'.


ایرادش چی می تونه باشه؟ ممنون میشم راهنماییم کنید

myazdani
جمعه 31 تیر 1390, 09:15 صبح
دوست عزيز
تو نوشتن textbox2 بين حروفش فاصله افتاده.

barnamenevisjma
جمعه 31 تیر 1390, 10:22 صبح
توصیه می کنم بجای اینکار، از PlaceHolderها استفاده کنید:



SqlCommand my_cm = new SqlCommand();
my_cm.CommandText = "INSERT INTO PERSON (NAME,FAMILY) VALUES(@name,@family)";
my_cm.Parameters.AddWithValue("@name", texttextbox1.text);
my_cm.Parameters.AddWithValue("@family", textbox2.text);
my_cm.Connection = my_con;



موفق باشید.

akarsu
جمعه 31 تیر 1390, 10:41 صبح
SqlConnection con1 = new SqlConnection();
con1.ConnectionString = str1;
con1.Open();
SqlCommand cm1 = new SqlCommand();
cm1.CommandText = "insert into PERSON(NAME,FAMILY)" +
"values(N'" + textBox1.Text + "',N'" + textBox2.Text + "')";
cm1.Connection = con1;
cm1.ExecuteNonQuery();
con1.Close();

salehvasaleh
جمعه 31 تیر 1390, 12:53 عصر
توصیه می کنم بجای اینکار، از PlaceHolderها استفاده کنید:



SqlCommand my_cm = new SqlCommand();
my_cm.CommandText = "INSERT INTO PERSON (NAME,FAMILY) VALUES(@name,@family)";
my_cm.Parameters.AddWithValue("@name", texttextbox1.text);
my_cm.Parameters.AddWithValue("@family", textbox2.text);
my_cm.Connection = my_con;



موفق باشید.



ممنون از پاسختون ولی به نظرتون اون کد کجاش ایراد داره که اون ایراد رو می گیره؟

salehbagheri
جمعه 31 تیر 1390, 13:21 عصر
ممنون از پاسختون ولی به نظرتون اون کد کجاش ایراد داره که اون ایراد رو می گیره؟

اون کد مشکلش خیلی واضح بود! پرانتز انتهایی دستور Insert رو نگذاشته بودید!

برای پیشگیری از بروز چنین خطاهایی سعی کنید دستورات SQL رو داخل خود DataBase به صورت Procedure ذخیره کنید!

salehvasaleh
جمعه 31 تیر 1390, 13:31 عصر
اون کد مشکلش خیلی واضح بود! پرانتز انتهایی دستور Insert رو نگذاشته بودید!

برای پیشگیری از بروز چنین خطاهایی سعی کنید دستورات SQL رو داخل خود DataBase به صورت Procedure ذخیره کنید!

ببخشید میشه یکم توضیح بدین منظورتون کدوم پرانتز بود؟ این کدیه که من نوشتم؟


SqlCommand my_cm = new SqlCommand("insert into PERSON(NAME,FAMILY)values('"+textBox1.Text+"','"+t extBox2.Text+"'",my_con);

salehbagheri
جمعه 31 تیر 1390, 14:16 عصر
اوه! مثل اینکه عمق فاجعه زیاده! :لبخند:
کد زیر رو ببینید: کدی که شما نوشتید در صورت جداسازی به این صورته: (پرانتز آخر کجاست؟)


"INSERT INTO PERSON (NAME,FAMILY) VALUES(@name,@family"
اصلاح:
new SqlCommand("insert into PERSON(NAME,FAMILY)values('"+textBox1.Text+"','"+textBox2.Text+"')",my_con);

salehvasaleh
جمعه 31 تیر 1390, 14:34 عصر
اوه! مثل اینکه عمق فاجعه زیاده! :لبخند:
کد زیر رو ببینید: کدی که شما نوشتید در صورت جداسازی به این صورته: (پرانتز آخر کجاست؟)


"INSERT INTO PERSON (NAME,FAMILY) VALUES(@name,@family"
اصلاح:
new SqlCommand("insert into PERSON(NAME,FAMILY)values('"+textBox1.Text+"','"+textBox2.Text+"')",my_con);

درسته ممنون حق با شما بود اما حالا یک مشکل دیگه پرانتز رو که اضافه کردم دیگه از executequery() ایراد نمی گیره اما وقتی برنامه اجرا می شه و داده ای رو وارد می کنم داده توی بانک نشون داده نمی شه داده دومی رو که وارد می کنم داده اولی و دومی هر دو نشون داده می شن یعنی داده های زوج رو که وارد می کنم داده زوج وارد شده و داده قبلیش نشون داده می شن ! ایراد کار کجاست؟ کدی کم هست؟