[Java] Erro: the resultSet is not in a row, use next

Possuo um software em java que faz conexão com um BD Firebird. Neste banco tem uma tabela chamada “filaleitura” então repliquei a estrutura dela para formar uma “filaleitura1” e estou enfrentando o seguinte problema:

Quando tento gravar os dados na tabela replicada, aparece o erro “the resultSet is not in a row, use next”. O que posso estar fazendo de errado? Sou iniciante e não tenho experiência com firebird.

Meu resultSet está declarado da seguinte forma: protected ResultSet rs=null;

Tenho 2 classes envolvidas nesse processo:

1ª Classe

protected boolean gravaFila(int iX, String sCod_Conjunto)
{
	//Gravar o conjunto selado na fila para a 
	//iX é a primeira posição disponível para cadastro na tabela FILALEITURA ( varia de 1 a 12 )
	//iX é 1 se todas as posições estão disponíveis (NUM_ESTADO=0) ou
	//n se NUM_ESTADO=0 com NUM_ESTADO!=0 para n-1
	
	//Verifica se sCod_Conjunto já foi cadastrado
	sSQLqu = ("SELECT * FROM FILALEITURA1 WHERE (COD_CONJUNTO='"+sCod_Conjunto+"')");
	
	try
	{
		if (con_LD==null || con_LD.isClosed())
		{
			if (!conectaLD())
			{
				JOptionPane.showMessageDialog(null,"4 - Falha: Connection no BD");
				return false;
			}
		}

		con_LD.setAutoCommit(false);			
		
		rs = (stmt_LD.executeQuery(sSQLqu));
		
		if (rs.next())
		{
			JOptionPane.showMessageDialog(null,"Já existe registro para esse Conj. Selado ( posição "+getPosSuporte(rs.getInt("NUM_POS"))+") !");
			rs.close();
			return false;
		}
        rs.close();
        
        //Verificar se sCod_Conjunto foi cadastrado
        
        //17-04-2014 - bloquear cadastro na fila de cs lidos
        sSQLqu = ("SELECT * FROM LEITURADOSIMETRO WHERE (COD_CONJUNTO='"+sCod_Conjunto+"' AND (ESTADO_LEITURA=0))");
 
        rs = (stmt_LD.executeQuery(sSQLqu));
    
		if (!rs.next())
		{
			//17-04-2014 - bloquear cadastro na fila de cs lidos
			JOptionPane.showMessageDialog(null,"Esse Conjunto NÃO está disponível para Leitura !","Comunique ao Responsável Técnico :",0);
			rs.close();
			return false;
		}
        rs.close();
   
        //Cadastra na Fila se Houver Posição Disponível
		rs = stmt_LD2.executeQuery("SELECT * FROM FILALEITURA1 WHERE (NUM_POS="+iX+" AND NUM_ESTADO=0)");
        
        if (rs.next())
        {
            rs.close();

            sSQLup = ("UPDATE FILALEITURA1 SET COD_CONJUNTO='"+sCod_Conjunto+"',DET_LIDO='XX',NUM_ESTADO=2 WHERE (NUM_POS="+iX+" AND NUM_ESTADO=0)");
            
            stmt_LD.executeUpdate(sSQLup);
            
        }
        else
        {
            rs.close();
            JOptionPane.showMessageDialog(null,"Não Há Posição Disponível !");
            return false;
        }
		
	}
	catch(java.lang.Exception ex)
	{
		JOptionPane.showMessageDialog(null,""+ex.getMessage(),"Falha ao tentar gravar na Fila de Leitura",0);
		return false;
	}					
	finally
	{
		try
		{
			con_LD.commit();
						
		}
		catch(java.lang.Exception ex)
		{
			JOptionPane.showMessageDialog(null,""+ex.getMessage() ,"Erro ao tentar commit",1);
		
		}			
	}
	                    
	//gravou satisfatóriamente
	return true;
}

2ª Classe

protected boolean gravaUltDetLido(String DetL ,String sConj)
{
	//22-05-2009
	//Gravar o Ult. Det. Lido na fila para a 
	
	//Cadastro na Tabela FILALEITURA
	
    try
	{
		if (con_LD==null || con_LD.isClosed())
		{
			
			if (!conectaLD())
			{
				JOptionPane.showMessageDialog(null,"5 - Falha: Connection no BD");
				return false;
			}
		}
		
		con_LD.setAutoCommit(false);
		
        sSQLup = ("UPDATE FILALEITURA1 SET DET_LIDO='"+DetL+"' WHERE COD_CONJUNTO='"+sConj+"'");
		stmt_LD.executeUpdate(sSQLup);
	
	}
	catch(java.lang.Exception ex)
	{
		JOptionPane.showMessageDialog(null,""+ex.getMessage(),"Falha ao tentar gravar na Fila de Leitura - gUDL",0);
		b31.setEnabled(false);

		JTFFILA.requestFocus();
		return false;
	}			
	finally
	{
		try
		{
			con_LD.commit();
						
		}
		catch(java.lang.Exception ex)
		{
			JOptionPane.showMessageDialog(null,""+ex.getMessage() ,"Erro ao tentar commit",1);
		}
		
	}				
	//gravou satisfatóriamente
	return true;
}

Você está fechando o objeto de ResultSet e depois chamando novamente:

Se o ResultSet está fechado, então ele não pode ser chamado. É provável que resolva se tu colocar o close dentro dos ifs. No entanto, para uma melhor avaliação da exceção, seria interessante identificar em qual linha do ‘erro’. O exceção não indica a linha?