Ajuda com erro, diz: este ResultSet está fechado

Senhores, preciso de uma ajuda, pois estou dando meus primeiros passos no Java e escolhi como projeto inicial fazer um Parser (arquivo de Log para banco de dados). A performance está ótima, quase 4 mil linhas/seg, porém ao modificar a estrutura do meu código estou tendo problema, acredito que para os mais antigos seja algo fácil de se resolver.

Criei um trecho de código para que os amigos possam ver o q pode estar acontecendo, o código é semelhante a este abaixo:

import java.sql.ResultSet;
import java.sql.SQLException;
public class Teste {
	private static final Postgres psql = new Postgres("10.254.254.245");
	public static void main(String[] args) {
    	Teste2();
	}
	public static void Teste2() {
		ResultSet rset;
		try {
			rset = psql.stmt.executeQuery("SELECT * FROM arquivo");
			while (rset.next()) {
				System.out.println("=> " + rset.getString(1));
				System.out.println("=> " + rset.getString("arquivo_nome"));
				if ((rset.getString("servidor")).equals("1")) {
					System.out.println("=> " + Teste3(Integer.parseInt(rset.getString("arquivo_status"))));
				}
				Teste4(rset.getString("arquivo_nome"));
			}
			rset.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	private static void Teste4(String s) {
		try {
			psql.stmt.addBatch("INSERT INTO arquivo (arquivo_nome) VALUES ('"+s+"')");
			psql.stmt.executeBatch();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	private static String Teste3(int i) {
		String msg = null;
		switch (i) {
			case 1:
				msg = "OK";
				break;
			case 2:
				msg = "ERRO";
				break;
		}
		return msg;
	}
}

Segue o erro:

org.postgresql.util.PSQLException: Este ResultSet está fechado.
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkClosed(AbstractJdbc2ResultSet.java:2439)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.next(AbstractJdbc2ResultSet.java:1813)
at Teste.Teste2(Teste.java:12)
at Teste.main(Teste.java:6)

Ahh, irei anexar o arquivo tb.

Muito obrigado e abraços

Acho que a variável stmt é um statement. Sugiro que vocÊ utilize um outro statement dentro de teste4, tipo stmt2

Boa sorte,

Márcio

Putz marcio, era isso mesmo. Só agora pude reparar meu erro, pois pensava que para fazer uma conexão persistente tinha que “instanciar” o stmt e não o con =(

Mto obrigado e como dizem dei uma “noobada” legal

Muito doida essa sua pergunta. O que seria:

private static final Postgres psql = new Postgres("10.254.254.245");

Você tem uma classe Postgres? Essa classe Postgres tem um método chamado stmt que gera um Statement?

rset = psql.stmt.executeQuery("SELECT * FROM arquivo");

Se tivesse, teria que ser no mínimo:

rset = psql.stmt().executeQuery("SELECT * FROM arquivo");

Isso daí compila?