你将不得不至少有一个静态的连接,我相信。例如。如果你的数据库是:
jdbc:mysql://localhost:3306/X
jdbc:mysql://localhost:3306/Y
然后,你必须有到
jdbc:mysql://localhost:3306/
连接在你的启动代码,你将需要手动检查是否存在的所有数据库,如果他们不那么创建它们“T。之后,您可以加载其余的持久性上下文。
例如,关于如何用纯JDBC
public class DBTest {
public static DataSource datasource() {
MysqlDataSource ds = new MysqlDataSource();
ds.setUrl("jdbc:mysql://localhost/?"
+ "user=root");
return ds;
}
public static void main(String[] args) throws SQLException {
DataSource datasource = datasource();
ResultSet executeQuery = datasource.getConnection().createStatement().executeQuery("Show databases;");
List<String> tables = new ArrayList<>();
while(executeQuery.next()) {
tables.add(executeQuery.getString(1));
}
if(!tables.contains("MyNewDB")) {
datasource.getConnection().createStatement().execute("Create database MyNewDB;");
}
}
}
EDIT为此快速片段:
作为正确地指出,上面是一个MySQL溶液。我安装了postgres并做了一个快速适应,所以这对我来说适用于postgres。主要问题是,没有“显示数据库”的postgres。替换(和连接等)修复。工作原理相同:
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Class.forName("org.postgresql.Driver");
Connection connection = null;
connection = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/","artur", "");
ResultSet executeQuery = connection.createStatement().executeQuery("SELECT datname FROM pg_database;");
List<String> tables = new ArrayList<>();
while(executeQuery.next()) {
tables.add(executeQuery.getString(1));
}
if(!tables.contains("MyNewDB")) {
connection.createStatement().execute("Create database MyNewDB;");
}
connection.close();
}
另请注意,jdbc部分(处理连接等)应妥善处理。它给出了正确的想法,我希望:)
你能更具体吗?我没有安装postgres,并认为从sql的角度来看它应该是相同的。 – pandaadb
对:)我写了相同代码的postgres版本。 – pandaadb