2012-03-26 2 views
0

Я использую следующий подготовленное заявление:Получение исключения при выполнении подготовленного оператора?

Class.forName("com.mysql.jdbc.Driver"); 
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","root"); 
      String query="select ename from ? "; 
      st=con.prepareStatement(query); 
      st.setString(1,"emp"); 

Здесь я хочу указать название таблицы из пользовательского интерфейса, на коде выше я жёстко имя_таблицы value.when я пытаюсь выполнить этот код я получил следующую excepion.

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 ''emp' where intensive='1000'' at line 1 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) 
     at com.mysql.jdbc.Util.getInstance(Util.java:381) 
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030) 
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) 
     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515) 
     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447) 
     at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951) 
     at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101) 
     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554) 
     at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761) 
     at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1912) 
     at xmlbulkinsertoperation.getConnection.<init>(getConnection.java:42) 
     at xmlbulkinsertoperation.getConnection.main(getConnection.java:70) 
Mar 26, 2012 12:04:30 PM xmlbulkinsertoperation.getConnection <init> 

Я не могу решить эту проблему, пожалуйста, помогите мне?

Благодаря

+0

У вас не может быть подготовленный оператор с именем таблицы в качестве одного из параметров. Объекты (имена таблиц/имена db/имена функций и так далее) не могут быть параметризованы в подготовленных операциях. – Corbin

+0

Спасибо, я понял. –

+0

Не был уверен, что это была проблема, но выложили ее как ответ сейчас, так как это было :). – Corbin

ответ

0

Вы не можете иметь подготовленное заявление с именем таблицы в качестве одного из параметров. Объекты (имена таблиц/имена db/имена функций и так далее) не могут быть параметризованы в подготовленных операциях.

Вам придется либо жестко закодировать имя таблицы, либо объединить ее в запрос.