Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. What is the syntax error in this SQLite query?

What is the syntax error in this SQLite query?

Scheduled Pinned Locked Moved C#
questionhelpdatabasesqlite
14 Posts 7 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Alex Dunlop

    Do you mean this: INSERT INTO FileInfo (EqpCode, EqpName, FileName) VALUES ('123', 'rty', 'iuo') WHERE NOT EXISTS (SELECT 1 FROM FileInfo IF EqpCode='123') It has the same Error.

    D Offline
    D Offline
    Dave Kreskowiak
    wrote on last edited by
    #5

    Again, there is no such thing as a WHERE clause on an INSERT statement. Remove everything from WHERE to the end of the statement.

    Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles.
    Dave Kreskowiak

    1 Reply Last reply
    0
    • OriginalGriffO OriginalGriff

      First off, don't INSERT like that - always list the columns into which you want to ISNERT values - if someone (very sensibly) adds an ID column for example, it can really mess up your code, even if the ID column is of IDENTITY type so you can't INSERT to it! Listing the columns in the order you supply their values makes your code safer and easier to maintain in future. Secondly, you can't add a WHERE clause to an INSERT operation because it doesn't affect any existing rows - it only ever adds new ones. If you want to do an insert if no matching rows exist use IF[^] or CASE[^] instead. I'd probably use COUNT(...) = 0 instead of EXISTS(...) as well.

      "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!

      A Offline
      A Offline
      Alex Dunlop
      wrote on last edited by
      #6

      I found an easy way. I changed EqpCode column type to UNIQUE and Unique Conflict Clause to REPLACE. :) Then:

      INSERT INTO FileInfo(EqpCode, EqpName, FileName) VALUES ('123', 'test01', 'test02')
      ON CONFLICT(EqpCode) DO UPDATE
      SET EqpName = EXCLUDED.EqpName,
      FileName = EXCLUDED.FileName;

      1 Reply Last reply
      0
      • A Alex Dunlop

        I had used a similar query in C# and it was working well (SQL server CE):

        mycommand.CommandText = $"INSERT INTO MyData([Wo], [EqN], [Code], [Work], [Cost]) SELECT '{DataGridView3.Rows[i].Cells[0].Value}', '{DataGridView3.Rows[i].Cells[1].Value}', '{DataGridView3.Rows[i].Cells[2].Value}', '{DataGridView3.Rows[i].Cells[3].Value}', '{DataGridView3.Rows[i].Cells[4].Value}' WHERE NOT EXISTS (SELECT 1 FROM MyData WHERE [Wo]='{DataGridView3.Rows[i].Cells[0].Value}' AND [Code]='{DataGridView3.Rows[i].Cells[2].Value}')";

        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #7

        Yes, but the WHERE clause is connected to the SELECT, not the INSERT.

        1 Reply Last reply
        0
        • A Alex Dunlop

          query is:

          INSERT INTO FileInfo VALUES ('2021', 'ALex', 'Dunlop') WHERE NOT EXISTS (SELECT 1 FROM FileInfo WHERE EqpCode='2021')

          The table has 3 columns. SQLite says: syntax error near WHERE How can I fix it?

          S Offline
          S Offline
          SeeSharp2
          wrote on last edited by
          #8

          Some have given you the answer but not really shown you what they mean. You can't use WHERE without a SELECT. So, you do something like this:

          INSERT INTO Table1(Field1, Field2, ...)
          SELECT '2021', 'Alex', ...
          WHERE NOT EXISTS (...)

          OriginalGriffO 1 Reply Last reply
          0
          • S SeeSharp2

            Some have given you the answer but not really shown you what they mean. You can't use WHERE without a SELECT. So, you do something like this:

            INSERT INTO Table1(Field1, Field2, ...)
            SELECT '2021', 'Alex', ...
            WHERE NOT EXISTS (...)

            OriginalGriffO Offline
            OriginalGriffO Offline
            OriginalGriff
            wrote on last edited by
            #9

            DevParty wrote:

            You can't use WHERE without a SELECT.

            Um ... you sure?

            UPDATE MyTable SET MyColumn = @MyValue WHERE MyOtherColumn = @MyOtherValue

            "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!

            "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
            "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

            V S 2 Replies Last reply
            0
            • OriginalGriffO OriginalGriff

              DevParty wrote:

              You can't use WHERE without a SELECT.

              Um ... you sure?

              UPDATE MyTable SET MyColumn = @MyValue WHERE MyOtherColumn = @MyOtherValue

              "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!

              V Offline
              V Offline
              Victor Nijegorodov
              wrote on last edited by
              #10

              OriginalGriff wrote:

              DevParty wrote:

              You can't use WHERE without a SELECT.

              Um ... you sure?

              SQL

              Copy Code

              UPDATE MyTable SET MyColumn = @MyValue WHERE MyOtherColumn = @MyOtherValue

              I'm pretty sure he meant an INSERT, clause, not an UPDATE one! :omg:

              OriginalGriffO 1 Reply Last reply
              0
              • V Victor Nijegorodov

                OriginalGriff wrote:

                DevParty wrote:

                You can't use WHERE without a SELECT.

                Um ... you sure?

                SQL

                Copy Code

                UPDATE MyTable SET MyColumn = @MyValue WHERE MyOtherColumn = @MyOtherValue

                I'm pretty sure he meant an INSERT, clause, not an UPDATE one! :omg:

                OriginalGriffO Offline
                OriginalGriffO Offline
                OriginalGriff
                wrote on last edited by
                #11

                What he may have meant and what he said are not necessarily the same thing! :laugh: Particularly with beginners, you have to be accurate - a bald statement like "WHERE only works with SELECT" is not accurate and can confuse.

                "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!

                "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                Richard Andrew x64R 1 Reply Last reply
                0
                • OriginalGriffO OriginalGriff

                  What he may have meant and what he said are not necessarily the same thing! :laugh: Particularly with beginners, you have to be accurate - a bald statement like "WHERE only works with SELECT" is not accurate and can confuse.

                  "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!

                  Richard Andrew x64R Online
                  Richard Andrew x64R Online
                  Richard Andrew x64
                  wrote on last edited by
                  #12

                  OriginalGriff wrote:

                  a bald statement like "WHERE only works with SELECT" is not accurate and can confuse.

                  Would that be a statement without any hair? :-D

                  The difficult we do right away... ...the impossible takes slightly longer.

                  OriginalGriffO 1 Reply Last reply
                  0
                  • Richard Andrew x64R Richard Andrew x64

                    OriginalGriff wrote:

                    a bald statement like "WHERE only works with SELECT" is not accurate and can confuse.

                    Would that be a statement without any hair? :-D

                    The difficult we do right away... ...the impossible takes slightly longer.

                    OriginalGriffO Offline
                    OriginalGriffO Offline
                    OriginalGriff
                    wrote on last edited by
                    #13

                    Wouldn't know - I still have a ponytail. :-D

                    "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!

                    "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                    "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                    1 Reply Last reply
                    0
                    • OriginalGriffO OriginalGriff

                      DevParty wrote:

                      You can't use WHERE without a SELECT.

                      Um ... you sure?

                      UPDATE MyTable SET MyColumn = @MyValue WHERE MyOtherColumn = @MyOtherValue

                      "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!

                      S Offline
                      S Offline
                      SeeSharp2
                      wrote on last edited by
                      #14

                      For inserting data. Stay in context. :doh:

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups