PostgreSQL - INSERT RETURNING ID [RESOLVIDO]
Olás
Estou tendo uma SQLException do postgres ao executar um "PreparedStatement".
[i][b]"Um resultado foi retornado quando nenhum era esperado"[/b][/i]
A questão é que na query estou usando um dos recursos do postgres pra retornar a ID daquilo que estou inserindo
Ele deve estar retornando o "id_paciente" para o PreparedStatement e por isso tá dando a exception.
Alguém já passou por isso ou tem alguma sugestão?
grato
abs
String qry = " INSERT INTO tb_pessoa(nome,ddd,fone, etc...) VALUES (?,?,?, etc...) RETURNING id_paciente "; PreparedStatement stt = conn.prepareStatement(qry);

Paulo
Curtidas 0
Melhor post

Paulo
29/07/2010
Outro esquema que funcionou usando "executeUpdate()" (v 8.4.1):
Não precisa de acrescer "RETURNING id" na query.
abs
PrepareStatement sta = conn.prepareStatement("INSERT INTO...", Statement.RETURN_GENERATED_KEYS); sta.executeUpdate(); ResultSet rsID = sta.getGeneratedKeys(); if(rsID.next()) int id = rsID.getInt("id");
GOSTEI 1
Mais Respostas

João Santos
09/04/2009
???
Tem como postar a exception pra gente?
JL
GOSTEI 0

Paulo
09/04/2009
não retorna muita coisa..
org.postgresql.util.PSQLException: Retorno de chaves geradas automaticamente não é suportado.
abs
GOSTEI 0

Thiago Silva
09/04/2009
Olá eu tive o problema tbm
resolvi assim:
de:
para:
utilizo java 1.6
postgresql 8.3
jdbc 4 - 8.3-604
Linux Kernel 2.6.24-16-generic
e NetBeans 6.7.1 mas acho que não influencia muito
abraço
PreparedStatement ps = con.prepareStatement("insert into sistema.base " + "(nome, permissao) " + "values (?,?) returning id;"); ps.setString(1, base.getNome()); ps.setString(2, base.getPermissao()); int linhasAfetadas = ps.executeUpdate();
PreparedStatement ps = con.prepareStatement("insert into sistema.base " + "(nome, permissao) " + "values (?,?) returning id;"); ps.setString(1, base.getNome()); ps.setString(2, base.getPermissao()); ResultSet rs = ps.[b]executeQuery()[/b]; if(rs.next()) int id = rs.getInt("id");
GOSTEI 0

Paulo
09/04/2009
Valeu tralsl :)
Antes não estava funcionando pois estava usando a versão 8.1, ele não reconhecia RETURNING na sintaxe.
Agora usando o Postgres 8.4 rolou blz.
abs
GOSTEI 0

Diogo Souza
09/04/2009
Isso é que é uma dúvida persistente!!!
:D
GOSTEI 0

Thiago Silva
09/04/2009
:mrgreen:
o importante é que a dúvida foi resolvida,
a propósito, a versão 8.2 tbm possui suporte ao returning
GOSTEI 0