[Java] PreparedStatement mit variablen Spaltennamen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von N0S, 19. Februar 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 19. Februar 2010
    PreparedStatement mit variablen Spaltennamen

    Weiss einer wie ich es hinbekomme, das das funktioniert:

    Code:
    String sql = "UPDATE Tabelle SET ? = ? WHERE ID = '5'";
    
    
     PreparedStatement update = con.prepareStatement(sql);
    
     for (int i = 1; i < data.size(); i++) {
     update.setString(1, spaltennamen[i]);
     update.setString(2, data.get(i).toString());
     update.executeUpdate();
     }
    Das Problem ist wohl, dass preparedstatement daraus sowas macht:
    Code:
    UPDATE Tabelle SET 'Spalte' = 'wert' WHERE ID = '5'
    Bei Spalte sollten die ' weg. Geht das überhaupt?^^
     
  2. 19. Februar 2010
    AW: PreparedStatement mit variablen Spaltennamen

    Das Hochkommata eingefügt werden, liegt (denke ich mal) an der Methode setString, denn ich kann mir nicht vorstellen, dass z.B. bei setInt welche gesetzt werden.

    Ich weißt zwar nicht, wieso dich die Hochkommata stören und ob es nicht eine bessere lösung gäbe, als sie zu entfernen, aber du kannst ja mal eine der anderen set-Funktionen probieren, am ehesten könntest du mit setByte Erfolg haben.

    http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html
     
  3. 19. Februar 2010
    AW: PreparedStatement mit variablen Spaltennamen

    Mich würden die Hochkomma nicht stören, aber der SQL Server mag das gar nicht.

    Andere set Methoden habe ich schon probiert, aber hatte damit kein Erfolg. Bei setInt werden natürlich keine Hochkommas gesetzt.
     
  4. 19. Februar 2010
    AW: PreparedStatement mit variablen Spaltennamen

    den spaltennamen wirst du wohl hardcoden müssen.

    oder versuch mal den spaltennamen in ` ` zu setzen, vielleicht erkennt der treiber das.
    Code:
    String sql = "UPDATE `Tabelle` SET `?` = ? WHERE ID = 5";
     
  5. 19. Februar 2010
    AW: PreparedStatement mit variablen Spaltennamen

    funktioniert auch nicht.

    ach scheiss java Müll, dann mach ichs halt so
    Code:
     for (int i = 2; i < data.size(); i++) {
     sql += ", "+spaltennamen[i]+ " = ?";
     }
    und ich schicke alles in einem großen update Befehl los.

    trotzdem danke für die Hilfe
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.