如何使用JDBC连接到内存数据库中的Play框架?

如何使用JDBC连接到内存数据库中的Play框架?,jdbc,database-connection,playframework,h2,in-memory-database,Jdbc,Database Connection,Playframework,H2,In Memory Database,当配置文件中有db=mem时,我使用Play Framework附带的内存中数据库进行开发 如何使用JDBC连接到此数据库?而不是JPA,这是默认的方式 我已在控制器中尝试过此方法: public static void addToDB() { try { Connection conn = DriverManager.getConnection("jdbc:h2:mem:play"); Statement stmt = conn.createStatem

当配置文件中有
db=mem
时,我使用Play Framework附带的内存中数据库进行开发

如何使用JDBC连接到此数据库?而不是JPA,这是默认的方式

我已在控制器中尝试过此方法:

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();
    }
}
但我收到一条错误消息,需要提供用户名和密码:

org.h2.jdbc.JdbcSQLException: Wrong user name or password [8004-149]
如果我在
/@db
上访问web控制台,则使用用户名
sa
,而不使用密码


现在我通过
/@db
界面登录,并创建了一个表
users

然后,我用一个控制器方法连接到数据库,并使用这个jdbc字符串:
jdbc:h2:mem:play:sa
,然后尝试插入到表
users
,但我收到了以下错误消息:

org.h2.jdbc.JdbcSQLException: Table "USERS" not found; SQL statement:
如何使用JDBC连接到Play框架中的内存H2数据库?

试试:

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

因为正如您所写,“使用的是用户名sa,没有密码。”

DB.getConnection()
,应该可以完成这项工作。

+1我把URL名称与用户名混淆了;谢谢你的澄清。每次我打电话都会有新的连接吗?或者是我不应该关闭的相同吗?这是HibernateSession提供的连接。所以我认为你最好不要关上它。