Estou gerando um arquivo texto baseado numa consulta ao banco de dados. Esse arquivo texto é um layout que precismaos enviar para o ministério da saúde.
Porém, como são muitos registros (o arquivo final ficará com cerca de 800KB de texto) a operação não é completada.
O arquivo simplesmente para num ponto e na mensagem de expection simplesmente aparece null. (Estou gerando isso apartir de uma jsp).
De maneira alguma, o que pode estar acontecendo é que simplesmente o final do ResultSet é atingido. Uma dica: chame o flush somente após escrever tudo o que você precisa.
jks1903
Inicialmente eu estava fazendo assim, porém eu tentei chamar o flush a cada linha para ver se mudava alguma coisa.
E o fim do resultSet não deveria ser o fim de todos os registros?
Pergunto isso porque esse trecho está caindo na Exception, no meio do processo. A query retorna aprox 2500 linhas e esse erro ocorre por volta da linha 800.
E o mais estranho é que o getMessage da Exception retorna null.
jks1903
Apenas mais um detalhe.
Limitei o SELECT (que é feito em base ORACLE) para retornar somente 350 linhas.
Aí funcionou perfeitamente.
Os ResultSets tem um limite máximo de registros?
jks1903
Pessoal estive procurando a respeito e não encontrei nada referente aos ResultSets terem um limite de registros.
Alguém saberia me informar se há algo assim?
Porque como disse antes, limitei o numero de linhas apenas para teste. Porém eu preciso trabalhar com todos esses dados juntos, de forma a gerar um arquivo txt com os mesmos.
Se alguém souber aí, da uma força.
Vlw.
jamirdeajr
Sugestões:
Tentar encontrar um padrão, verificar se sempre está parando no mesmo ponto (você já citou que é aproximadamente na linha 800);
Se sim, verificar se não tem nenhum valor inválido em algum campo;
Uma das possibilidades é de que o campo está com valor NULL (dirty), na primeira ocorrência está causando exception no write (que causa NullpointerException porém o getMessage = null)
Stringcampo;while(rsC2.next()){for(inti=1;i<=20;i++){campo=rsC2.getString(i);if(campo!=null)wrt.write(campo);elsewrt.write("*** valor NULL ***");// ou o que achar melhor}wrt.flush();Arquivo.novaLinha(wrt);}rsC2.close();