ORA-00903: Ungültiger Tabellenname in PreparedStatement

Ich habe eine Methode, die eine Abfrage mit einer Liste von QueryParameters für die vorbereitete Anweisung ausführt. DasHelperConnection undQueryParameter sind nur kleine java bohnen und sollten auf der grundlage der selbsterklärend seingetSie sehen hier. Ich versuche aselect * from dual mit, statt aselect * from ? bei dem dieQueryParameter ist ein STRING-Typ und der Wert istdual. Ich bekomme jedoch einejava.sql.SQLSyntaxErrorException: ORA-00903: invalid table name Error. Mein Code und die Ausgabe sind unten. Wie geht's?

public static ResultSet executeQuery(HelperConnection helperConnection, String query, QueryParameter... params) throws SQLException {
  System.out.println("The connection is: " + helperConnection.getJdbcURL());
  System.out.println("The query is: " + query);
  if (params.length > 0) {
    System.out.println("The QueryParameters are:");
    System.out.println("\t" + StringHelper.splitBy(StringHelper.newline + "\t", params));
  }
  Connection conn = helperConnection.createOracleConnection();
  PreparedStatement pstmt = conn.prepareStatement(query);
  for (int i = 1; i <= params.length; i++) {
    QueryParameter param = params[i - 1];
    switch (param.getType()) {
      //Other cases here
      case QueryParameter.STRING:
        pstmt.setString(i, param.getValue());
        break;
    }
  }

  ResultSet rs = pstmt.executeQuery();
  conn.commit();
  return rs;
}

Ausgabe:

The connection is: //.....My connection
The query is: select * from ?
The QueryParameters are:
    String - dual

Antworten auf die Frage(1)

Ihre Antwort auf die Frage