H2 PreparedStatement SELECT * FROM ?

brand

Mitglied
Ich mache grade meine ersten Schritte im Umgang mit Datenbanken und komme bei der Verwendung eines PreparedStatements nicht weiter.

Java:
			PreparedStatement showentries = conn.prepareStatement("SELECT * FROM ?");
			showentries.setString(1, tablename);
			showentries.execute();

Der Code bringt mir folgende Fehlermeldung:
org.h2.jdbc.JdbcSQLException: Syntax Fehler in SQL Befehl "SELECT * FROM ?"; erwartet "identifier"
Syntax error in SQL statement "SELECT * FROM ?"; expected "identifier"; SQL statement:
SELECT * FROM ? [42001-139]


Testweise habe ich den Tabellennamen direkt in den SQL Aufruf geschrieben, wonach die Ausgabe korrekt war. Anscheinend wird also der Tabellenname der an die Methode übergeben wird nicht in das Statement geschrieben.
Ich habe aber keine Idee wo der Fehler liegt.
 
Zuletzt bearbeitet von einem Moderator:
ganz einfach: so gehts nicht, ? nur für Werte wie
WHERE x < ?

weder für Attributnamen, Tabellennamen, noch andere strukturelle Dinge (Subqueries, Operatoren, ..)
 
Java:
PreparedStatement showentries = conn.prepareStatement("SELECT * FROM "+tablename);
showentries.execute();
auf Sicherheit muss da selber geprüft werden, z.b. ob das nur ein Wort ohne Leerzeichen, Klammern oder ähnlich schlimmes ist,
am besten nur ein vorgegebener Wert aus einer ComboBox, gar ein Enum
 

Zurück
Oben