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?
Czy nowe połączenie jest zwracane za każdym razem, gdy je nazywam? czy to jest to samo, czego nie powinienem zamykać? – Jonas
To połączenie podane z HibernateSession. Zakładam więc, że lepiej nie zamykać go. – niels