Olá, ao tentar gravar uma conta está dando o seguinte erro:
!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.