Olá, ao tentar gravar uma conta está dando o seguinte erro:
!
Olá, ao tentar gravar uma conta está dando o seguinte erro:
!
Andrey, bom dia.
Por gentileza nos mande o print da sua classe ContaService no metodo abrir e da sua classe ConnectionFactory no metodo recuperarConexao para vermos o que está acontecendo.
Não é necessário print, caso queira copiar e colar e colocar aqui também serve, basta apenas inserir o </> na parte superior com o codigo selecionado.
public void abrir(DadosAberturaConta dadosDaConta) {
var cliente = new Cliente(dadosDaConta.dadosCliente());
var conta = new Conta(dadosDaConta.numero(), cliente);
if (contas.contains(conta)) {
throw new RegraDeNegocioException("Já existe outra conta aberta com o mesmo número!");
}
String sql = "INSERT INTO conta(numero, saldo, cliente_nome, cliente_cpf, cliente_email)" +
"VALUES (?, ?, ?, ?, ?)";
Connection conn;
conn = connection.recuperarConexao();
try {
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setInt(1, conta.getNumero());
preparedStatement.setBigDecimal(2, BigDecimal.ZERO);
preparedStatement.setString(3, dadosDaConta.dadosCliente().nome());
preparedStatement.setString(4, dadosDaConta.dadosCliente().cpf());
preparedStatement.setString(5, dadosDaConta.dadosCliente().email());
preparedStatement.execute();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public class ConnectionFactory {
public Connection recuperarConexao() {
try {
return DriverManager.getConnection("jdbc:mysql://localhost:3306/byte_bank?user=root&password=@Ndrey123");
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
Andrey,
Pelo que eu estou vendo aqui, você provavelmente não está passando no construtor a connection,
O codigo informado pelo professor no construtor é necessário para a conexão
private Connection conn;
public ContaDAO(Connection connection) {
this.conn = connection;
}
o codigo abaixo não deveria estar na sua classe ContaDAO
Connection conn;
conn = connection.recuperarConexao();
Na sua ContaService ai sim você precisa passar a conexão, que no caso ficaria assim:
public void abrir(DadosAberturaConta dadosDaConta) throws SQLException {
Connection conn = connection.recuperarConexao();
new ContaDAO(conn).salvar(dadosDaConta);
}
Tente fazer essas alterações e veja se irá funcionar.