6

Uso la base de datos en memoria que viene con Play Framework, cuando tengo db=mem en el archivo de configuración, para el desarrollo.¿Cómo conectarse a la base de datos en memoria de Play Framework utilizando JDBC?

¿Cómo me puedo conectar a esta base de datos usando JDBC? y no el JPA que es la forma predeterminada.

me han tratado con este método en mi controlador:

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(); 
    } 
} 

pero me sale un mensaje de error que tengo que proporcionar un nombre de usuario y contraseña:

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

Si vuelvo a visitar la web- consola en /@db se utiliza el nombre de usuario sa y no hay contraseña.


Ahora registra en medio de la interfaz /@db y crearon una mesa users.

Entonces conectado a la base de datos en un método de control y utilizaron este JDBC-string: jdbc:h2:mem:play:sa y luego trataron de insertar a la mesa users pero me sale este mensaje de error:

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

Cómo debería conectarse a la base de datos H2 en memoria en Play Framework usando JDBC?

Respuesta

8

DB.getConnection(), debería hacer el trabajo.

+0

¿Se devuelve una nueva conexión cada vez que la llamo? o es lo mismo que no debería cerrar? – Jonas

+2

Es la conexión dada por HibernateSession. Así que supongo que es mejor que no lo cierres. – niels

6

Probar:

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

porque como usted escribió, "el nombre de usuario se utiliza sa y sin contraseña."

+0

+1 Estaba confundiendo el nombre de la URL con el nombre de usuario; gracias por aclararlo. – trashgod

Cuestiones relacionadas