Erro no select "Invalid cursor state"

galera to com esse erro “Invalid cursor state” quando tento fazer um select num banco sQL server??

alguma Ideia??

[code]public void verificaCnpjCadastrado(Collection list) throws SQLException{
Iterator it = list.iterator();
String sql = (“Select idEmpresa from tblCadastranteDeEmpresa”);
conexaoSQLServer = con.conectarBancoSqlServer();
stmt = conexaoSQLServer.createStatement();
rs = stmt.executeQuery(sql);
String cnpj=rs.getString(“idEmpresa”);
Sindical_Bean beanInterno;

	while(it.hasNext()){
		beanInterno = (Sindical_Bean) it.next();
			if(beanInterno.getCnpj().equalsIgnoreCase(cnpj))
				listaCNPJCadastrado.add(cnpj);
			else	
				listaValidos.add(beanInterno);
				
	}
	
rs.close();
}[/code]

Falow!!!

Neste ponto ainda não foi carregado nenhum registro (é isso que o "next" faz). Por isso ocorre o tal erro.

Faça isto:

                String cnpj;
 		Sindical_Bean beanInterno;
 		
 		while(it.hasNext()){
                        cnpj = rs.getString("idEmpresa"); //<-- agora você pode pegar o campo no banco
 			beanInterno = (Sindical_Bean) it.next();
 				if(beanInterno.getCnpj().equalsIgnoreCase(cnpj))
 					listaCNPJCadastrado.add(cnpj);
 				else	
 					listaValidos.add(beanInterno);
 					
 		}

thingol e fiz essa modificação mas o erro continua???

[code]public void verificaCnpjCadastrado(Collection list) throws SQLException{
Iterator it = list.iterator();
String sql = (“Select idEmpresa from tblCadastranteDeEmpresa”);
conexaoSQLServer = con.conectarBancoSqlServer();
stmt = conexaoSQLServer.createStatement();
rs = stmt.executeQuery(sql);
String cnpj;
Sindical_Bean beanInterno;

	while(it.hasNext()){
		cnpj=rs.getString("idEmpresa");
		beanInterno = (Sindical_Bean) it.next();
			if(beanInterno.getCnpj().equalsIgnoreCase(cnpj))
				listaCNPJCadastrado.add(cnpj);
			else	
				listaValidos.add(beanInterno);
				
	}
	
rs.close();
}[/code]

Falow!!1

Aham, confundi "it.next()" com "rs.next()", mas você sabe que isso acontece até nas melhores famílias :frowning:

                        if (rs.next()) {
 			cnpj=rs.getString("idEmpresa"); //<< aham - confundi "it.next()" com "rs.next())
 		while(it.hasNext()){
 			beanInterno = (Sindical_Bean) it.next(); 
 				if(beanInterno.getCnpj().equalsIgnoreCase(cnpj))
 					listaCNPJCadastrado.add(cnpj);
 				else	
 					listaValidos.add(beanInterno);
 					
 		}
                }

Que isso cara!!!
Voce ajudou pra caramba!!! :smiley: :smiley:
Vou testar e assim que conseguir posto o codigo pra todo mundo ver!!!

Falow!!

Thingol eu fiz a alteração e o problema de cursor se foi, mas apareceu um referente “ConcurrentModificationException” acho q isso sao threads, eu achei no google um tutorial com isso aki mesmo do guj, mas nao entendi muito bem
http://www.guj.com.br/java.article.get.print.chain?article.id=110

Se nao for pedir muito da pra voce olhar so mais esse problema pra mim.

[code]public void verificaCnpjCadastrado(Collection list) throws SQLException{
Iterator it = list.iterator();
String sql = (“Select idEmpresa from tblCadastranteDeEmpresa”);
conexaoSQLServer = con.conectarBancoSqlServer();
stmt = conexaoSQLServer.createStatement();
rs = stmt.executeQuery(sql);
String cnpj;
Sindical_Bean beanInterno;

	 if (rs.next()) {
		cnpj=rs.getString("idEmpresa");
	while(it.hasNext()){
		
		beanInterno = (Sindical_Bean) it.next();
			if(beanInterno.getCnpj().equalsIgnoreCase(cnpj))
				listaCNPJCadastrado.add(cnpj);
			else	
				listaValidos.add(beanInterno);
				
	}
	}
rs.close();
}[/code]

Obs: Eu tambem to procurando a resposta beleza!!1
Falow!!!

 				if(beanInterno.getCnpj().equalsIgnoreCase(cnpj))
 					listaCNPJCadastrado.add(cnpj);
 				else	
 					listaValidos.add(beanInterno);

Por acaso “list” que você passou como parâmetro é uma dessas duas listas? Se for, lembre-se que quando você “anda” sobre a lista usando o iterador, não pode ao mesmo tempo adicionar (add) nela.

Isso não é coisa de threads.

Essa list era a que eu ia inserir "Listavalidos "

Vou testar, mas acho que o erro e esse mesmo!!!

Falow!!!