PDA

View Full Version : سوال: دلیل این syntax error چیست؟



bahar_7
چهارشنبه 23 تیر 1389, 23:53 عصر
Syntax Eroore In From Clause چرا برای این شرط اتفاق افتاده؟

پیغام syntax error in from clause می ده بعد پر کردن فرم توسط کاربر برای dt می ده!


DataTable dt = new DataTable();

dt = dbobject.getDataTable(dbobject.Execute(SQL));

if (dt.Rows.Count > 0)

{

MessageBox.Show(" ");

}

else if (dt.Rows.Count < 0)

}

r00tkit
پنج شنبه 24 تیر 1389, 00:18 صبح
سلام

می شه بگین چه پیغامی می ده

اگه لطف کنین و کد ها تاخل تگ code قرار بدین تا منظم بشه ممنون می شم

beh_develop
پنج شنبه 24 تیر 1389, 08:20 صبح
Syntax Eroore In From Clause چرا برای این شرط اتفاق افتاده؟

پیغام syntax error in from clause می ده بعد پر کردن فرم توسط کاربر برای dt می ده!


DataTable dt = new DataTable();

dt = dbobject.getDataTable(dbobject.Execute(SQL));

if (dt.Rows.Count > 0)

{

MessageBox.Show(" ");

}

else if (dt.Rows.Count < 0)

}

Query که نوشتین احتمال خیلی زیاد ایراد داره ، بررسیش کنین ، شاید درست بشه.

bahar_7
پنج شنبه 24 تیر 1389, 10:53 صبح
Query که نوشتین احتمال خیلی زیاد ایراد داره ، بررسیش کنین ، شاید درست بشه.
یعنی چی؟
می شه لطف کنین دقیق توضیح بدین؟

mehdi.mousavi
پنج شنبه 24 تیر 1389, 10:57 صبح
یعنی چی؟
می شه لطف کنین دقیق توضیح بدین؟

سلام.
منظورشون اینه که متغیر SQL ای که نوشتید رو با چه SQL Statement ای پر کرده اید؟ دستور SQL استفاده شده رو لطفا اینجا قرار بدید. بخش FROM اون دستور ایراد داره.

موفق باشید.

bahar_7
پنج شنبه 24 تیر 1389, 19:27 عصر
سلام.
منظورشون اینه که متغیر SQL ای که نوشتید رو با چه SQL Statement ای پر کرده اید؟ دستور SQL استفاده شده رو لطفا اینجا قرار بدید. بخش FROM اون دستور ایراد داره.

موفق باشید.




DataTable dt = new DataTable();
dt = dbobject.getDataTable(dbobject.Execute(SQL));

if (dt.Rows.Count>0)
{
MessageBox.Show(" ");
}
else if (dt.Rows.Count < 0)
{
string sql = "INSERT INTO tbl_users"
+ "(`first_name`,`last_name`,`student_number`,`userna me`,`password`,`Email_address`, `univercity_id`, `course_id`, `province_id`, `city_id`, `year`) "
+ " values "
+ " (\"" + txtName.Text.ToString() + "\", \"" + txtFamily.Text.ToString() + "\" ," + (txtStudentId.Text.ToString()) + ", \"" + txtUser.Text.ToString() + "\", \"" + txtPass1.Text.ToString() + "\", \"" + txtEmailAddress.Text.ToString() + "\"," + this.cmbUni.SelectedValue.ToString() + "," + this.cmbCourse.SelectedValue.ToString() + "," + this.cmbProvince.SelectedValue.ToString() + "," + this.cmbCity.SelectedValue.ToString() + "," + this.cmbYear.SelectedIndex.ToString() + " )";
dbobject.ExecuteNonQuery(sql);
MessageBox.Show(" ");

}

mehdi.mousavi
پنج شنبه 24 تیر 1389, 20:46 عصر
سلام.
کدی که گذاشته اید INSERT INTO هستش، فکر میکنم کد رو اشتباه کپی کردید... اگر بتونید کل فایل رو اینجا بذارید، خیلی بهتر و دقیقتر میشه کمک کرد. اینطوری واقعا هدر دادن زمان هستش که شما Bit به Bit بخواهید اطلاعات بدید و ...

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

موفق باشید.

FastCode
پنج شنبه 24 تیر 1389, 20:56 عصر
else if (dt.Rows.Count < 0)
}

واقعا" عالیه.
57 نفر این رو تشخیص ندادن.

mehdi.mousavi
پنج شنبه 24 تیر 1389, 23:51 عصر
واقعا" عالیه. 57 نفر این رو تشخیص ندادن.

سلام.
این کد ایشونه (که فجیع تر از این هم میشه نوشتش!):


DataTable dt = newDataTable();
dt = dbobject.getDataTable(dbobject.Execute(SQL));

if (dt.Rows.Count>0)
{
MessageBox.Show(" ");
}
else if (dt.Rows.Count < 0)
{
string sql = "INSERT INTO tbl_users"
+ "(`first_name`,`last_name`,`student_number`,`userna me`,`password`,`Email_address`, `univercity_id`, `course_id`, `province_id`, `city_id`, `year`) "
+ " values "
+ " (\"" + txtName.Text.ToString() + "\", \"" + txtFamily.Text.ToString() + "\" ," + (txtStudentId.Text.ToString()) + ", \"" + txtUser.Text.ToString() + "\", \"" + txtPass1.Text.ToString() + "\", \"" + txtEmailAddress.Text.ToString() + "\"," + this.cmbUni.SelectedValue.ToString() + "," + this.cmbCourse.SelectedValue.ToString() + "," + this.cmbProvince.SelectedValue.ToString() + "," + this.cmbCity.SelectedValue.ToString() + "," + this.cmbYear.SelectedIndex.ToString() + " )";
dbobject.ExecuteNonQuery(sql);
MessageBox.Show(" ");
}


شما این دو خط ابتدایی رو رها کردید (بدون اینکه بدونید مشکل از اونجا هست یا نه، که به احتمال بسیار زیاد هم مشکل از اون دو خطه)، اومدید به این if پیله کردید؟


DataTable dt = newDataTable();
dt = dbobject.getDataTable(dbobject.Execute(SQL));

من وقتی پرسیدم SQL رو چی تعریف کردید، منظورم خطوط قبلی این دو خط بودش.... کدی که درست Decorate نشه، کسی هم رغبتی به خوندنش نداره. در هر حال، مساله به احتمال زیاد به این دو خط فوق برمیگرده، یه دستور SQL ای که FROM Clause داشته باشه...

موفق باشید.

FastCode
جمعه 25 تیر 1389, 00:11 صبح
ایراد رو این بار پیدا کردم.

چرا از

/" استفاده شده؟؟؟؟؟؟
مگه نباید از

'
یا
N'
استفاده کنیم؟

راستی به جای

DataTable dt = new DataTable();
dt = dbobject.getDataTable(dbobject.Execute(SQL));

بهتره بنویسی:

DataTable dt = dbobject.getDataTable(dbobject.Execute(SQL));

mehdi.mousavi
جمعه 25 تیر 1389, 00:28 صبح
سلام.
شما همش یه چیز رو از قلم میندازید. پست اول رو نگاه کنید:

syntax error in from clause

ایراد اصلی اینه که ایشون دنبالشن. حالا این چه ربطی به اون کاراکتر داره؟ (بدون شک اونم موقع کپی کردن تو Editor سایت اشتباه نوشتن، و الا Error ای که میگرفتن این نبود!)

موفق باشید.

bahar_7
جمعه 25 تیر 1389, 01:55 صبح
دوستان این تصویر خطاست:
http://rapidshare.com/files/407167047/barnamenevis.jpg (http://rapidshare.com/files/407167047/barnamenevis.jpg)
تو برنامم همچین دستوری که با from clause باشه ندارم!
قبل اون دو خط هم دستور select هست چیز خاصی نیست.

mehdi.mousavi
جمعه 25 تیر 1389, 10:27 صبح
سلام.
ببینید. یه تصویر گویاتر از 12-13 تا پست هستش. اگر از ابتدا این تصویر رو Attach می کردید، این معما اینقدر حلش زمان نمیبرد. این کاری که میگم رو دقیق انجام بدید و نتیجه اش رو بهم بگید.

اجرای برنامه رو ابتدا متوقف کنید. سپس در Visual Studio روی خط olda.Fill که برنامه روش متوقف میشه، کلید F9 رو بزنید. سپس کلید F5 رو بزنید تا اجرای برنامه شروع بشه. وقتی اجرای برنامه به خط مزبور برسه، برنامه Break میخوره و شما میتونید مقادیر فعلی متغیرها رو بررسی کنید.

سپس کلید SHIFT F9 رو فشار بدید تا پنجره QuickWatch باز بشه. وقتی باز شد، توی قسمت Expression اینو بنویسید:


cmd.CommandText

و کلید Enter رو بزنید. به این ترتیب SQL Statement ای که قرار اجرا بشه و این ایراد رو بوجود میاره خواهید دید. اون string رو بدون کم و کسر از اونجا کپی کرده و اینجا قرار بدید تا بگم دلیل بوجود اومدن ایراد اصلی در برنامه چیه.

موفق باشید.

bahar_7
جمعه 25 تیر 1389, 11:59 صبح
سلام.
ببینید. یه تصویر گویاتر از 12-13 تا پست هستش. اگر از ابتدا این تصویر رو Attach می کردید، این معما اینقدر حلش زمان نمیبرد. این کاری که میگم رو دقیق انجام بدید و نتیجه اش رو بهم بگید.

اجرای برنامه رو ابتدا متوقف کنید. سپس در Visual Studio روی خط olda.Fill که برنامه روش متوقف میشه، کلید F9 رو بزنید. سپس کلید F5 رو بزنید تا اجرای برنامه شروع بشه. وقتی اجرای برنامه به خط مزبور برسه، برنامه Break میخوره و شما میتونید مقادیر فعلی متغیرها رو بررسی کنید.

سپس کلید SHIFT F9 رو فشار بدید تا پنجره QuickWatch باز بشه. وقتی باز شد، توی قسمت Expression اینو بنویسید:


cmd.CommandText

و کلید Enter رو بزنید. به این ترتیب SQL Statement ای که قرار اجرا بشه و این ایراد رو بوجود میاره خواهید دید. اون string رو بدون کم و کسر از اونجا کپی کرده و اینجا قرار بدید تا بگم دلیل بوجود اومدن ایراد اصلی در برنامه چیه.

موفق باشید.
اول از همه تشکر می کنم به خاطر راهنمایی هاتون
cmd.CommandText " select `username`,`Email_address` from tbl_users ( where username= \"star\" or Email_address= \"test@yahoo.com)" string
اینم کدی که تو برنامه نوشتم:


string SQL = " select `username`,`Email_address` from tbl_users "
+ "( where username= \"" + txtUser.Text.ToString() + "\" or Email_address= \"" + txtEmailAddress.Text.ToString() + ")";
dbobject.ExecuteNonQuery(SQL);

FastCode
جمعه 25 تیر 1389, 12:10 عصر
( where
باید بشه:

where (

bahar_7
جمعه 25 تیر 1389, 13:30 عصر
باید بشه:

where (

ه وقتی این کارو انجام می دم این پیغامو میده:


Syntax error in string in query expression


'( username= "star" or Email_address= "test@yahoo.com)'

FastCode
جمعه 25 تیر 1389, 13:33 عصر
oString() + ")";
هم باید بشه:

oString() + "\")";

bahar_7
جمعه 25 تیر 1389, 13:59 عصر
هم باید بشه:

oString() + "\")";

سلام .اول از همه ازتون تشکر می کنم.
اولش درست شد ولی دفعه دوم دیگه دکمه ی ok کار نمی ده و اتفاقی نمی افته! چی کار کنم؟
وقتی هم که به حالت قبل بر می گردونم دوباره پیغام قبلیو می ده!
اما این جوری که فرمودین دکمه تایید کار نمی ده!

bahar_7
جمعه 25 تیر 1389, 15:18 عصر
سلام .اول از همه ازتون تشکر می کنم.
اولش درست شد ولی دفعه دوم دیگه دکمه ی ok کار نمی ده و اتفاقی نمی افته! چی کار کنم؟
وقتی هم که به حالت قبل بر می گردونم دوباره پیغام قبلیو می ده!
اما این جوری که فرمودین دکمه تایید کار نمی ده!
خواهشا کمک کنید

bahar_7
جمعه 25 تیر 1389, 20:08 عصر
کسی نیست کمک کنه؟هر به رستور select ور می رم فایده نداره!همش error می ده.

mehdi.mousavi
جمعه 25 تیر 1389, 22:11 عصر
سلام.
این خط کد رو:


string SQL = " select `username`,`Email_address` from tbl_users " + "( where username= \"" + txtUser.Text.ToString() + "\" or Email_address= \"" + txtEmailAddress.Text.ToString() + ")";


به

string sql = string.Format("SELECT username, Email_address FROM tbl_users WHERE username LIKE N'{0}' OR Email_address LIKE '{1}'", txtUser.Text, txtEmailAddress.Text);

تغییر بدید، احتمالا درست میشه.

موفق باشید.

پاورقی: اصلا این دستور قراره چیکار کنه؟ یعنی چی اگر Username یا Email فلان بود؟ اون OR رو نباید AND بذارید؟ نکته مهم اینه که شما هرگز نباید از Dynamic SQL ها استفاده کنید. برای اینکه از دلیلش آگاه بشید، لطفا جستجو کنید.

bahar_7
جمعه 25 تیر 1389, 23:05 عصر
سلام.
این خط کد رو:


string SQL = " select `username`,`Email_address` from tbl_users " + "( where username= \"" + txtUser.Text.ToString() + "\" or Email_address= \"" + txtEmailAddress.Text.ToString() + ")";


به

string sql = string.Format("SELECT username, Email_address FROM tbl_users WHERE username LIKE N'{0}' OR Email_address LIKE '{1}'", txtUser.Text, txtEmailAddress.Text);

تغییر بدید، احتمالا درست میشه.

موفق باشید.

پاورقی: اصلا این دستور قراره چیکار کنه؟ یعنی چی اگر Username یا Email فلان بود؟ اون OR رو نباید AND بذارید؟ نکته مهم اینه که شما هرگز نباید از Dynamic SQL ها استفاده کنید. برای اینکه از دلیلش آگاه بشید، لطفا جستجو کنید.
نشد حالا این error را می ده!
http://rapidshare.com/files/407332306/test.jpg

cimiarnm
شنبه 26 تیر 1389, 00:58 صبح
دوست عزیز فکر کنم همه عزیزان موافق باشن که مشکل شما دیگه اونقدر دچار تغییرات شده که تقریبا کسی سر از مشکل اصلی شما در نمیاره . لطفا برنامه تون را یکبار اجرا کنید و آخرین کد برنامه یعنی همون کدی که اجرا میکنید و خطایی که میده را بطور کامل در پست قرار یدید ( اگر تونستید برنامه را دیباگ کنید و مقادیر sql command را در لحظه ای که خطا میده رو هم بنویسید نور علی نور میشود ) من منتظرم

mehdi.mousavi
شنبه 26 تیر 1389, 09:55 صبح
سلام.
لطفا در صورت تمایل برنامه رو برام بفرستید تا سریع ایرادش رو رفع کنم. اینطوری خیلی داره وقتم گرفته میشه.

موفق باشید.

farabad
دوشنبه 16 خرداد 1390, 00:32 صبح
برای من هم اتفاق افتاده.هیچکدوم از جواب ها هم مفید نبوده اند.لطفا اگر در این زمینه اطلاع ندارید نظر ندید.با تشکر