Ola galera eu sou novato em busca, criei uma consulta pra retornar o valor do estoque mas o campo estoque esta retornando com o valor null.
CompraDao
public Produto consultar(Object produto2) {
String sql = "SELECT estoque FROM produto WHERE NOME = ?";
try
{
PreparedStatement stmt = getConnection().prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
stmt.setString(1, (String) produto2);
while(rs.next()){
Produto produto = new Produto();
produto.setEstoque(rs.getInt("estoque"));
}
} catch(SQLException e) {
e.printStackTrace();
}
return null;
} `
CompraController
public Produto buscaEstoqueProduto(Object produto) throws SQLException {
CompraDao dao = new CompraDao();
return dao.consultar(produto);
}
TelaPrincipal
private void onClickLocalizar() {
CompraController cc = new CompraController();
try {
Produto c = cc.buscaEstoqueProduto(produto);
String id = String.valueOf(c.getId());
estoque = c.getEstoque();
} catch (SQLException e) {
JOptionPane.showMessageDialog(this, "Ocorreu um erro, tente novamente!n" +
e.getLocalizedMessage()
);
} catch (NullPointerException e){
JOptionPane.showMessageDialog(this, "Contato não localizdo ou não existe!n" +
e.getLocalizedMessage()
);
}
}
JButton btnCalcular = new JButton("Calcular");
btnCalcular.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.out.println(produto);
System.out.println(estoque);
}
});
btnCalcular.setBounds(445, 122, 89, 23);
contentPane.add(btnCalcular);
![](//www.guj.com.br/uploads/default/original/3X/9/d/9dd081849976930a24ae30bc3033547f8c2e29fc.JPG)
no método consultar vc especificou o retorno da função como null…
no caso ele deve retornar o produto que vc consultou. Um outro detalhe é que o retorno pode ser uma lista de produtos com a mesma descrição (se vc pesquisar camisa, por exemplo, ele pode te retornar CAMISA POLO, CAMISA SOCIAL, etc). Então o correto seria ele te retornar uma lista.
É importante você sempre fechar as conexões também (ResultSet, PreparedStatement, Connection), caso sua aplicação precise acessar várias vezes o banco, se não for fechada a cada consulta, ele lançará um SQLExeption - Too many connections.
Tem mais algumas considerações (vc está buscando somente o estoque do produto, mas depois, na sua tela principal vc precisou pegar o id do produto, que no caso sempre será null pois você consultou), mas seria legal vc começar estudando a apostila da Caelum (que também tem várias outras apostilas gratuitas e excelentes).
public List<Produto> consultar(String produto2) {
String sql = "SELECT * FROM produto WHERE NOME = ?";
List<Produto> produtos = new ArrayList<Produto>();
try
{
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, produto2);
ResultSet rs = stmt.executeQuery();
while(rs.next()){
Produto produto = new Produto();
produto.setEstoque(rs.getInt("estoque"));
// outros setters pertinentes, comoid (que vc irá usar na tela principal) descrição e preço, por exemplo
produtos.add(produto);
}
} catch(SQLException e) {
e.printStackTrace();
}
rs.close();
stmt.close();
con.close();
return produtos;
} `
public List<Produto> buscaEstoqueProduto(String produto) throws SQLException {
CompraDao dao = new CompraDao();
return dao.consultar(produto);
}
Crie uma lista de produtos com visibilidade global em sua tela principal (fora dos métodos auxiliares)
private void onClickLocalizar() {
CompraController cc = new CompraController();
try {
minhaListadeProdutos = cc.buscaEstoqueProduto(produto);
} catch (SQLException e) {
JOptionPane.showMessageDialog(this, "Ocorreu um erro, tente novamente!n" +
e.getLocalizedMessage()
);
} catch (NullPointerException e){
JOptionPane.showMessageDialog(this, "Contato não localizdo ou não existe!n" +
e.getLocalizedMessage()
);
}
}
JButton btnCalcular = new JButton("Calcular");
btnCalcular.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
for(Produto p : minhaListadeProdutos){
System.out.println("Produto id : " + p.getId+ " estoque: " + p.getEstoque);
}
}
});
btnCalcular.setBounds(445, 122, 89, 23);
contentPane.add(btnCalcular);
link apostila caelum java web (que contém uma explicação ótima sobre JDBC). https://www.caelum.com.br/download/caelum-java-web-fj21.pdf