У вас должно быть хотя бы одно соединение, которое я считаю статичным. Например. если ваши базы данных:
jdbc:mysql://localhost:3306/X
jdbc:mysql://localhost:3306/Y
Тогда вы будете иметь подключение к
jdbc:mysql://localhost:3306/
В коде запуска, вам нужно будет вручную проверить, существуют ли все базы данных, а затем создать их, если они надевают «т. После этого вы можете загрузить остальные контексты персистентности.
Например, быстрый фрагмент о том, как сделать это с чистым 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