[Resolvido] Comparando ResultSet

Boa tarde gente,

Galera eu to necessitando saber se um determinado produto existe para ai sim ele existindo eu permitir que um valor dele seja removido, tentei fazer com o rs.next() e mudando a variavel para true caso existir registros caso não exista ele não deixa remover.

Exempo:

Tenho um produto que foi cadastrado, esse produto tem lotes e quantidade. Antes de remover necessito se existe esse produto e esse lote para ai permitir ser retirado a quantidade que o usuarios quer da quantidade que ele ja tem.

Segue o codigo que to usando para consultar:

[code]public boolean constlote(int id, String lote) throws Exception {
boolean retorno = false;
getConexao();
String query = “Select * from lote where medicamento_idproduto=? and n_lote=?”;
pstmt = con.prepareStatement(query);
pstmt.setInt(1, id);
pstmt.setString(2, lote);
pstmt.execute();

	while(rs.next()){
		retorno = true;
	}

	return retorno;
}[/code]

Codigo do método que chama a consulta.

public boolean constlote() { boolean retorno = false; boolean consulta = false; try { EstoqueDAO pd = new EstoqueDAO(); if(pd.constlote(Integer.parseInt(txtidmedicamento.getText()),txtlote.getText())){ retorno = true; } } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, "Erro Geral, por favor entre em contato com o Administrador do Sistema.", "Atenção", JOptionPane.ERROR_MESSAGE); } return retorno; }

Codigo do botão

JButton btnAtualizar = new JButton("Atualizar"); btnAtualizar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if(constlote()){ JOptionPane.showMessageDialog(null, "Existe o Lote!", "Atenção", JOptionPane.ERROR_MESSAGE); }else{ JOptionPane.showMessageDialog(null, "Não Exite Lote!", "Atenção", JOptionPane.ERROR_MESSAGE); } } }); btnAtualizar.setBounds(291, 289, 89, 23); panel.add(btnAtualizar);

Erro exibido:

java.lang.NullPointerException at persistencia.EstoqueDAO.constlote(EstoqueDAO.java:52) at visao.JanelaMovimentarEntrada.constlote(JanelaMovimentarEntrada.java:133) at visao.JanelaMovimentarEntrada$3.actionPerformed(JanelaMovimentarEntrada.java:108) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)

Onde é que ta errado?

Ele diz que o erro ta aqui:

while(rs.next()){ retorno = true; }

no método constlote, na linha 8:

pstmt.execute(); 

troque por isto:

rs = pstmt.executeQuery(); 

Detalhe… não estou vendo aí onde está declarado o objeto rs … talvez esteja como um atributo da classe, ele é global, é isso?

Bom amigo, vou testar isso que você falou e sobre sua pergunta o rs, esta nessa classe que a chamo de DAO, onde fica a conecção do banco.

[code]package persistencia;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DAO {
Connection con;

PreparedStatement pstmt;

ResultSet rs;

public void getConexao()throws Exception{
    String url = "jdbc:mysql://localhost:3306/siscef_db";
    String user = "root";
    String password = "";
    Class.forName("com.mysql.jdbc.Driver");
    con = DriverManager.getConnection(url, user, password);
}

}[/code]

#edit
Mesmo modificando o que vc falou, continuar o mesmo erro.

poste o código completo da classe EstoqueDAO… não consegui entender bem isso

Segue o código:

[code]package persistencia;

public class EstoqueDAO extends DAO {

public void cadmedicamento(String nome_produto, int qtd_minima)
		throws Exception {
	getConexao();
	String query = "INSERT INTO medicamento(nome_produto,qtd_minima)VALUES(?,?)";
	pstmt = con.prepareStatement(query);
	pstmt.setString(1, nome_produto);
	pstmt.setInt(2, qtd_minima);
	pstmt.execute();
}

public void cadfabricante(String nome_fabricante, String endereco,
		String tele_contato, String email, String marca) throws Exception {
	getConexao();
	String query = "INSERT INTO fabricante (nome_fabri,end_fabri,telcontato_fabri,email_fabri,marca_fabri) VALUES (?,?,?,?,?)";
	pstmt = con.prepareStatement(query);
	pstmt.setString(1, nome_fabricante);
	pstmt.setString(2, endereco);
	pstmt.setString(3, tele_contato);
	pstmt.setString(4, email);
	pstmt.setString(5, marca);
	pstmt.execute();
}

public void cadlote(int medicamento, String nlote, int fabri,
		String qtdlote, String valilote) throws Exception {
	getConexao();
	String query = "INSERT INTO lote (n_lote,dt_validade,qtd_lote,fabricante_idfabricante,medicamento_idproduto) VALUES (?,?,?,?,?)";
	pstmt = con.prepareStatement(query);
	pstmt.setString(1, nlote);
	pstmt.setString(2, valilote);
	pstmt.setString(3, qtdlote);
	pstmt.setInt(4, fabri);
	pstmt.setInt(5, medicamento);
	pstmt.execute();
}

public boolean constlote(int id, String lote) throws Exception {
	boolean retorno = false;
	getConexao();
	String query = "Select * from lote where medicamento_idproduto=? and n_lote=?";
	pstmt = con.prepareStatement(query);
	pstmt.setInt(1, id);
	pstmt.setString(2, lote);
	pstmt.executeQuery();

	if(rs==null){
		retorno = true;
	}

	return retorno;
}

}
[/code]

Edit: Onde vc ver rs==null leia rs !== null, mas tb nao foi.

Certo colega… ainda vejo a solução no mesmo ponto. Como disse antes… o seu objeto rs está nulo.
tente exatamente isso: troque a linha 49, onde está

por isto:

Vlws Man, deu certinho agora!!!

Obrigado mesmo.