Вы не цитируете строковые переменные, которые пытаетесь вставить, поэтому база данных интерпретирует их как имена столбцов, а затем терпит неудачу, так как эти столбцы не существуют.
Учебное пособие, позволяющее избежать как этой проблемы, так и уязвимости для SQL инъекционных атак, заключается в использовании PreparedStatement
:
private static final String INSERT_SQL =
"insert into Hospital (name, city, street, phone) values (?, ?, ?, ?)";
try (ps = con.prepareStatement(INSERT_SQL)) {
ps.setString(1, name);
ps.setString(2, city);
ps.setString(3, street);
ps.setString(4, phone);
ps.executeUpdate();
}