Сложно сказать, в чем ваша проблема, по коду и сообщению. Было бы полезно, если бы вы опубликовали SQL для создания таблицы.
Мне не нравится то, что я вижу в вашем SQL. Я бы сказал, что это должна быть таблица SHIP, а не множественное число.
Вы не следуете стандартам Java-кодирования.
Вы не закрываете свои ресурсы в области действия метода.
Я бы написал что-то вроде этого:
private static final String SELECT_YEAR_LAUNCHED_SQL = "select yearLaunched from Ship where name = ?";
public int getShipYearLaunched(Connection connection, String shipName) throws SQLException {
int yearLaunched = 0;
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = connection.prepareStatement(SELECT_LAUNCHED_SQL);
st.setString(1, ship);
rs = st.executeQuery();
// Is there more than one row for a given ship name? If yes, you should get a List<Integer> and append the value returned to the List
while (rs.hasNext()) {
yearLaunched = rs.getInt(1);
}
} finally {
close(rs);
close(ps);
}
return yearLaunched;
}