نمایش نتایج 1 تا 15 از 15

نام تاپیک: Syntax error in INSERT INTO statement

  1. #1
    کاربر تازه وارد آواتار mohamad2007
    تاریخ عضویت
    آذر 1386
    محل زندگی
    مشهد
    پست
    62

    Tick Syntax error in INSERT INTO statement

    با سلام خدمت دوستان عزیز
    من یک Database با استفاده از Access ساختم که حاوی دو جدول یه نام های Accounts , Taken هست و با استفاده از دستورات مربوطه عملیاتی از قبیل درج و تغییر و حذف رکوردها رو انجام میدم. در مورد درج رکورد در جدول Accounts مشکلی ندارم ولی وقتی می خواهم در جدول Taken رکوردی درج کنم، خطا(Syntax error in INSERT INTO statement) میگیره!!!!
    کدهایی که استفاده کردم به صورت زیر هستش:

    con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;  Data Source=D:\database\Mydatabase.mdb")
    Dim cmd As New OleDbCommand("INSERT INTO Takens("+...+ "')", con)
    ()con.Open
    ()cmd.ExecuteNonQuery
    (da.Fill(ds
    ()con.Close

    خطا:

    از دوستان خواهش می کنم مرا راهنمایی کنند.

  2. #2
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111
    دوست عزیز شما انگار یک ' کم گذاشتید داخل این خط

    Dim cmd As New OleDbCommand("INSERT INTO Takens('"+...+ "')", con)

  3. #3
    کاربر دائمی آواتار maryam_vb
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    230
    سلام
    ساختار دستور insert به صورت زیر است:

    Dim cmd As New OleDb.OleDbCommand("insert into tabelname(field1,filed2,...) values (داده2,داده 1 ,...)", conn)

    مثال:

    Dim comm As New OleDb.OleDbCommand("insert into class (name,family) values ('" & TextBox1.Text & " '
    ,'" & Textbox2.Text & "'
    )", conn)

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    تهران
    پست
    90
    لطفا یک مثال کوچک و مشابه برنامه خود قرار دهید. چون تشخیص مشکل شما به این شکل بسیار مشکل است.ولی در کل من پیشنهاد می کنم به جای اینکه مقادیر را مستقیما در داخل quarry خود درج کنید مانند شکل زیر

    Dim ds As New Data.DataSet
    Dim da As New OleDbDataAdapter
    Dim con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\database\Mydatabase.mdb")
    Dim cmd As New OleDbCommand("INSERT INTO Takens('" & TextBox1.Text & "')", con)
    Using con
    con.Open()
    cmd.ExecuteNonQuery()
    da.Fill(ds)
    End Using


    از پارامتر استفاده کنید. احتمالا اگر سرچ کنید در مورد خواص استفاده از پارامتر مطالب بسیار زیادی پیدا خواهید کرد.
    نمونه ای از استفاده از پارامتر ها در مثال زیر می بینید که بروی کد خود شما انجام شده است
    در ضمن کار دستور da.Fill(ds کاملا نامشخص است. هدف خود را از استفاده از کد در برنامه مشخص کنید. من فقط کدتان را برای درج اطلاعات تغییر می دهم.(پیشنهاد می کنم یک تابع برای درج ویک تابع برای گرفتن اطلاعات داشته باشید تا از بهم ریختگی کد جلوگیری کنید)

    Dim SQL As String = "INSERT INTO Takens(@str1)"
    Dim con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\database\Mydatabase.mdb")
    Dim cmd As New OleDbCommand(SQL, con)
    cmd.Parameters.AddWithValue("str1", TextBox1.Text)
    Using con
    con.Open()
    cmd.ExecuteNonQuery()
    End Using


    تنها نکته قابل ذکر اینکه وقتی از متد (تابع) AddWithValue استفاده می کنید ، باید نوع پارامتر آن یعنی str1 که همان فیلد اول شما در بانک اطلاعاتی است با نوع پارمتر دوم یا همان TextBox1.Text مطابق باشد. یعنی فیلد اول در جدول شما باید از نوع رشته ای باشد تا اجرای این کد از شما خطا نگیرد. در صورت فیلدی مانند ID در جدول دارید که از نوع int است باید متغییر که به متد AddWithValue پاس داده می شود نیز از نوع عددی Integer باشد. یعنی در زمان اضافه کردن این پارامتر کد شما به شکل زیر در می آید

    Dim SQL As String = "INSERT INTO Takens(@ID,@name)"
    Dim con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\database\Mydatabase.mdb")
    Dim cmd As New OleDbCommand(SQL, con)
    Dim intID As Integer = CInt(TextBox1.Text)
    cmd.Parameters.AddWithValue("ID", intID)
    cmd.Parameters.AddWithValue("name", TextBox2.Text)
    Using con
    con.Open()
    cmd.ExecuteNonQuery()
    End Using


    که در این کد من فرض کردم شما جدولی به نام Takens دارید. که در داخل این جدول دو فیلد به نام ID از نوع int و Name از نوع String دارید.

  5. #5
    کاربر دائمی آواتار maryam_vb
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    230
    مشکل فقط تو سطر Insert Into هست.که فیلدها و مقادیر مربوط تعیین نشده.

    اگه طبق ساختار صحیح دستور insert into کد نویسی شه مشکل برطرف میشه.

  6. #6
    کاربر تازه وارد آواتار mohamad2007
    تاریخ عضویت
    آذر 1386
    محل زندگی
    مشهد
    پست
    62
    با تشکر از همه دوستان...
    کدی رو که استفاده کردم رو میزارم تا اشکالاتشو بر طرف کنید.




    Dim cmd As New OleDbCommand("INSERT INTO Takens(account,date,time,paperno,Description,besta nkar,mande) values('" + txtAccount.Text + "','" + Form1.TextBox1.Text + "','" + System.DateTime.Now.Hour.ToString + ":" + System.DateTime.Now.Minute.ToString + "','" + "نقدی" + "','" + txtPrice.Text + "','" + Mande + "')", con)
    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()
    [/LEFT]

    در ضمن جدول Taken از 8 فیلد به نام های Account, Date, Time, PaperNo,Description, Bedehkar, Bestankar, Mande تشکیل شده که Account از نوع Number و بقیه از نوع Text هستند.

  7. #7
    VIP آواتار raravaice
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Tehran
    سن
    40
    پست
    1,944
    محمد جان

    الحاق رشته ها در vb با "&" صورت میگیره و در #C با "+" ظاهرا شما داری از تلفیقی از اینا استفاده میکنی که نمیشه.

    اگر داری با vb برنامت رو مینویسی از و میخوای دو تا string رو به هم متصل کنی از & استفاده کن برادر من.


    "'" & Mande + "'"
    یعنی چی؟ ;)

    -----------------------------------------------------------------
    یه چیز دیگه :

    وقتی میخوای کلمات فارسی رو بفرستی تو بانکت از یه N استفاده کن یعنی :



    N'نقدی'

  8. #8
    کاربر تازه وارد آواتار mohamad2007
    تاریخ عضویت
    آذر 1386
    محل زندگی
    مشهد
    پست
    62
    نقل قول نوشته شده توسط raravaice مشاهده تاپیک
    محمد جان

    الحاق رشته ها در vb با "&" صورت میگیره و در #C با "+" ظاهرا شما داری از تلفیقی از اینا استفاده میکنی که نمیشه.

    اگر داری با vb برنامت رو مینویسی از و میخوای دو تا string رو به هم متصل کنی از & استفاده کن برادر من.


    "'" & Mande + "'"


    یعنی چی؟ ;)
    سلام دوست عزیز
    شما درست می فرمایید...
    من تازه کارم و هنوز تجربه زیادی ندارم و امیدوارم با کمک شما و دیگر دوستان، بتونم از تجربیات ارزشمندتون بهره مند بشم.
    از راهنمایی و تذکرتون متشکرم.

  9. #9
    کاربر تازه وارد آواتار mohamad2007
    تاریخ عضویت
    آذر 1386
    محل زندگی
    مشهد
    پست
    62
    نقل قول نوشته شده توسط raravaice مشاهده تاپیک
    محمد جان

    یه چیز دیگه :

    وقتی میخوای کلمات فارسی رو بفرستی تو بانکت از یه N استفاده کن یعنی :



    N'نقدی'
    این کار رو هم کردم ولی بازم error میگیره.

  10. #10
    VIP آواتار raravaice
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Tehran
    سن
    40
    پست
    1,944
    نوع فیلدهای بانکت رو بگو

    account
    date
    time
    paperno
    Description
    bestankar
    mande

    اینا هر کدوم از چه نوعی هستن؟

  11. #11
    کاربر تازه وارد آواتار mohamad2007
    تاریخ عضویت
    آذر 1386
    محل زندگی
    مشهد
    پست
    62
    نقل قول نوشته شده توسط raravaice مشاهده تاپیک
    نوع فیلدهای بانکت رو بگو

    account
    date
    time
    paperno
    Description
    bestankar
    mande

    اینا هر کدوم از چه نوعی هستن؟
    account=Number
    date=Text
    time=Text
    paperno=Text
    Description=Text
    bestankar=Text
    mande=Text

  12. #12
    VIP آواتار raravaice
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Tehran
    سن
    40
    پست
    1,944
    محمد جا شما 7 تا فیلد داری در صورتی که تو برنامت جوری نوشتی که داده ها برای 6 تا از فیلدها داره میره اگه دقت کنی یه جا توی sql query بین ساعت و دقیقه که از ":"استفاده کردی که مربوط به فیلد زمان هست که یا باید از "," استفاده کنی یا اینکه اطلاعات فیلد date رو یادت رفته وارد کنی.
    برای account که از جنس number هست از کوتیشن استفاده نکن.

    سعی کن account , date ,time رو بزاری توی براکت .

  13. #13
    کاربر تازه وارد آواتار mohamad2007
    تاریخ عضویت
    آذر 1386
    محل زندگی
    مشهد
    پست
    62
    با عرض سلام و تشکر خدمت دوستان
    مشکم حل شد... فقط در بانک اطلاعاتی اسم فیلد های Time,Date رو تغییر دادم.
    فکر می کنم که این دو کلمه در SQL، کلمات کلیدی هستند.
    از همه عزیزانی که وقت گذاشتند و به من کمک کردند، تشکر می کنم.
    در پناه حق.

  14. #14
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: Syntax error in INSERT INTO statement

    نقل قول نوشته شده توسط raravaice مشاهده تاپیک
    محمد جا شما 7 تا فیلد داری در صورتی که تو برنامت جوری نوشتی که داده ها برای 6 تا از فیلدها داره میره اگه دقت کنی یه جا توی sql query بین ساعت و دقیقه که از ":"استفاده کردی که مربوط به فیلد زمان هست که یا باید از "," استفاده کنی یا اینکه اطلاعات فیلد date رو یادت رفته وارد کنی.
    برای account که از جنس number هست از کوتیشن استفاده نکن.

    سعی کن account , date ,time رو بزاری توی براکت .

    آیا فیلد date حتما باید وارد شود
    من این دستور را اجرا میکنم، اما خطا میدهد

    sqlStatment = "INSERT INTO isar (radif,role,code,name,family,fathername,codemelli, nidentity,birthday,dieday,pcent,sex,married,bimety pe,nbime)" & _
    " VALUES(1001,1,'122','a','b','c','092','220','1380/02/02','',0,'s1','m1','sad','5')"
    Data type mismatch in criteria expression.

    مسئله این هست که فیلد dieday معلوم نیست!!!


    و میخوام خالی باشه

  15. #15
    کاربر تازه وارد
    تاریخ عضویت
    دی 1389
    محل زندگی
    يه جاي ايران
    پست
    72

    نقل قول: Syntax error in INSERT INTO statement

    سلام.دوست عزيز منهم مشكلي مثل مشكل شما داشتم.درضمن همه دستورات درج هم كاملا درست بود.
    ولي من نامهاي جدول اكسس ام رو طوري طرح كرده بود كه همين اشكال رو ميگرفت.يعني بعد از 2روز امتحان كردن اخر مشكل رو پيدا كردم.شايد كمتر كسي به اين مشكل برخورده باشه.ولي من باهاش برخوردم.
    توضيح اينكه اسم 1 فيلد من username بود و به خاطر همين نام اشكال سينتكس ميگرفت.
    حالا شما فكر كنم نام فيلدهاتون date و time و account و Description را اگه عوض كنيد مشكل حل بشه.
    راستش خودم گيج شدم كه از اسم فيلد باشه.اما دقيقا مشكل همون بود.
    خواستم تجربه اي كه داشتمو در اختيارتون قرار بدم تا بلكه بدردتون بخوره.
    درصورت حل شدم مشكل حتما پيغام بدين.ممنونم.

تاپیک های مشابه

  1. Syntax error in INSERT INTO statement.
    نوشته شده توسط mohi_ka2 در بخش ASP.NET Web Forms
    پاسخ: 11
    آخرین پست: شنبه 07 مهر 1386, 10:22 صبح
  2. syntax error
    نوشته شده توسط solmaz_zm در بخش VB.NET
    پاسخ: 2
    آخرین پست: پنج شنبه 24 خرداد 1386, 07:57 صبح
  3. Syntax error in FROM clause error '80040e14'
    نوشته شده توسط zizi_zizi69 در بخش Classic ASP
    پاسخ: 3
    آخرین پست: دوشنبه 10 مهر 1385, 17:28 عصر
  4. nested INSERT EXEC statement
    نوشته شده توسط titbasoft در بخش SQL Server
    پاسخ: 3
    آخرین پست: چهارشنبه 21 اردیبهشت 1384, 13:59 عصر
  5. Error Handling Syntax
    نوشته شده توسط najeeb در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: یک شنبه 29 شهریور 1383, 09:21 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •