JDBC, PreparedStatement w Postgresql

JDBC, PreparedStatement w Postgresql
M3
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 11 lat
  • Postów:104
0

Kod jest nastepujacy:

Kopiuj
try {
            Connection conn = DriverManager.getConnection("jdbc:postgresql:usr", "usr", "pass");
            //Pobranie danych z tabeli
            PreparedStatement stmt = conn.prepareStatement("SELECT * FROM ?");
            stmt.setString(1, "books");
            rs = stmt.executeQuery();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }

Dostaje wyjatek:

Kopiuj
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"
  Position: 15
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
	at test.MainPanel.<init>(MainPanel.java:43)
	at test.MainFrame.<init>(MainFrame.java:9)

Ktos wie co jest nie tak?

edytowany 2x, ostatnio: michat34
Koziołek
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:19 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Nie możesz używać PreparedStatements do tworzenia zapytań z niewiadomą nazwą obiektu (tabela, kolumna, sekwencja itp.). Podstawiane mogą być tylko wartości.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
0

Ale to by była sprytna preparacja

Koziołek
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:19 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
0

@Szczery, no nie do końca. Swoją drogą można przygotować zapytanie z wykorzystaniem nazwy tabeli jako parametru w preparedstatement. Wystarczy wykorzystać dynamiczny SQL. http://www.postgresql.org/docs/9.1/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.