Mysql Drop Table als PreparedStatement nicht für mich arbeiten

Dieses prepared statement scheint gültige SQL zu mir.

PreparedStatement dropTable = cnx.prepareStatement(
    "DROP TABLE IF EXISTS ?");
dropTable.setString(1, "features");
dropTable.execute();

Aber wenn ich diesen starte, bekomme ich die Fehlermeldung:

Exception in thread "main"
com.mysql.jdbc.Ausnahmen.jdbc4.MySQLSyntaxErrorException: Sie haben eine
Fehler in Ihrer SQL-syntax; Lesen Sie im Handbuch, das entspricht Ihrem
MySQL-server-version für den richtigen syntax zur Verwendung in der Nähe von "features" an
Zeile 1 an
Sonne.reflektieren.NativeConstructorAccessorImpl.newInstance0(Native-Methode)
bei
Sonne.reflektieren.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
bei
Sonne.reflektieren.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
bei java.lang.reflektieren.Konstruktor.newInstance(Constructor.java:532)
bei com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at
com.mysql.jdbc.Util.getInstance(Util.java:381) bei
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1031) an
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) an
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558) bei
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490) bei
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) an
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109) an
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2648) an
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2077)
bei
com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1356)
bei doriangray.db.TestSetup.main(TestSetup.java:62)

Erkennt jemand hier das problem? Da bin ich überfragt.

  • Ich bin nicht in Java, sondern alle vorbereiteten Anweisungen Bibliotheken weiß ich nicht unterstützen dynamische Tabellennamen.
InformationsquelleAutor Kevin | 2012-02-12
Schreibe einen Kommentar