MySQL mit prepareStatement den Spaltennamen ansprechen

umme

Neues Mitglied
Hallo!

Ich habe folgendes Problem wozu ich bislang noch nichts finden konnte:

Ich bin gerade dabei, eine kleine App zu basteln mit der ich komfrotabler auf eine MySQL Datenbank, in die ich Termine eintrage zuzugreifen kann, ohne ständig den Weg über die Konsole gehen zu müssen...

Ich habe also einen Eintrag, welcher aus 5 Elementen besteht, das Datum, welches auch gespeichert wird ist eindeutig. In meiner Gui sehe ich alle Termine tabellarisch aufgelistet, alle Elemente in Textfeldern, neben jeder Zeile ist ein Send-Button mit dem ich den jeweiligen geänderten Eintrag abschickn kann. Das Programm macht einen vorher-nachher Vergleich und soll so auswählen was in mein preparedStatement eingetragen werden soll.

Und da ist jetzt as Problem, ich dachte ich könnte einfach

Java:
PreparedStatement updateEvent = s.con.prepareStatement("UPDATE dates SET ? = ? WHERE Date = ?");

benutzen, jedoch scheinen Spaltennamen nicht über Wildcards eingetragen werden zu dürfen, die Exception wirft mir:

Java:
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 ''Info' = 'foo' WHERE Date = '2012-03-19'' at line 1

Ich dachte zunächst dass das Problem bei der Datumsformatierung liegt, das konnte ich dann aber ausschließen als ich nur das allererste ? variabel gelassen habe, die beiden Hochkomma, die der Ausdruck 'Info' bekommt scheinen das Problem zu sein.

Daher jetzt die Frage, gibt es eine set Methode die dafür gebaut wurde? Bislang habe ich setString verwendet.

Vielen Dank schon einmal!
 
nein das geht nicht,

du kannst in Java auch nur Methoden mit fraglichen Werte-Parametern (String = "A", "B" oder "C") bauen, nicht die Variablen an sich oder Klassenattribute offen lassen
Java:
public void prepare(String wert) {
  xy.setName(wert); // ok
}

public void prepare(String wert) {
  xy.set<<<wert>>>("test"); // ??
}

edit:
rein textuell einen SQL-String zusammenbauen kann man natürlich immer, PreparedStatement unterstützt das nicht,
eine String-Bastel-Klassen gingen sicherlich
 
Zuletzt bearbeitet von einem Moderator:
Dann mach es doch einfach so
Java:
updateEvent = s.con.prepareStatement("UPDATE dates SET " + spaltenNamen + " = ? WHERE Date = ?");
 
Das ja Wahnsinn, ich war nur kurz Wäsche abhängen und dann ist hier schon alles voll^^
Danke für die Antworten!

Dann mach es doch einfach so
Java:
updateEvent = s.con.prepareStatement("UPDATE dates SET " + spaltenNamen + " = ? WHERE Date = ?");

Da bin ich natürlich nicht drauf gekommen aber so geht es, danke!
 

Neue Themen


Zurück
Oben