Ele puxa os dados e começa a carregar isto num arquivo, o problema que chega um determinado tempo ele congela e não anda mais, para de carregar o texto e fica travado.
A consulta é um pouco pesada, mas ela abre normalmente, o problema esta quando fico no while desse resultset carregando o texto
Existe alguma solução para isto? Um querytimeout para resultset talvez?
Mudar o valor do timeout pode resolver o problema a curto prazo, mas vc poderá ter a mesma coisa caso a pesquisa fique ainda maior.
Tente repensar a tua solução.
-Depois de quanto tempo o sistema trava? Vc tem dois IO a cada loop: uma chamada ao DB e outra ao arquivo.
-Quantos registros vc espera ter? -> Tente escrever o arquivo em blocos de X linhas.
limpa seu stringbuilder ao inves de criar um new StringBuilder a cada iteração… cada new em um objeto consome memoria mesmo com a jvm excluindo objetos sem referencia…
usa o newLine do bufferedwriter ao invés de usar sbLinha.append("\r\n")
faz isso: for(i=2;i<=num_campos;i++)
logo no começo… com o valor de i = 0… e se for zero q vc nao quiser nada com a coluna 0; da um continue… desse modo, vc testa se o valor do campo == null em todos os campos
tenta quebrar o arquivo de texto depois de X linhas… pra ver se ele ta gravando certinho e tal… e vai liberando aos poucos pra ver q exata linha e resultSet ele trava… se estiver com pressa de encontrar a solução, divida o arquivo depois de X linhas… assim se o texto ficar muito longe, gera vários arquivos