Mysql Drop Table as PreparedStatement не работает для меня

Этот подготовленный оператор мне кажется правильным SQL.

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

Но когда я запускаю это, я получаю сообщение об ошибке:

Исключение в потоке "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: у вас есть ошибка в синтаксисе вашего SQL; проверьте руководство, соответствующее вашему Версия сервера MySQL для правильного синтаксиса для использования рядом с '' features '' на строка 1 в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:532) в com.mysql.jdbc.Util.handleNewInstance (Util.java:406) в com.mysql.jdbc.Util.getInstance (Util.java:381) в com.mysql.jdbc.SQLError.createSQLException (SQLError.java:1031) в com.mysql.jdbc.SQLError.createSQLException (SQLError.java:956) в com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3558) в com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3490) в com.mysql.jdbc.MysqlIO.sendCommand (MysqlIO.java:1959) в com.mysql.jdbc.MysqlIO.sqlQueryDirect (MysqlIO.java:2109) в com.mysql.jdbc.ConnectionImpl.execSQL (ConnectionImpl.java:2648) в com.mysql.jdbc.PreparedStatement.executeInternal (PreparedStatement.java:2077) в com.mysql.jdbc.PreparedStatement.execute (PreparedStatement.java:1356) at doriangray.db.TestSetup.main (TestSetup.java:62)

Кто-нибудь видит здесь проблему? Я в тупике.

9
задан Kevin 12 February 2012 в 20:29
поделиться