创建数据库 play java evolutions
Create database play java evolutions
我正在使用 play java 2.5。
我使用以下 java 代码创建了一个数据库。
public OnStartup() throws SQLException {
//demo create database with java code
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/?user=root&password=12345678");
Statement s = con.createStatement();
int Result = s.executeUpdate("CREATE DATABASE recruit3");
}
模块:
public class OnStartupModule extends AbstractModule {
@Override
public void configure() {
bind(OnStartup.class).asEagerSingleton();
}
}
application.conf:
play.modules {
enabled += "be.objectify.deadbolt.java.DeadboltModule"
enabled += modules.CustomDeadboltHook
enabled += modules.OnStartupModule
}
default.driver=com.mysql.jdbc.Driver
default.url="jdbc:mysql://localhost:3306/recruit3"
default.username=root
default.password="12345678"
我的问题是,为什么 运行 网络应用程序创建
error Cannot connect to database [default]
如何解决这个问题,如果我不想使用 mysql workbench 创建数据库。
有什么建议或者不能这样做,请告诉我。
感谢提前。
您的数据库键以 default
开头,而不是 db.default
。正确的语法是这样的:
db {
default {
driver=com.mysql.jdbc.Driver
url="jdbc:mysql://localhost:3306/recruit3"
username=root
password="12345678"
}
}
您已经将 class 设置为热切的单身人士,所以它应该可以工作
除了将数据库密钥移动到 db.default
命名空间外,您还应该将 Database
注入 OnStartup
以访问使用这些属性配置的数据库。
首先,将 Play 的 JDBC 支持添加到 build.sbt
。
libraryDependencies += javaJdbc
如果您已经是 运行 激活者,请确保您使用 reload
命令获取对构建的更改。
更新您的 application.conf
以将数据库配置放入正确的命名空间。
db {
default {
driver=com.mysql.jdbc.Driver
url="jdbc:mysql://localhost:3306/recruit3"
username=root
password="12345678"
}
}
最后,更新 OnStartup
以接收将由 Play 注入的 Database
对象。
import javax.inject.Inject;
import play.db.Database;
public class OnStartup {
@Inject
public OnStartup(final Database db) throws SQLException {
db.withConnection((Connection conn) -> {
final Statement s = con.createStatement();
return s.executeUpdate("CREATE DATABASE recruit3");
});
}
}
这允许您在 application.conf
中一次性配置数据库,而不是将数据库配置硬编码到 class。
您可以找到更多信息here。
我正在使用 play java 2.5。 我使用以下 java 代码创建了一个数据库。
public OnStartup() throws SQLException {
//demo create database with java code
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/?user=root&password=12345678");
Statement s = con.createStatement();
int Result = s.executeUpdate("CREATE DATABASE recruit3");
}
模块:
public class OnStartupModule extends AbstractModule {
@Override
public void configure() {
bind(OnStartup.class).asEagerSingleton();
}
}
application.conf:
play.modules {
enabled += "be.objectify.deadbolt.java.DeadboltModule"
enabled += modules.CustomDeadboltHook
enabled += modules.OnStartupModule
}
default.driver=com.mysql.jdbc.Driver
default.url="jdbc:mysql://localhost:3306/recruit3"
default.username=root
default.password="12345678"
我的问题是,为什么 运行 网络应用程序创建
error Cannot connect to database [default]
如何解决这个问题,如果我不想使用 mysql workbench 创建数据库。
有什么建议或者不能这样做,请告诉我。 感谢提前。
您的数据库键以 default
开头,而不是 db.default
。正确的语法是这样的:
db {
default {
driver=com.mysql.jdbc.Driver
url="jdbc:mysql://localhost:3306/recruit3"
username=root
password="12345678"
}
}
您已经将 class 设置为热切的单身人士,所以它应该可以工作
除了将数据库密钥移动到 db.default
命名空间外,您还应该将 Database
注入 OnStartup
以访问使用这些属性配置的数据库。
首先,将 Play 的 JDBC 支持添加到 build.sbt
。
libraryDependencies += javaJdbc
如果您已经是 运行 激活者,请确保您使用 reload
命令获取对构建的更改。
更新您的 application.conf
以将数据库配置放入正确的命名空间。
db {
default {
driver=com.mysql.jdbc.Driver
url="jdbc:mysql://localhost:3306/recruit3"
username=root
password="12345678"
}
}
最后,更新 OnStartup
以接收将由 Play 注入的 Database
对象。
import javax.inject.Inject;
import play.db.Database;
public class OnStartup {
@Inject
public OnStartup(final Database db) throws SQLException {
db.withConnection((Connection conn) -> {
final Statement s = con.createStatement();
return s.executeUpdate("CREATE DATABASE recruit3");
});
}
}
这允许您在 application.conf
中一次性配置数据库,而不是将数据库配置硬编码到 class。
您可以找到更多信息here。