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