Hm...: Fehler

Hey Leute,

ich arbeite gerade mit Java und möchte eine Spalte in meiner DB füllen.

" bef="update 'csp' set 'zyklischeProduktGruppen'='"+zyklischeP[k][1]+"' where 'CustomerID'='"+dataEid.getString(k)+"'";"

Fehlermeldung:

SQL Fehler You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''csp' set 'zyklischeProduktGruppen'='(G:testGruppe,t:[1,18),wk:0.666666666666666' at line 1
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''csp' set 'zyklischeProduktGruppen'='(G:testGruppe,t:[1,18),wk:0.666666666666666' at line 1
at sun.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2728)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1811)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1725)
at GUI.Main.CSPzyklischeInMySQL(Main.java:125)
at GUI.Main.main(Main.java:85)

Hat jemand von euch eine Idee was den Fehler verursachen könnte? Ich möchte eine Zelle genau dann füllen, wenn ich in einer anderen Spalte eine passende ID entdecke.

mfg

  1. Tach!

    " bef="update 'csp' set 'zyklischeProduktGruppen'='"+zyklischeP[k][1]+"' where 'CustomerID'='"+dataEid.getString(k)+"'";"
    SQL Fehler You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''csp' set 'zyklischeProduktGruppen'='(G:testGruppe,t:[1,18),wk:0.666666666666666' at line 1

    Einen String kann man nicht updaten. Begrenzungszeichen für Bezeichner sind die Backticks (zumindest per Default, nach Umstellung eines Konfigutrationswertes, der irgendwo im Handbuch steht, ist es auch noch das doppelte Anführungszeichen).

    Zudem fehlt, so wie es aussieht, die Beachtung des Kontextwechsels, was eine SQL-Injection-Lücke darstellt.

    dedlfix.

  2. Hi,

    ich arbeite gerade mit Java und möchte eine Spalte in meiner DB füllen.

    " bef="update 'csp' set 'zyklischeProduktGruppen'='"+zyklischeP[k][1]+"' where 'CustomerID'='"+dataEid.getString(k)+"'";"

    Dann schau Dir nicht das Java-Statement an, das das SQL-Statement erzeugt, sondern das erzeugte SQL-Statement.
    Denn so siehst Du vor lauter " und ' und + gar nicht mehr, daß Du für Strings und Spalten-/Tabellennamen dieselben Quotes verwendest ...

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.