テーブル名を変数にしてpreparedStatementで挿入させる方法

String sql = "select count(*) from ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, TABLE_NAME)
resultSet = stmt.executeQuery();

なんてことをしたい時があるかもしれませんが、このSQLだとMySQLでは

SELECT count(*) FROM  'hoge'

みたいなことになってエラーになります。(MySQLの場合、テーブル名はシングルクォーテーションではなくバッククオートで囲む必要が有るため)

preparedStatementはカラムの値のために使用するため、テーブル名には使えません。

http://stackoverflow.com/questions/11312155/how-to-use-a-tablename-variable-for-a-java-prepared-statement-insert