Re: [pgbr-geral] Dúvida - Erro PreparedStatement com a ddBatch no Postgresql

2009-01-21 Por tôpico Dickson S. Guedes
Romeryto Lira escreveu:
> Realmente. Muito obrigado pelos exclarecimentos pessoal.

Conseguiu solucionar o problema Romeryto?

Caso sim, não esqueça de responder o email para a lista com a solução, 
colocando na frente do assunto "[RESOLVIDO]".

Caso não, continuamos na expectativa

[]s
Guedes


-- 
Dickson S. Guedes
Administrador de Banco de Dados
Confesol - Projeto Colmeia
Florianopolis, SC, Brasil
(48) 3322-1185, ramal: 26

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Dúvida - Erro PreparedStatement com a ddBatch no Postgresql

2009-01-21 Por tôpico Dickson S. Guedes
Romeryto Lira escreveu:
> Olá pessoal,
>
> Estou desenvolvendo uma aplicação que acessa o Postgres.
> Estou acessando o mesmo via JDBC. Porém o mesmo retorna um exceção 
> específica do postgree quando uso o comando addBatch quando uso o 
> executeBatch do objeto PreparedStatement.
>
> org.postgresql.util.
> PSQLException: Um resultado foi retornado quando nenhum era esperado.
> SEE
> at 
> org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleResultRows(AbstractJdbc2Statement.java:2501)
> at 
> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1269)
> at 
> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:351)
> at 
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2674)
> at (...)

Este erro geralmente ocorre quando se utiliza o "execute" para 
instruções SELECT (que retornam resultados), quando era esperado que 
fosse utilizado INSERT, UPDATE ou DELETE que não retornam resultados.

-- 
Dickson S. Guedes
Administrador de Banco de Dados
Confesol - Projeto Colmeia
Florianopolis, SC, Brasil
(48) 3322-1185, ramal: 26

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Dúvida - Erro PreparedStatement com a ddBatch no Postgresql

2009-01-20 Por tôpico Romeryto Lira
É isto que acontece. Mas tipo, a natureza do addBatch é guardar na memória
as consultas para poder fazê-las todas de uma vez para ganhar em eficiência
se não me engano.

Um exemplo é o código deste link:
http://www.java2s.com/Code/JavaAPI/java.sql/PreparedStatementaddBatch.htm

Ele dá os addBatch:

 e depois dá o update, tudo de uma vez no
statement.executeBatch();
Eu fiz desse jeito mas no Postgrees dá o exceção que coloquei no primeiro
email. E este exemplo anterior é com MySQL., aí pode ser algo do postgrees
pois a exceção é especifica dele. Aí continuo na dúvida.
--
"Se um dia tiver que escolher entre o mundo e o amor... Lembre-se:
Se escolher o mundo, ficará sem o amor, mas se escolher o amor,
com ele conquistará o mundo." (Albert Einstein)
╔╗
  ROMERYTO VIEIRA LIRA
  Bacharelando em Ciência da Computação - UFCG
  Membro do SegHidro2 - LSD - http://seghidro.lsd.ufcg.edu.br
  Membro do Grupo de Suporte Guardians - www.lcc.ufcg.edu.br
  Página Pessoal: http://romeryto.googlepages.com
  Blog: http://olhartecnologico.blogspot.com
╚╝

Pensou em imprimir este e-mail? Isto é mesmo necessário? Poupe o meio
ambiente.



2009/1/20 Osvaldo Kussama 

> Em 20/01/09, Romeryto Lira escreveu:
> > Olá pessoal,
> >
> > Estou desenvolvendo uma aplicação que acessa o Postgres.
> > Estou acessando o mesmo via JDBC. Porém o mesmo retorna um exceção
> > específica do postgree quando uso o comando addBatch quando uso o
> > executeBatch do objeto PreparedStatement.
> >
> > org.postgresql.util.PSQLException: Um resultado foi retornado quando
> nenhum
> > era esperado.
> > SEE
> > at
> >
> org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleResultRows(AbstractJdbc2Statement.java:2501)
> > at
> >
> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1269)
> > at
> >
> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:351)
> > at
> >
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2674)
> > at
> >
> br.edu.ufcg.lsd.seghidro.server.persistencia.PersistenciaFacedeBDJDBC.getAllMedicoesPluviometricasFromMunicipio(PersistenciaFacedeBDJDBC.java:252)
> > at
> >
> br.edu.ufcg.lsd.seghidro.server.testes.PersistenciaFacedeJDBCTestPluviometria.testGetAllMedicoesPluviometricasFromMunicipio_1(PersistenciaFacedeJDBCTestPluviometria.java:108)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> > at java.lang.reflect.Method.invoke(Unknown Source)
> > at
> >
> org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
> >
> > Usando agora o método executeQuery usando o *addBatch* mas o mesmo não
> > armazena
> > de forma correta as consultas a serem feitas, ou seja, a mesma só executa
> > para o último PostoPluviométrico(ver código abaixo):
> >
> > *private static List
> >
> recuperarMedicoesPluviometricasDeVariosPostosPluviometricos(List
> > postosPluviometricos, Date dataInicial, Date dataFinal) {
> > Connection conn = null;
> > PreparedStatement pStatement = null;
> > ResultSet rs = null;
> > List  result = new
> > ArrayList();
> > try {
> > conn = GerenciadorDeConexao.getConnection();
> >
> > String query = "select m.* from " +
> > "medicoes_pluviometria_view m " +
> > "where m.codigo_posto=? and " +
> > "m.data between ? and ? " +
> > " order by data" ;
> >
> > pStatement = conn.prepareStatement(query);
> >
> > for (PostoPluviometrico postoPluviometrico :
> > postosPluviometricos) {
> >
> > pStatement.setInt(1, postoPluviometrico.getCodigo());
> > pStatement.setDate(2, new
> > java.sql.Date(dataInicial.getTime()));
> > pStatement.setDate(3, new
> > java.sql.Date(dataFinal.getTime()));
> >
> > pStatement.addBatch();
> >
> >
> > }
>
> Eu não entendo muito de Java mas este "}" acima não está em lugar errado?
> Ele vai executar o comando abaixo apenas com o último elemento do loop.
>
>
> >
> > rs = pStatement.executeQuery();
> > (Depois disso o ResultSet só tem resultados do último posto
> > pluviométrico)
> > while (rs.next()) {
> > MedicaoPrecipitacao m = new MedicaoPrecipitacao();
> > m.setCodigo(rs.getInt(1));
> > m.setData(rs.getDate(2));
> > m.setValor(rs.getDouble(3));
> >