| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/08/2008 16:26:58
|
formigaotts
Debugger
![[Avatar]](/images/avatar/12b5fc7904a4ed8e390a03143b2cc10b.png)
Membro desde: 13/12/2006 19:04:14
Mensagens: 60
Offline
|
estou com um problema de SQLException, ele carrega aproximadamente 90 mil registros depois gera excessão e pára na linha 9,
se tiver idéia do que seja ficarei agradecido.
Excessão:
java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:768)
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:812)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5528)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5448)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5488)
at db.MembroDao.obterMembrosConsulta(MembroDao.java:369)
at Frame.FramePrincipalCruzamentos.pesquisar(FramePrincipalCruzamentos.java:322)
at Frame.FramePrincipalCruzamentos.access$0(FramePrincipalCruzamentos.java:192)
at Frame.FramePrincipalCruzamentos$1.actionPerformed(FramePrincipalCruzamentos.java:457)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Código:
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/08/2008 19:27:19
|
ricoldi
JavaEvangelist
![[Avatar]](/images/avatar/f65c00c041bab77ab44874be15c53276.png)
Membro desde: 04/11/2007 19:11:40
Mensagens: 414
Localização: Ribeirão Preto - SP
Offline
|
Fala formigaotts,
Erro estranho.. porque ele fala que o resultset esta fechado...
Então cara... meio por cima assim eu não intendi muito, mas deixa eu perguntar...
Ele roda esse laço 90mil vezes? e ai depois para?
Você viu que a excessão esta dando no getString()?
Att
Ricoldi
|
*Todo post expressa minha opinião e não uma verdade inquestionável* |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/08/2008 22:38:29
|
formigaotts
Debugger
![[Avatar]](/images/avatar/12b5fc7904a4ed8e390a03143b2cc10b.png)
Membro desde: 13/12/2006 19:04:14
Mensagens: 60
Offline
|
sim, ele roda o while 90 mil vezes ai quando lança a excessão ele me retorna os 80 mil registros normalmente..
sim, eu vi onde está a excessão, porém não dá para saber o porque.
ricoldi wrote:Fala formigaotts,
Erro estranho.. porque ele fala que o resultset esta fechado...
Então cara... meio por cima assim eu não intendi muito, mas deixa eu perguntar...
Ele roda esse laço 90mil vezes? e ai depois para?
Você viu que a excessão esta dando no getString()?
Att
Ricoldi
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 07:45:20
|
ricoldi
JavaEvangelist
![[Avatar]](/images/avatar/f65c00c041bab77ab44874be15c53276.png)
Membro desde: 04/11/2007 19:11:40
Mensagens: 414
Localização: Ribeirão Preto - SP
Offline
|
Não sei se tem algo a ver mais um amigo aqui do trampo disse para você tentar dar um rs.first() no resultset antes de começar o while.
ps? perguntinha da galera... 90mil registros? car**o o que tem nessa tabela?
Att
Ricoldi.
|
*Todo post expressa minha opinião e não uma verdade inquestionável* |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 07:49:46
|
Artur Drummond
Debugger
Membro desde: 13/09/2006 20:58:58
Mensagens: 66
Offline
|
bom ... pela quantidade de registros, será que é necessário trazer TODOS os 90 mil em uma única query ?
Tenta fazer o seguinte: Muda a sua query e fala pra retornar a partir da posição que deu o problema -1 . No caso, se foi na posição 80 mil, começa a partir da 79999 até o 90000.
Ve se fazendo isso ele para de dar erro e consegue processar.
Vlw
This message was edited 1 time. Last update was at 07/08/2008 07:50:30
|
SCJP 5.0 (2009)
SCWCD 5.0 (2010) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 18:59:04
|
formigaotts
Debugger
![[Avatar]](/images/avatar/12b5fc7904a4ed8e390a03143b2cc10b.png)
Membro desde: 13/12/2006 19:04:14
Mensagens: 60
Offline
|
então, preciso fazer em somente uma query, para facilitar as consultas, e também em duas querys não seria meio gambits?
bom, eu contei a quantidade de registros dentro do ResultSet está certo, 162 mil, porém não consigo adquirir todos.
outra curiosidade é que as vezes muda a exception, dá NullPointerException, depois volta essa excessão que postei anteriormente, e também muda sempre o valor da iteração do erro, varia de 90 mil à 105 mil...
vou verificar se existe algum limite de registros no ResultSet.
bom qualquer coisa estamos aí.
valeu!
Artur Drummond wrote:bom ... pela quantidade de registros, será que é necessário trazer TODOS os 90 mil em uma única query ?
Tenta fazer o seguinte: Muda a sua query e fala pra retornar a partir da posição que deu o problema -1 . No caso, se foi na posição 80 mil, começa a partir da 79999 até o 90000.
Ve se fazendo isso ele para de dar erro e consegue processar.
Vlw
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2008 16:22:45
|
formigaotts
Debugger
![[Avatar]](/images/avatar/12b5fc7904a4ed8e390a03143b2cc10b.png)
Membro desde: 13/12/2006 19:04:14
Mensagens: 60
Offline
|
continua o problema, entre os varios tipos de excessão vai mais uma pra se alguem já tiver passado por esse problema da um help ae.
java.lang.NullPointerException
at com.mysql.jdbc.ResultSetImpl.setRowPositionValidity(ResultSetImpl.java:830)
at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7046)
at db.MembroDao.obterMembrosConsulta(MembroDao.java:367)
at frame.FramePrincipalCruzamentos.pesquisar(FramePrincipalCruzamentos.java:315)
at frame.FramePrincipalCruzamentos.access$0(FramePrincipalCruzamentos.java:185)
at frame.FramePrincipalCruzamentos$1.actionPerformed(FramePrincipalCruzamentos.java:450)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2008 16:28:52
|
italo.vendrameto
JavaChild
![[Avatar]](/images/avatar/27bf6226213cf288dfbf62ffc02bad4f.jpg)
Membro desde: 21/09/2006 06:44:48
Mensagens: 119
Localização: Curitiba - PR
Offline
|
Cole o código do método, todo e não apensa essa bloco que vc mostrou no inicio do tópico, acredito que seu erro seja em virtude outra coisa.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2008 16:44:39
|
formigaotts
Debugger
![[Avatar]](/images/avatar/12b5fc7904a4ed8e390a03143b2cc10b.png)
Membro desde: 13/12/2006 19:04:14
Mensagens: 60
Offline
|
italo.vendrameto wrote:Cole o código do método, todo e não apensa essa bloco que vc mostrou no inicio do tópico, acredito que seu erro seja em virtude outra coisa.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2008 17:05:17
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
Isso parece algum tipo de problema causado por um OutOfMemoryError dentro do MySQL.
Ah, por sinal, lembre-se de fechar seus ResultSets em um finally.
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).
Se você escreve "concerteza", "concerteza" você andou matando aulas de português. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2008 20:47:37
|
formigaotts
Debugger
![[Avatar]](/images/avatar/12b5fc7904a4ed8e390a03143b2cc10b.png)
Membro desde: 13/12/2006 19:04:14
Mensagens: 60
Offline
|
aumentei os valores XMx e XMs da JVM e deu certo!
valeu pessoal.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/08/2008 08:34:42
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
formigaotts wrote:aumentei os valores XMx e XMs da JVM e deu certo!
valeu pessoal.
Isso não resolve o problema, apenas o adia. Ao invés de ocorrer com 80 mil registros vai começar a ocorrer com 800 mil, 8 milhões, sei lá.
O problema é o fato de você colocar todos estes elementos em uma lista monstruosamente gigantesca devorando a sua memória. O certo seria mudar a abordagem e puxar um de cada vez, trabalhar com ele e descartá-lo, puxando o próximo em seguida, ou então trabalhar com algum tipo de paginação.
This message was edited 1 time. Last update was at 12/08/2008 08:35:25
|
|
|
 |
|
|