PDA

View Full Version : Syntax error in INSERT INTO statement.



mohi_ka2
جمعه 06 مهر 1386, 14:47 عصر
با سلام به دوستان برنامه نویس.
مشکلی در دستور insert برای من پیش آمده که نمی توانم برطف کنم. من دستور SQL ی به این صورت نوشته ام :


INSERT INTO News_Bank (ID,Title,Container(Text),Date) VALUES ('txtID','txtTitle','txtText','cld_TDate')

و در
OleDbCommand قرار داده ام و با دستور

cmmd.ExecuteNonQuery();
آن را اجرا می کنم ولی باز هم این خطا را به من می دهد :
Syntax error in INSERT INTO statement.
در صورتی که من لیست تمام متغیر های داخل جدول و نیز مقادیری را که باید به انها داده شود را قید کرده ام و نمی دانم مشکل در کجاست ؟؟؟!!!:ناراحت:

hamed_bostan
جمعه 06 مهر 1386, 14:54 عصر
این container(text) چیه این وسط؟

mohi_ka2
جمعه 06 مهر 1386, 15:33 عصر
این container(text) چیه این وسط؟
این اسم یکی از فیلدهامه . چطور مگه ؟ نکنه این پرانتز مشکل ایجاد می کنه؟

Behrouz_Rad
جمعه 06 مهر 1386, 17:57 عصر
آره... مشکل ایجاد می کنه. نام فیلدت نباید حاوی پرانتز باشه. یا اگه باشه فکر می کنم اگر در براکت قرار بگیره مشکلی نباشه.

موفق باشید.

mohi_ka2
جمعه 06 مهر 1386, 18:39 عصر
آره... مشکل ایجاد می کنه. نام فیلدت نباید حاوی پرانتز باشه. یا اگه باشه فکر می کنم اگر در براکت قرار بگیره مشکلی نباشه.

موفق باشید.
سلام
ممنونم اینو برداشتم ولی یه اررور دیگه ای می ده به خاطر استفاده از

cmmd.ExecuteNonQuery();
اررورش هم اینه :
Data type mismatch in criteria expression.
می شه لطفا راهنماییم کنین :افسرده: . ممنون

hamed_bostan
جمعه 06 مهر 1386, 18:54 عصر
دوست من شما در قسمت اول فقط میتونید نام ستون ها تون رو بنویسید . این(text) این وسط چیه؟ شما تو نام فیلدت پرانتز به کار بردی؟؟؟
تو قسمت اول نام ستونهات رو بیار و در قسمت بعدی مقادیر

mohi_ka2
جمعه 06 مهر 1386, 20:18 عصر
دوست من شما در قسمت اول فقط میتونید نام ستون ها تون رو بنویسید . این(text) این وسط چیه؟ شما تو نام فیلدت پرانتز به کار بردی؟؟؟
تو قسمت اول نام ستونهات رو بیار و در قسمت بعدی مقادیر
سلام من اصلاحش کردم.ولی برای این دستور هم به مشکل بر می خورم !!!!:متفکر:


INSERT INTO News_Bank (ID,Title,AllText,Date) VALUES ('txtID','txtTitle','txtText','cld_TDate')

و اررورش هم اینو :
Syntax error in INSERT INTO statement.
من واقعا موندم من با PHP همین دستور رو به کار می بردم ولی مشکل نداشتم . حالا کل کدم رو می ذارم
لطفا راهنماییم کنید :


protectedvoid Button1_Click(object sender, EventArgs e)
{
DateTime cld_TDate = Calendar1.TodaysDate;
OleDbConnection conn = newOleDbConnection("provider=Microsoft.jet.OleDb.4.0;Data Source=D:\\Documents and Settings\\MDS\\My Documents\\Visual Studio 2005\\WebSites\\Ghohestan\\App_Data\\News_DataBase .mdb");
OleDbCommand cmmd = newOleDbCommand("INSERT INTO News_Bank (ID,Title,AllText,Date) VALUES ('txtID','txtTitle','txtText','cld_TDate')", conn);
conn.Open();
cmmd.ExecuteNonQuery();
//if (cmmd.ExecuteScalar>0)
Response.Redirect("Main_Page.aspx");
conn.Close();
}

hamed_bostan
جمعه 06 مهر 1386, 21:00 عصر
دوست من access بعصی وقتا گیرهای عجیب غریبی میده
دستورت رو به این شکل تصحیح کن :


OleDbCommand cmmd = newOleDbCommand("INSERT INTO News_Bank ([ID],Title,AllText,[Date]) VALUES ('txtID','txtTitle','txtText','cld_TDate')", conn);

ضمنا فیلد id رو اگر از نوع auto number باشه نمی تونی توش درج کنی

mohi_ka2
جمعه 06 مهر 1386, 21:18 عصر
دوست من access بعصی وقتا گیرهای عجیب غریبی میده
دستورت رو به این شکل تصحیح کن :


OleDbCommand cmmd = newOleDbCommand("INSERT INTO News_Bank ([ID],Title,AllText,[Date]) VALUES ('txtID','txtTitle','txtText','cld_TDate')", conn);

ضمنا فیلد id رو اگر از نوع auto number باشه نمی تونی توش درج کنی
ممنون .
اما باز هم این اررور رو می ده :
Data type mismatch in criteria expression.
در ضمن فیلد id هم از نوع auto number نیست.
من واقعا گیج شدم ضمن اینکه کارم عجله ای هم هست

hamed_bostan
جمعه 06 مهر 1386, 21:26 عصر
http://www.xlinesoft.com/asprunner/docs/error_data_type_mismatch_in_criteria_expression.ht m


ببینم نوع فیلد date رو از نوع date/time گرفتی؟ به لینک بالا یه نگاه بنداز . امیدوارم به دردت بخوره
موفق باشی

mohi_ka2
شنبه 07 مهر 1386, 07:28 صبح
ببینم نوع فیلد date رو از نوع date/time گرفتی؟ به لینک بالا یه نگاه بنداز . امیدوارم به دردت بخوره
موفق باشی
سلام
بله نوع فیلدم date/time هست مشکل ایجاد می کنه؟ این فیلد رو که از لیست حذف کردم اضافه می کنه ولی نه اون مقادیری رو که توی تکست باکس ها هست ! بلکه خود مقادیر داخل ' ' رو میریزه در فیلدهای یک رکورد جدید! مثلا tID رو در فیلد ID می ریزه !
حتی وقت خاصیت AutoPostBack مقدار True یا False داشه باشه!:افسرده:

mohi_ka2
شنبه 07 مهر 1386, 10:22 صبح
سلام.
با تشکر فراوان از همه دوستانی که راهنماییم کردن ، من راه حلشو پیدا کردم و گفتم اینجا بذارم شاید کسی این تاپیک رو دنبال می کنه یا بعدا ببینه و به دردش بخوره !
من مشکلم با این کد حل شد و کاملا درست و بدون خطا اجرا می کنه:


OleDbCommand cmmd = newOleDbCommand("INSERT INTO News_Bank ([ID],Title,AllText,[Today_Date]) VALUES (?,?,?,?)", conn);
conn.Open();
cmmd.Parameters.Add("@ID", txtID.Text);
cmmd.Parameters.Add("@Title", txtTitle.Text);
cmmd.Parameters.Add("@AllText", txtText.Text);
cmmd.Parameters.Add("@Date", Calendar1.TodaysDate);
cmmd.ExecuteReader();

یعنی در اصل به این کدها احتیاج بوده :


cmmd.Parameters.Add("@ID", txtID.Text);
cmmd.Parameters.Add("@Title", txtTitle.Text);
cmmd.Parameters.Add("@AllText", txtText.Text);
cmmd.Parameters.Add("@Date", Calendar1.TodaysDate);

باز هم از همه دوستان ممونم و منتظر شنیدن نظرات بهتر و کارا تر هستم