Ajuda com while!

10 respostas
D

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:

10 Respostas

Rafael_Steil

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

D

Está dando este erro!!

java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY

o que siguinifica e como posso resolver!!

thiagorani

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

D

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

thiagorani

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

[]´s

D

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!!

Rafael_Steil

E o driver de DBF suporta essas operacoes?

Rafael

thiagorani

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

[]´s

D

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??

richardpeder

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…

Criado 19 de março de 2003
Ultima resposta 23 de mar. de 2003
Respostas 10
Participantes 4