Problem med INSERT i SQLite [LÖST]

Här diskuteras programmering och utveckling
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Problem med INSERT i SQLite [LÖST]

Inlägg av Pinky »

Hej!
Jag har, som jag nämnt i en annan tråd, börjat bygga på ett program (en receptdatabas typ), i Java och jag har nu ganska snabbt märkt att mina kunskaper i SQL är lite sisådär :)
Jag försöker köra det här:

Kod: Markera allt

stat.executeUpdate("INSERT INTO categories (category, catID) VALUES ("+value+", "+ID+");");
där value är "Grekiskt" och ID är det högsta nuvarande ID i tabellen +1, och jag får följande fel:

Kod: Markera allt

ALLVARLIG: null
java.sql.SQLException: no such column: Grekiskt
Tycker att det är besynnerligt att den tror att grekiskt är column, när jag så tydligt sagt att column är categories? (Eller har jag fattat fel? :) )

Jag har dock inte haft några problem med den här koden där jag skapar databasen och lägger in några värden:

Kod: Markera allt

 stat.executeUpdate("create table categories (category, catID);");
      PreparedStatement prep = conn.prepareStatement(
          "insert into categories values (?, ?);");

      prep.setString(1, "Snabblagat");
      prep.setString(2, "1");
      prep.addBatch();
      prep.setString(1, "Indiskt");
      prep.setString(2, "2");
      prep.addBatch();
      prep.setString(1, "Husman");
      prep.setString(2, "3");
      prep.addBatch();

      conn.setAutoCommit(false);
      prep.executeBatch();
      conn.setAutoCommit(true);
Att köra SELECT har jag inga problem med heller.
Vad är det jag gör för fel i min insert-rad? :)

Mvh
Martin
diwic
Inlägg: 96
Blev medlem: 27 jan 2008, 12:54
OS: Ubuntu
Utgåva: 20.04 Focal Fossa LTS
Kontakt:

Re: Problem med INSERT i SQLite

Inlägg av diwic »

Det korta svaret är att det behövs extra enkelfnuttar som visas nedan:

Kod: Markera allt

stat.executeUpdate("INSERT INTO categories (category, catID) VALUES ('"+value+"', "+ID+");");
Men koden nedan

Kod: Markera allt

 stat.executeUpdate("create table categories (category, catID);");
      PreparedStatement prep = conn.prepareStatement(
          "insert into categories values (?, ?);");

      prep.setString(1, "Snabblagat");
      prep.setString(2, "1");
...är mycket bättre eftersom den inte är känslig för SQL injection (dvs om någon skriver in konstiga värden i value, innehållande fnuttar, radmatningar och annat som kan ställa till det och i värsta fall, få direkt access till databasen).
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: Problem med INSERT i SQLite

Inlägg av Pinky »

Aaah där ser man :) Tackar!
Skriv svar

Återgå till "Programmering och webbdesign"