PDA

View Full Version : درخواست کمک برای خطای Incorrect syntax near ')'.



samanelf
چهارشنبه 15 خرداد 1392, 18:56 عصر
سلام دوستان
کمـــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــک

Incorrect syntax near ')'.
این خطا برای چی هست ؟
و رو این خط خطا میده از چی میتونه باشه؟

com.ExecuteNonQuery();

اینم دستور insert
string strct = "INSERT INTO users (user_username, user_password, user_name, user_family, )";
strct += "VALUES(N'" + username + "', N'" + password + "', N'" + fname + "', N'" + lname + "')";

aliasghar2
چهارشنبه 15 خرداد 1392, 19:05 عصر
ذستور sql ات مشکل داره اون رو بزار

samanelf
چهارشنبه 15 خرداد 1392, 19:07 عصر
string strct = "INSERT INTO users (user_username, user_password, user_name, user_family, )";
strct += "VALUES(N'" + username + "', N'" + password + "', N'" + fname + "', N'" + lname + "')";


بفرمایین

aliasghar2
چهارشنبه 15 خرداد 1392, 19:30 عصر
بعد از User_Family یه کالون خورده اونو پاک کن
string strct = "INSERT INTO users (user_username, user_password, user_name, user_family )";
strct += "VALUES(N'" + username + "', N'" + password + "', N'" + fname + "', N'" + lname + "')";

matin.soft
چهارشنبه 15 خرداد 1392, 19:30 عصر
دستور اینزرت به شکل زیر می باشد. ببینید با اونی که شما نوشتید هماهنگی داره یا نه.

INSERT INTO table_name
VALUES (value1,value2,value3,...);
یا

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
موفق باشید

مهدی هادیان2
چهارشنبه 15 خرداد 1392, 19:37 عصر
بسم الله الرحمن الرحیم
با سلام
قبل از ( یک , اضافی گذاشته بودید؛ البته برای اطمینان قبل از VALUE هم یک فاصله گذاشتم.
string strct = "INSERT INTO users (user_username, user_password, user_name, user_family)";
strct += " VALUES(N'" + username + "', N'" + password + "', N'" + fname + "', N'" + lname + "')";
موفق باشید.

samanelf
چهارشنبه 15 خرداد 1392, 19:39 عصر
ممنونم دوستان

amir_hamze
دوشنبه 20 آبان 1392, 17:24 عصر
سلام
میشه لطف کنید و از این راه هم جواب بدید
command.CommandText = "INSERT INTO Tbl_Zij (@Radif,@Sh_Khanevar, @Kod_melli, @Tarikh_Tavalod, @Vazeiat_taahol,@jensiat)";

command.Parameters.AddWithValue("@Radif",i++);
command.Parameters.AddWithValue("@Sh_Khanevar", textBox1.Text + "." + textBox2.Text);
command.Parameters.AddWithValue("@Kod_melli", int.Parse(textBox3.Text));
command.Parameters.AddWithValue("@Tarikh_Tavalod","N'"+ textBox4.Text);
command.Parameters.AddWithValue("@Vazeiat_taahol", comboBox1.SelectedIndex);
command.Parameters.AddWithValue("@jensiat", comboBox2.SelectedIndex);


int result = command.ExecuteNonQuery();
MessageBox.Show(result.ToString());

connection.Close();

همون خطایی رو که دوستمون ذکر کرده داده میشه

ordebehesht
دوشنبه 20 آبان 1392, 17:41 عصر
ممکنه نوع ورودیت با نوع ستون جدولت یکی نباشه مثلا تو varcchar بریزی int

FastCode
دوشنبه 20 آبان 1392, 18:59 عصر
سلام
میشه لطف کنید و از این راه هم جواب بدید
command.CommandText = "INSERT INTO Tbl_Zij (@Radif,@Sh_Khanevar, @Kod_melli, @Tarikh_Tavalod, @Vazeiat_taahol,@jensiat)";

command.Parameters.AddWithValue("@Radif",i++);
command.Parameters.AddWithValue("@Sh_Khanevar", textBox1.Text + "." + textBox2.Text);
command.Parameters.AddWithValue("@Kod_melli", int.Parse(textBox3.Text));
command.Parameters.AddWithValue("@Tarikh_Tavalod","N'"+ textBox4.Text);
command.Parameters.AddWithValue("@Vazeiat_taahol", comboBox1.SelectedIndex);
command.Parameters.AddWithValue("@jensiat", comboBox2.SelectedIndex);


int result = command.ExecuteNonQuery();
MessageBox.Show(result.ToString());

connection.Close();

همون خطایی رو که دوستمون ذکر کرده داده میشه
باید بعد از نام table کلمه ی VALUES رو اضافه کنید.در ضمن یک N' اضافه گزاشتی

alireza.tabesh
سه شنبه 21 آبان 1392, 08:13 صبح
بهتره اینجور مواقع از string.format استفاده کنید و همچنین وقتی پارامتر ارسال می کنید بهتره اونهارو Convert.ToString البته قبلش NULL بودن اونهارو باید کنترل کنید که مشکل نوع داده نداشته باشید و همچنین یک بار پارامترهارو Clear کنید که خطای پر بودن داده رو برای مواقعی که حلقه دارید مواجه نشید . و در آخر این که بهتره Ado رو فقط برای تمرین کردن استفاده کنید و اگر قصد تولید برنامه دارید از entity frame work بهترین گزینست .

FastCode
سه شنبه 21 آبان 1392, 08:54 صبح
بهتره اینجور مواقع از string.format استفاده کنید و همچنین وقتی پارامتر ارسال می کنید بهتره اونهارو Convert.ToString البته قبلش NULL بودن اونهارو باید کنترل کنید که مشکل نوع داده نداشته باشید و همچنین یک بار پارامترهارو Clear کنید که خطای پر بودن داده رو برای مواقعی که حلقه دارید مواجه نشید . و در آخر این که بهتره Ado رو فقط برای تمرین کردن استفاده کنید و اگر قصد تولید برنامه دارید از entity frame work بهترین گزینست .
روش شما اصلا جالب نیست.
۱.SQL Injection
۲.Type safety
۳.Overhead/GC pressure
۴.عدم استفده از DBNull که استاندارد این کار هست.

Clear چیه؟

مهدی هادیان2
سه شنبه 21 آبان 1392, 14:16 عصر
بسم الله الرحمن الرحیم

سلام
میشه لطف کنید و از این راه هم جواب بدید
command.CommandText = "INSERT INTO Tbl_Zij (@Radif,@Sh_Khanevar, @Kod_melli, @Tarikh_Tavalod, @Vazeiat_taahol,@jensiat)";

command.Parameters.AddWithValue("@Radif",i++);
command.Parameters.AddWithValue("@Sh_Khanevar", textBox1.Text + "." + textBox2.Text);
command.Parameters.AddWithValue("@Kod_melli", int.Parse(textBox3.Text));
command.Parameters.AddWithValue("@Tarikh_Tavalod","N'"+ textBox4.Text);
command.Parameters.AddWithValue("@Vazeiat_taahol", comboBox1.SelectedIndex);
command.Parameters.AddWithValue("@jensiat", comboBox2.SelectedIndex);


int result = command.ExecuteNonQuery();
MessageBox.Show(result.ToString());

connection.Close();

همون خطایی رو که دوستمون ذکر کرده داده میشه
با سلام
دوستمون پاسختون رو دادند؛ ولی پیشنهاد کلی براتون دارم:
برای این موارد breakPoint بذارید و مرحله به مرحله اجرا رو کنترل کنید و ببینید کوئری نهایی که براتون میسازه چیه؛ همون رو تو محیط SQL SERVER اجرا کنید تا راحت تر متوجه خطا شید.
موفق باشید.