Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

método com erro?!!

o método lista está descrito na página da video aula sobre DAO da maneira abaixo. Na quarta linha, de onde vem o objeto 'con' se nada é passado como parâmetro?

public List<Produto> lista() throws SQLException {
        List<Produto> produtos = new ArrayList<>();
        String sql = "select * from Produto";

        try (PreparedStatement stmt = con.prepareStatement(sql)) {
            stmt.execute();
            try (ResultSet rs = stmt.getResultSet()) {
                while (rs.next()) {
                    int id = rs.getInt("id");
                    String nome = rs.getString("nome");
                    String descricao = rs.getString("descricao");
                    // COMO CRIAR UM PRODUTO??
                }
            }
        }
        return produtos;
    }
2 respostas
solução!

Oi Marcos, tudo bom?

Acredito que fique mais claro olhando a classe toda:

package br.com.caelum.jdbc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import br.com.caelum.jdbc.modelo.Categoria;
import br.com.caelum.jdbc.modelo.Produto;

public class ProdutosDAO {

    private final Connection con;

    public ProdutosDAO(Connection con) {
        this.con = con;
    }

    public void salva(Produto produto) throws SQLException {
        String sql = "insert into Produto (nome, descricao) values (?,?)";

        try (PreparedStatement stmt = con.prepareStatement(sql,
                Statement.RETURN_GENERATED_KEYS)) {

            stmt.setString(1, produto.getNome());
            stmt.setString(2, produto.getDescricao());
            stmt.execute();

            try (ResultSet rs = stmt.getGeneratedKeys()) {
                if (rs.next()) {
                    int id = rs.getInt("id");
                    produto.setId(id);
                }
            }

        }
    }
}

Com é um parametro que recebemos no construtor da classe e reutilizamos nos métodos internos (assim, todos os metodos compartilham da mesma conexao e podemos reutiliza-la em outros DAOs também)

Abraço =)

me desculpa. Eu vi no fim dos exercicios.

Obrigado