В ходе изучения SQL возник вопрос - что если я запущу программу, а нужной таблицы не будет? В итоге дошёл до такой функции:
static void initTable(String tableName) {
try (Connection c = getConnection()) {
PreparedStatement preparedStatement = c.prepareStatement("SELECT count(*) FROM information_schema.tables WHERE table_name = ?LIMIT 1;");
preparedStatement.setString(1, tableName);
ResultSet resultSet = preparedStatement.executeQuery();
resultSet.next();
if (resultSet.getInt(1) == 0) {
c.createStatement().execute("CREATE TABLE tutorial." + tableName + " (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, specialty VARCHAR(50) NOT NULL, salary INT NOT NULL, PRIMARY KEY (id));");
System.out.println("Table \"" + tableName + "\" created.");
} else
System.out.println("Table \"" + tableName + "\" exists.");
System.out.println("\n------------------------------\n");
} catch (SQLException e) {
e.printStackTrace();
}
}
Вроде всё работает, но сразу наткнулся на проблему. В моём workbench висит несколько схем и когда я запускаю проверку, она ищет по всем схемам. Если таблицы с нужным названием нет, то создаёт там, где я указал. Но что если в другой схеме уже есть таблица с таким названием... как уточнить поиск до границ нужной схемы?