Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

estou com problemas nos metodos listar() e adicionar()

O eclipse acusa um erro , diz que não se pode fazer uma referencia static para um um metodo não static

package br.com.alura.jdbc.produto;

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;

import dao.ProdutoDAO;

public class TesteInsercaoProduto {

public static void main(String[] args) throws SQLException {


    try(Connection connection = new ConnectionFactory().novaConexao()){

    Produto comoda = new Produto("comoda", "comoda antiga");

    ProdutoDAO pd = new ProdutoDAO(connection);

    ProdutoDAO.salvar(comoda);
    ProdutoDAO.listar();

}
}

}

ackage 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.alura.jdbc.produto.ConnectionFactory; import br.com.alura.jdbc.produto.Produto;

public class ProdutoDAO {

//DAO - Data Access Object é uma classe de acesso ao banco de dados para não precisarmos ficar 
//digitando o mesmo código todavez que for inserir

private Connection connection;

public ProdutoDAO(Connection connection) {

    this.connection = connection;
}

public void salvar(Produto produto) throws SQLException {

    String sql = "INSERT INTO PRODUTO (NOME, DESCRICAO) VALUES(?,?)";

    try (PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {

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

        try (ResultSet rs = ps.getGeneratedKeys()) {
            while (rs.next()) {
                produto.setId(rs.getInt(1));
            }
        }

    }

}


public List<Produto> listar() throws SQLException{
    List<Produto> produtos = new ArrayList<Produto>();
    String sql = "SELECT ID, NOME, DESCRICAO FROM PRODUTO";

    try(PreparedStatement ps = connection.prepareStatement(sql)){
        ps.execute();
        try(ResultSet rs = ps.getResultSet()){
            while(rs.next()) {
                Produto produto = new Produto(rs.getInt(1), rs.getString(2), rs.getString(3));
                produtos.add(produto);

            }
        }

    }
    return produtos;
}

}

1 resposta
solução!

Já descobri o problema , estava chamando o ProdutoDAO direto da classe sem usar aquele que eu criei

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software