6

Używam bazy danych w pamięci dołączonej do Play Framework, gdy mam db=mem w pliku konfiguracyjnym do rozwoju.Jak połączyć się z bazą danych w pamięci RAM Play za pomocą JDBC?

Jak mogę połączyć się z tą bazą danych za pomocą JDBC? a nie WZP, który jest domyślny.

Próbowałem z tej metody w moim kontrolera:

public static void addToDB() { 
    try { 
     Connection conn = DriverManager.getConnection("jdbc:h2:mem:play"); 
     Statement stmt = conn.createStatement(); 
     stmt.execute(sql); 
     stmt.close(); 
     conn.close(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 

Ale pojawia się komunikat o błędzie, że muszę dostarczyć nazwę użytkownika i hasło:

org.h2.jdbc.JdbcSQLException: Wrong user name or password [8004-149] 

Gdybym odwiedzić WEB- konsola na /@db jest używana nazwa użytkownika sa i bez hasła.


Teraz zalogowany poprzez interfejs /@db i stworzył tabelę users.

Potem podłączony do bazy danych w metodzie kontrolera i użył tego JDBC ciąg: jdbc:h2:mem:play:sa a następnie próbowali wstawić do tabeli users, ale pojawia się komunikat o błędzie:

org.h2.jdbc.JdbcSQLException: Table "USERS" not found; SQL statement: 

Jak należy podłączyć do baza danych H2 w pamięci w Play Framework przy użyciu JDBC?

Odpowiedz

8

DB.getConnection(), powinien wykonać zadanie.

+0

Czy nowe połączenie jest zwracane za każdym razem, gdy je nazywam? czy to jest to samo, czego nie powinienem zamykać? – Jonas

+2

To połączenie podane z HibernateSession. Zakładam więc, że lepiej nie zamykać go. – niels

6

Try "SA nazwa jest używana i nie hasło"

Connection conn = DriverManager.getConnection("jdbc:h2:mem:play", "sa", ""); 

bo jak napisał

+0

+1 Mylę nazwę URL z nazwą użytkownika; dzięki za wytłumaczenie. – trashgod

Powiązane problemy