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!
 
S

SlaterB

Gast
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:

diel2001

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

umme

Neues Mitglied
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!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S HSQLDB PrepareStatement- Falsche query Datenbankprogrammierung 2
P SQL Injection verhindern ohne z.B. prepareStatement Datenbankprogrammierung 2
B createStatement vs. prepareStatement Datenbankprogrammierung 3
S Preparestatement mit join Datenbankprogrammierung 4
B PrepareStatement "Insert into" fehlermeldung Datenbankprogrammierung 13
G PrepareStatement + Datetime Datenbankprogrammierung 9
M MySQL Spaltennamen abfragen Datenbankprogrammierung 2
S Spaltennamen "Mapping" Datenbankprogrammierung 5
Airwolf89 Spaltennamen einer Tabelle zurückgeben lassen Datenbankprogrammierung 9
M Spaltennamen einer MS Access Tabelle ermitteln Datenbankprogrammierung 3
B Spaltennamen von MySQL Datenbank nach Java auslesen Datenbankprogrammierung 10
P HELP! Tabelle sortieren wenn man auf Spaltennamen klickt SQL Datenbankprogrammierung 2
T ResultSet: Spaltennamen ermitteln Datenbankprogrammierung 8
J Spaltennamen ermitteln Datenbankprogrammierung 4
B MySQL bplaced Datenbank mit Java ansprechen Datenbankprogrammierung 11
F BPlaced MySql Datenbank ansprechen Datenbankprogrammierung 5
M MySQL Verbindung zum Server aufbauen ohne DB ansprechen Datenbankprogrammierung 2
C Hibernate Objekte per Index ansprechen Datenbankprogrammierung 4
M Datenbank ansprechen Datenbankprogrammierung 23
Y Hibernate - externe Datenbank zur Laufzeit ansprechen Datenbankprogrammierung 5
M MySQL-Datenbank über Java ansprechen Datenbankprogrammierung 5

Ähnliche Java Themen


Oben