SQLITE - Syntax error

Lucaaa

Bekanntes Mitglied
Bei folgendem SQL Befehl:
SQL:
UPDATE "+TABLE_NAME+" SET "+day+"='"+sub+"' WHERE lesson="+lesson+";

Kommt folgende Fehlermeldung:

Code:
UPDATE Schedule_Ein_Stundenplan_Beispiel SET 1='Geschichte' WHERE lesson = 8;
org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (near "1": syntax error)
 at org.sqlite.core.DB.newSQLException(DB.java:909)
 at org.sqlite.core.DB.newSQLException(DB.java:921)
 at org.sqlite.core.DB.throwex(DB.java:886)
 at org.sqlite.core.NativeDB._exec_utf8(Native Method)
 at org.sqlite.core.NativeDB._exec(NativeDB.java:87)
 at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:116)
 at com.ludevstudio.schoolmanager.DataBaseControler.saveSchedule(DataBaseControler.java:248)
 at com.ludevstudio.schoolmanager.Schedule.saveLesson(Schedule.java:235)
 at com.ludevstudio.schoolmanager.Schedule.setLesson(Schedule.java:196)
 at com.ludevstudio.schoolmanager.Schedule.lambda$0(Schedule.java:208)
 at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
 at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
 at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
 at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
 at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
 at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
 at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
 at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
 at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
 at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
 at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
 at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
 at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
 at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
 at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
 at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
 at javafx.event.Event.fireEvent(Event.java:198)
 at javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3470)
 at javafx.scene.Scene$ClickGenerator.access$8100(Scene.java:3398)
 at javafx.scene.Scene$MouseHandler.process(Scene.java:3766)
 at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
 at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
 at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
 at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:394)
 at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
 at java.security.AccessController.doPrivileged(Native Method)
 at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$353(GlassViewEventHandler.java:432)
 at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
 at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:431)
 at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
 at com.sun.glass.ui.View.notifyMouse(View.java:937)
 at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
 at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
 at java.lang.Thread.run(Unknown Source)

Hier die betreffende Methode
Java:
public void saveSchedule(String schedule, String sub, String day,String lesson) {
  schedule = schedule.replace(" ", "_");
  final String TABLE_NAME = "Schedule_"+schedule;
 
 
  try {
   
   Statement stat = connection.createStatement();
   stat.executeUpdate("CREATE TABLE IF NOT EXISTS "+TABLE_NAME+" ("
     + "'Lesson', '1', '2', '3', '4', '5', '6', '7');");
   
   System.out.println("UPDATE "+TABLE_NAME+" SET "+day+"='"+sub+"' WHERE lesson = "+lesson+";");
   stat.executeUpdate("UPDATE "+TABLE_NAME+" SET "+day+"='"+sub+"' WHERE lesson="+lesson+";"); // HIER!!!
   
   
 
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
 }

Kann mir wer helfen ?
 
Code:
CREATE TABLE IF NOT EXISTS table_name ('Lesson', '1', '2', '3', '4', '5', '6', '7')
Ermm... was? Du definierst eine Tabelle mit Spalten deren Namen Strings aus Ziffern sind und die Spalten haben keinen Datentyp. Okay...

Dann musst du auch im UPDATE Statement die Spaltennamen als Strings quoten/maskieren, also:
Code:
"UPDATE "+TABLE_NAME+" SET '"+day+"'='"+sub+"' WHERE lesson = "+lesson+";"
 

Neue Themen


Zurück
Oben