2012-03-26 21 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"); 

私は、次のexcepionを得、このコードを実行しようとvalue.when上記のコードで、私はテーブル名をハードコードしている、UIからテーブル名を提供したいです。

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> 

私はこの問題を解決できません。お手伝いをしてください。あなたは、パラメータの1つとして、テーブル名でプリペアドステートメントを持つことができません

おかげ

+0

パラメータの1つとしてテーブル名を持つ準備済みの文を使用することはできません。エンティティ(テーブル名/ db名/関数名など)は、プリペアドステートメントでパラメータ化することはできません。 – Corbin

+0

ありがとう、私はそれを得た。 –

+0

それが問題であるかどうかは分かりませんでしたが、それ以来答えとして投稿しています:) – Corbin

答えて

0

。エンティティ(テーブル名/ db名/関数名など)は、プリペアドステートメントでパラメータ化することはできません。

テーブル名をハードコードするか、クエリに連結する必要があります。

関連する問題