Ajuda com while!

Bem estou precisando fazer a comparação entre os códigos que estão em dois arquivos, ARQ1 E ARQ2, só que não sei se estou fazendo certo, pois eu preciso comparar os códigos do ARQ2 com ARQ1, se o código do ARQ2 não existir em ARQ1 eu preciso pegar esse código que está em ARQ2 e colocá-lo dentro de ARQ1 ou jogá-lo dentro de um arquivo.txt.

Eu fiz assím.

while(rs.next()) 
{
//ARQ1
codigo = rs.getString("COD_PRODUT");
	while(rs1.next())
		{
                                 //ARQ2
	                codigo1 = rs1.getString("COD_PRODUTO");
		if (codigo1.equals(codigo) || codigo1 == codigo)
		    {
		     achoucodigo = true;
		     System.out.println(""+achoucodigo+"	"+codigo+"");
		     }
		else
		    {
		achoucodigo = false;
		System.out.println(""+achoucodigo+"	"+codigo1+"");
		}
	}
}

Não se preocupem com o arquivo texto isso eu já sei como implementar, meu problema é no código de como comprarar os dois e se não existir pegar o novo código.

Peço desculpas a TODOS os integrantes do GUJ, sei que isso é problema programação e não Java eu acho!! só que eu não tinha a quem recorrer só a vocês.

Agradeço muito qualquer ajuda. :wink:

O problema ocorre porque voce deveria voltar o objeto rs1 para o inicio, usando rs1.beforeFirst(), caso contrario ele somente ira ser executado ( por completo ) uma unica vez, o que logicamente nao eh o que voce quer.

Tambem nao eh necessario comparar os objetos ( usando == ), ja que nesse caso nao vai fazer diferenca alguma. Arrumado, sei codigo ficaria como

while(rs.next())
{
	//ARQ1
	codigo = rs.getString("COD_PRODUT");
	
	while(rs1.next())
	{
		//ARQ2
		codigo1 = rs1.getString("COD_PRODUTO");
		
		if (codigo1.equals(codigo))
		{
			achoucodigo = true;
			System.out.println(""+achoucodigo+"   "+codigo+"");
		}
		else
		{
			achoucodigo = false;
			System.out.println(""+achoucodigo+"   "+codigo1+"");
		}
	}
	
	// Faz o ponteiro voltar ao inicio
	rs1.beforeFirst();
}

Rafael

Está dando este erro!!

java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY

o que siguinifica e como posso resolver!!

Tente fazer assim :


rs.next();

do 
{ 

codigo = rs.getString("COD_PRODUT");
rs1.beforeFirst(); 
   
     while(rs1.next()) 
      { 
      codigo1 = rs1.getString("COD_PRODUTO"); 
           if (codigo1.equals(codigo) || codigo1 == codigo) 
           { 
               achoucodigo = true; 
              System.out.println(""+achoucodigo+"   "+codigo+""); 
            } 
           else 
           { 
           achoucodigo = false; 
           System.out.println(""+achoucodigo+"   "+codigo1+""); 
           } 
       } 
} 
while(rs.next());

Use no rs1 as propriedades que permitam voce mover o cursor para o primeiro registro enquanto o rs.next()

createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

[]´s

Está dando este erro no final, parece que ele não está voltando ao início para comparar com o próximo código, seri isso ou estou enganado!!

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state

Hum, voce setou o Statement com as propriedades?
Qual banco voce ta usando?

[]´s

Sim setei, o Statement como vc mensionou acima, eu não estou usando um banco ainda é um arquivo texto e um dbf que estou utilizando!!

E o driver de DBF suporta essas operacoes?

Rafael

Hum darta, com arquivo nunca fiz.
Pensei que esses resultset eram resultado de um consulta no banco, algo assim!

[]´s

Rafa agora não sei, estou usando JDBC:ODBC!! teria como eu saber se o ODBC que criei ele suporta ou não essas propriedades.

Deve ter uma explicação para este erro certo??

darta:

este banco que vc esta usando aceita sim os codigos e as propriedades que foram colocados acima…quando vc da um next() em um resultset ele avança o “ponteiro” do registro e corre todos os registros.
Com arquivo tb nunca havia feito, mas agora que vc esta usando BD, vai na fé que dá certo!

Ate mais…