0
I have a JSP page and in it I want a list. For this, I created a method listarTodos()
within the DAO class and set the fields to display the object data, thus leaving the code:
</div>
<%
ProdutoDAO produtoDAO = new ProdutoDAO();
List<Produto> produtos = produtoDAO.listarTodos();
%>
<table class="table table-striped table-inverse">
<thead>
<tr>
<th>Código</th>
<th>Produto</th>
<th>Tipo de Produto</th>
<th>Quantidade</th>
<th>Preço em R$</th>
<th>Tipo de Negociação</th>
</tr>
</thead>
<tbody>
<%for(Produto produto : produtos){ %>
<tr>
<td><%=produto.getIdProduto()%></td>
<td><%=produto.getNomeProduto()%></td>
<td><%=produto.getTipoProduto()%></td>
<td><%=produto.getQtdProduto()%></td>
<td><%=produto.getPreco()%></td>
<td><%=produto.getTipoNegociacao()%></td>
<td>Editar</td>
<td><a href="prodcontroller.do?acao=excluir&input_codigo=<%=produto.getIdProduto()%>">Excluir</a></td>
</tr>
<%} %>
</tbody>
</table>
</div>
The problem is that it is listing the number of right records, but it is populating all "product" objects with only one row of the database. So if I have there N records, these N records would popular the object with the same data.
Example: id: 123; product:banana: type:fruit; qnt:6 ; price=1.0 ; negotiation type: sale. <~~~~ that In the 14 created objects.
Follow the method code:
public List<Produto> listarTodos() {
ConexaoBD conexao = new ConexaoBD();
conexao.conecta();
List<Produto> produtos = new ArrayList<>();
Produto produto = new Produto();
try {
Statement st = conexao.conn.createStatement();
ResultSet rs = st.executeQuery(LISTAR_TUDO);
while(rs.next()) {
produto.setIdProduto(rs.getInt("id_produto"));
produto.setNomeProduto(rs.getString("ds_tipo_produto"));
produto.setNomeProduto(rs.getString("nm_produto"));
produto.setQtdProduto(rs.getInt("nr_quantidade"));
produto.setPreco(rs.getDouble("vl_preco"));
produto.setTipoNegociacao(rs.getString("ds_tipo_negociacao"));
produtos.add(produto);
}
rs.close();
}
catch(SQLException ex) {
ex.printStackTrace();
}
return produtos;
}
You can see where I’m going wrong?
How is the SQL in this variable LISTAR_TUDO ?
– Bruno Silva
SELECT * FROM product
– Tony Michael
Apparently it was supposed to work ... do you have a constructor referring to the Product object? ... Why not try
produtos.add(new Produto(rs.getInt("id_produto"),rs.getString("ds_tipo_produto")) );
– Bruno Silva
That inside the While of the list all?
– Tony Michael
while(rs.next()) ' products.add( new Product(rs.getInt("id_product"), rs.getString("ds_tipo_product") ));
– Bruno Silva
Boy, I think that was just my problem the Builder’s out of the While... tto caught since early on in this hahaha, I’m gonna test here and already I talk.
– Tony Michael
All right, try it there
– Bruno Silva
hahahaha, was !!! that innocence mine I just put the builder inside the while. Thanks for the light ai Bruno!!!
– Tony Michael
Haha I am happy to have help, classify the answer as solved! Until next
– Bruno Silva