Błąd składni w lub blisko "$1" PSQLException

0

Cześć, próbuje stworzyć prosty program z bazą danych w Postgresie. Napisałem metodę createClub, która ma utworzyć tabelę o nazwie wprowadzanej przez użytkownika.

public boolean createClub(String nazwa){
        try {
            PreparedStatement prpStmt = conn.prepareStatement(
                    "CREATE TABLE IF NOT EXISTS ? (ind VARCHAR (10), kraj VARCHAR (40), stadion VARCHAR (40))");
            prpStmt.setString(1, nazwa);
            prpStmt.execute();
        }catch (SQLException e){
            System.err.println("Błąd tworzenia klubu...");
            e.printStackTrace();
            return false;
        }
        return true;
    }

Niestety wywala mi błąd: org.postgresql.util.PSQLException: BŁĄD: błąd składni w lub blisko "$1"
chodzi mu o te jedynke w metodzie setString.
We wszystkich dokumentacjach jest napisane, że tak właśnie działa setString(int parameterIndex, string)
Wie ktoś jak sobie z tym poradzić?
Korzystam z postgresa 9.6
Dodam, że napisałem wcześniej bardzo podobną metode insertZawodnik i wszystkie setString działają tam bez zarzutu

0

Nazwa tabeli nie może być bindowana.

Prawdopodobnie masz ogromny błąd projektowy, skoro w ogóle coś takiego musisz robić (tj. mieć dynamiczne nazwy tabel) - co takiego kombinujesz? :P

0

@Patryk27
bindowana czyli, że nie mogę jej wprowadzać za pomocą setString? No trudno, wymyślę coś innego. Z błędem projektowym bym tu nie panikował, po prostu dopiero uczę się javy (i sql przy okazji) i próbuje różnych rzeczy ;)

0

Przy Twoim podejściu załóżmy, że masz tabelę ustawienia i ktoś chce sobie teraz utworzyć drużynę o nazwie ustawienia ;-)

Warto uczyć się od razu dobrze pisać kod - w Twoim przypadku wygląda na to, że wystarczy dodanie klucza podstawowego w stylu nazwa_klubu, co umożliwi trzymanie wszystkiego w jednej tabeli kluby.

0

Dokładnie to chodziło mi o to, że utworzyłem już sobie tabelę kluby i w niej trzymałem nazwe klubu i kilka informacji. Teraz z kolei wymyśliłem, że chcę przypisywać do klubu jakichś zawodników. W tym celu chciałem tworzyć tabele o nazwach odpowiadającym klubom, ale z tego co zrozumiałem to najlepiej wykorzystać relacje i łączyć zawodników z klubami za pomocą jakiegoś unikalnego id?

0

Tak, dokładnie - stwórz sobie tabelę asocjacyjną kluby_zawodnicy z kolumnami id, id_klubu oraz id_zawodnika.

0

ok, dzięki za wskazówki ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1