Operation not allowed after ResultSet closed[Resolvido]

3 respostas
P
Esta ocorrendo este erro no meu codigo,estava pesquisando e descobri que deveria criar outro Statement que eu ja havia criado :( alguém sabe me explicar o que tem de errado no meu codigo?! o erro aponta para esta linha:
System.out.println("select atividade from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+resultadoDisciplina.getString(1)+"' and modulo='"+resultadoModulo.getString(1)+"'");
meu codigo completo é:
private void geraTabela3()
	{
		try
		{   	
			Aluno1 aluno;
			model=new Aluno1TableModel();     
			resultadoDisciplina = comando.executeQuery("select distinct disciplina from nota where rc_aluno='"+ t0.getText() +"'");  
			while(resultadoDisciplina.next())  
			{  
				aluno=new Aluno1();  
				aluno.setDisciplina(resultadoDisciplina.getString(1)); 
				resultadoModulo = comando.executeQuery("select distinct modulo from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+resultadoDisciplina.getString(1)+"'");  
				if(resultadoModulo.next())
				{
					aluno.setModulo(resultadoModulo.getString(1)); 
					System.out.println("select atividade from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+resultadoDisciplina.getString(1)+"' and modulo='"+resultadoModulo.getString(1)+"'");
					resultadoAtividade = comando.executeQuery("select atividade from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+resultadoDisciplina.getString(1)+"' and modulo='"+resultadoModulo.getString(1)+"'");  
					if(resultadoAtividade.next())
					{
						aluno.setAtividade(resultadoAtividade.getString(1));  
					}
				}

				model.addAluno(aluno);  
			}	
			
			table = new JTable(model);

			JScrollPane scroller = new JScrollPane(table);
			scroller.setVisible(true);
			scroller.setBounds(20, 270, 700, 150);
			painel.add(scroller, null);
			

		}
		catch (SQLException erro) {
			erro.printStackTrace();
		}
	}
Alguém sabe onde está o erro?ou como posso resolver isso? muito obrigada :)

3 Respostas

D
paty_trind:
Esta ocorrendo este erro no meu codigo,estava pesquisando e descobri que deveria criar outro Statement que eu ja havia criado :( alguém sabe me explicar o que tem de errado no meu codigo?! o erro aponta para esta linha:
System.out.println("select atividade from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+resultadoDisciplina.getString(1)+"' and modulo='"+resultadoModulo.getString(1)+"'");
meu codigo completo é:
private void geraTabela3()
	{
		try
		{   	
			Aluno1 aluno;
			model=new Aluno1TableModel();     
			resultadoDisciplina = comando.executeQuery("select distinct disciplina from nota where rc_aluno='"+ t0.getText() +"'");  
			while(resultadoDisciplina.next())  
			{  
				aluno=new Aluno1();  
				aluno.setDisciplina(resultadoDisciplina.getString(1)); 
				resultadoModulo = comando.executeQuery("select distinct modulo from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+resultadoDisciplina.getString(1)+"'");  
				if(resultadoModulo.next())
				{
					aluno.setModulo(resultadoModulo.getString(1)); 
					System.out.println("select atividade from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+resultadoDisciplina.getString(1)+"' and modulo='"+resultadoModulo.getString(1)+"'");
					resultadoAtividade = comando.executeQuery("select atividade from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+resultadoDisciplina.getString(1)+"' and modulo='"+resultadoModulo.getString(1)+"'");  
					if(resultadoAtividade.next())
					{
						aluno.setAtividade(resultadoAtividade.getString(1));  
					}
				}

				model.addAluno(aluno);  
			}	
			
			table = new JTable(model);

			JScrollPane scroller = new JScrollPane(table);
			scroller.setVisible(true);
			scroller.setBounds(20, 270, 700, 150);
			painel.add(scroller, null);
			

		}
		catch (SQLException erro) {
			erro.printStackTrace();
		}
	}
Alguém sabe onde está o erro?ou como posso resolver isso? muito obrigada :)

Bom dia paty_trind, vc pode postar o erro que acontece na sua SQL???

P

ola diegodtsa,
o erro é o seguinte

select distinct disciplina from nota where rc_aluno='5' select distinct modulo from nota where rc_aluno='5' and disciplina='biologia' java.sql.SQLException: Operation not allowed after ResultSet closed at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929) at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:794) at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:838) at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5656) at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5576) at telaVisualizacaoDeNotas.geraTabela3(telaVisualizacaoDeNotas.java:329) at telaVisualizacaoDeNotas.access$0(telaVisualizacaoDeNotas.java:288) at telaVisualizacaoDeNotas$4.actionPerformed(telaVisualizacaoDeNotas.java:217) 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)
a linha 329 é System.out.println("select atividade from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+resultadoDisciplina.getString(1)+"' and modulo='"+resultadoModulo.getString(1)+"'");

obrigada pela ajuda

P

Consegui arrumar este erro o Visola me explicou o seguinte

o problema está no seguinte…
na linha 319 você usa um Statement para executar uma consulta…
enquanto está percorrendo o resultado desta consulta você executa outra consulta, na linha 325 usando o mesmo Statement.
Quando você faz isso, automaticamente fecha o primeiro ResultSet (resultadoDisciplina).
Porque cada statement só pode executar uma única consulta por vez.
Você vai precisar de outro Statement se quiser executar dois resultsets ao mesmo tempo.

Eu criei novos Statements e inicializei junto com o primeiro statement e agora esta funcionando!!

obrigada pela ajuda

Criado 18 de abril de 2011
Ultima resposta 20 de abr. de 2011
Respostas 3
Participantes 2