[Resolvido!] Dificuldade em comparar id's em BD

4 respostas
Kleber-rr

Olá Pessoal, boa tarde

Estou tentando criar um método no meu DAO que compare dois ID'S relacionais com os cadastrados no Banco.
public boolean verifID(Long idPF, Long idOG) {

        boolean ok = false;
        idPF = funcionario.getCod_funcionario();
        idOG = orgaogestor.getCod_orgaogestor();
//...
		try {
			String sql = "SELECT * from pforgaogestor l where l.cod_funcionario=? AND l.cod_orgaogestor";

//...

			PreparedStatement pstm = c.prepareStatement(sql);
			pstm.setLong(1, idPF); //linha que dá o erro
			pstm.setLong(2, idOG);
			ResultSet rs = pstm.executeQuery();
			System.out.println("VERIFICANDO ID NO BANCO");
			if (rs.next() && !rs.getString("cod_funcionario").isEmpty()
					&& rs.getString("cod_funcionario") != null
					&& rs.getString("cod_funcionario").equals(idPF)
					&& rs.getString("cod_orgaogestor").equals(idOG)) {
				ok = true;

				System.out.println("Registro já incluido: ");

			} else {
				ok = false;
				rs.close();
				c.close();
			}

		} catch (SQLException ex) {
			ex.printStackTrace();
			setStatus("erro sql:" + ex.getMessage());
		}
		return ok;

	}
Só que me retorna um erro no console quando eu vou fazer a inclusão da Pessoa no órgão:
SEVERE: java.lang.NullPointerException
    at br.gov.rr.setrabes.dao.StatusPFOGDao.verifID(StatusPFOGDao.java:53)

Eu sei que o erro me diz que a variável da linha (idPF) é nulo. Como eu estou tentando pegar o id, e não uma String, eu to levando esta surra...
Agradeço a ajuda.

4 Respostas

wagner_a_lima

Fala Kleber, acho que o problema está em seu sql:
Onde consta

SELECT * from pforgaogestor l where l.cod_funcionario=? AND l.cod_orgaogestor

Penso que deveria ser:

SELECT * from pforgaogestor l where l.cod_funcionario=? AND l.cod_orgaogestor = ?
Kleber-rr

Olá Wagner, td bem??
Depois que eu postei foi q eu notei q tinha faltado, mas não é essa a causa do problema.

Mesmo assim, valeu.

wagner_a_lima:
Fala Kleber, acho que o problema está em seu sql:
Onde consta

SELECT * from pforgaogestor l where l.cod_funcionario=? AND l.cod_orgaogestor

Penso que deveria ser:

SELECT * from pforgaogestor l where l.cod_funcionario=? AND l.cod_orgaogestor = ?

Kleber-rr

Eae, alguém??

Kleber-rr

Bom pessoal, consegui resolver o problema.

O problema no método estava na chamada do rs.getString, que deveria ser rs.getLong, conforme abaixo:

if (rs.next() && rs.getLong("cod_funcionario") != 0 && rs.getLong("cod_funcionario") == cod_funcionario && rs.getLong("cod_orgaogestor") == cod_orgaogestor) {

Está aí pra quem estiver com o mesmo problema.

Abs.

Criado 25 de outubro de 2010
Ultima resposta 28 de out. de 2010
Respostas 4
Participantes 2