Olá Fabiano, como vai?
Pelo que vi na imagem que você compartilhou, o erro que está ocorrendo é um java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0)
. Esse erro geralmente indica que você está tentando definir um parâmetro em uma PreparedStatement
, mas a consulta SQL não possui parâmetros definidos.
Vamos revisar o método listarPorNumero
no arquivo ContaDAO
. Certifique-se de que você está definindo os parâmetros corretamente na PreparedStatement
. Vou exemplificar como isso deve ser feito:
public Conta listarPorNumero(Integer numeroConta) {
Conta conta = null;
String sql = "SELECT numero, saldo, nome, cpf, email FROM conta WHERE numero = ?";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, numeroConta); // Definindo o parâmetro da consulta SQL
try (ResultSet resultSet = ps.executeQuery()) {
if (resultSet.next()) {
Integer numero = resultSet.getInt(1);
BigDecimal saldo = resultSet.getBigDecimal(2);
String nome = resultSet.getString(3);
String cpf = resultSet.getString(4);
String email = resultSet.getString(5);
DadosCadastroCliente dadosCadastroCliente = new DadosCadastroCliente(nome, cpf, email);
Cliente cliente = new Cliente(dadosCadastroCliente);
conta = new Conta(numero, saldo, cliente);
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
return conta;
}
No exemplo acima, a consulta SQL possui um parâmetro (?
) que é definido usando ps.setInt(1, numeroConta);
. Certifique-se de que todos os parâmetros na sua consulta SQL estão sendo definidos corretamente.
Além disso, revise outros métodos que utilizam PreparedStatement
para garantir que todos os parâmetros estejam sendo definidos corretamente, como o método realizarDeposito
. Caso não resolva, peço que compartilhe todo o seu código via GitHub ou Drive do Google.
Espero ter ajudado e bons estudos!