Consulta no banco

4 respostas
M

pessoal,
estou com um problemão no sistema que estou desenvolvendo. No banco tem uma coluna chamada bi_template do tipo bytea, só que quando vou consultar, via aplicação, o resultado é totalmente diferente. Ex: se no banco eu tenho um array {46,4D} o meu retorno deveria ser 46 no primeiro indice e 4D no segundo, porém me retorna 52 e 54. Alguém sabe o porque disso e como eu corrijo?

4 Respostas

kemperacc

malbarbosa:
pessoal,
estou com um problemão no sistema que estou desenvolvendo. No banco tem uma coluna chamada bi_template do tipo bytea, só que quando vou consultar, via aplicação, o resultado é totalmente diferente. Ex: se no banco eu tenho um array {46,4D} o meu retorno deveria ser 46 no primeiro indice e 4D no segundo, porém me retorna 52 e 54. Alguém sabe o porque disso e como eu corrijo?

Esse array é de bytes ou de integer?

Pode postar aqui o comando que grava no banco e o comando que lê do banco?

Isso tá cheirando a conversão de tipo.

[]s

M

o array que tenho na aplicação é de bytes.
gravar no banco eu to gravando manualmente, porque essa aplicação não tem função de inserção.
Também acho que deve ser algum problema com conversão porque, o valor 4D é uma valor hexadecimal, e quando é retornado não me retorna ele. Então pensei em fazer um array de string só q não está funcionando.

código que busca no banco:

public PerfilBiometrico getPerfilBiometrico(Cliente cliente,
			MensagemRequisicao mensagem) throws Exception {
	// TODO Auto-generated method stub
		PerfilBiometrico perfilBiometrico = null;
		String jpql = "FROM PerfilBiometrico as pb WHERE pb.clienteFK.nis = :nis AND pb.tipoDedoFK.sigla = :dedo";
		this.query = this.entityManager.createQuery(jpql);
		this.query.setParameter("nis", cliente.getNis());
		this.query.setParameter("dedo", mensagem.getDedo());
		try {
			perfilBiometrico = (PerfilBiometrico) this.query.getSingleResult();
		} catch (Exception e) {
			// TODO: handle exception
			e.getStackTrace();
			this.logger.warning("Perfil n�o encontrado");
		}
		return perfilBiometrico;
	
	}
kemperacc

malbarbosa:
o array que tenho na aplicação é de bytes.
gravar no banco eu to gravando manualmente, porque essa aplicação não tem função de inserção.
Também acho que deve ser algum problema com conversão porque, o valor 4D é uma valor hexadecimal, e quando é retornado não me retorna ele. Então pensei em fazer um array de string só q não está funcionando.

código que busca no banco:

public PerfilBiometrico getPerfilBiometrico(Cliente cliente,
			MensagemRequisicao mensagem) throws Exception {
	// TODO Auto-generated method stub
		PerfilBiometrico perfilBiometrico = null;
		String jpql = "FROM PerfilBiometrico as pb WHERE pb.clienteFK.nis = :nis AND pb.tipoDedoFK.sigla = :dedo";
		this.query = this.entityManager.createQuery(jpql);
		this.query.setParameter("nis", cliente.getNis());
		this.query.setParameter("dedo", mensagem.getDedo());
		try {
			perfilBiometrico = (PerfilBiometrico) this.query.getSingleResult();
		} catch (Exception e) {
			// TODO: handle exception
			e.getStackTrace();
			this.logger.warning("Perfil n�o encontrado");
		}
		return perfilBiometrico;
	
	}

creio que mensagem.getDedo() retorna byte[] ok?

Qual é o tipo do campo no banco de dados?

Como voce esta gravando a informacao no banco?

Da um select dedo from sua tabela retorna como?

[]s

M

oi Kemperacc,
não é dedo que é o array não. O que é um array de bytes é um atributo da classe perfilbiometrico. Dedo é só um parametro para restringir a busca.
na base o tipo de dado é bytea e na aplicação é um array de bytes.
quando eu dou um select na base, o resultado retornado é o array de string que inserir manualmente pois a aplicação não faz inserção no banco.

Criado 6 de abril de 2010
Ultima resposta 6 de abr. de 2010
Respostas 4
Participantes 2