Я пытаюсь выбрать данные с помощью подготовленногоStatement и передать эти аргументы, но происходит исключение.java.sql.SQLException: недопустимый индекс столбца
Может ли кто-нибудь мне помочь? Вот мой код.
Connection connection = DBConnection.getConnection();
String query = "select * from integrantes where nome like '?' or rm like '?'";
ArrayList<Integrante> list = new ArrayList<>();
try {
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, ('%' + term + '%'));
preparedStatement.setString(2, ('%' + term + '%'));
JOptionPane.showMessageDialog(null, ((OraclePreparedStatement) preparedStatement).getOriginalSql());
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
list.add(new Integrante(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getInt(4)));
}
} catch(SQLException e) {
JOptionPane.showMessageDialog(null, "Erro ao listar o(s) integrante(s)." + e);
} catch(NullPointerException e) {
JOptionPane.showMessageDialog(null, "Ocorreu um erro inesperado.");
} catch(Exception e) {
JOptionPane.showMessageDialog(null, "Ocorreu um erro no código.");
}
return list;
'select *' - плохой способ структурировать инструкцию SQL, а не перечислять столбцы. Я бы предположил, что ваш запрос не возвращает 4 столбца, но это невозможно узнать. –
выберите id_integrante, nome, rm id_grupo из integrantes; он работает, когда я выполняю в Oracle SQL Developer –
Это 3 столбца не 4 ('id_grupon' является псевдонимом для столбца' rm'). –