Problema com FIREBIRD

Estou com o seguinte problema.
Estou desenvolvendo uma aplicação Desktop e usando o Firebird 1.5 como base de dados. Na aplicação eu uso uma JInternalFrame para cadastro e nesse JInternalFrame tem uma barra de navegação a qual eu tenho uma opção para voltar e outra para avançar. Assim, quando avançar ou voltar, ele ja pesquisa no banco e retorna o cadastro na ordem de códigos, mostrando ali na tela.
O problema é que o AVANÇAR vai normalmente, mas o VOLTAR não. Eu testei o mesmo código no MySQL e funcionou. Alguém sabe me dizer se esse erro é normal no Firebird?!

public void avancar(){
		try{
			if (rs.isLast()){
				return;
			}
			rs.next();
			Exibir();
		}catch(SQLException e){
		}
	}
	
	public void voltar(){
		try{
			if (rs.isFirst()){
				return;
			}
			rs.previous();
			Exibir();
		}catch(SQLException e){
			exclamacao("ERRO: "+e);
		}
	}

Obrigado! :wink:

A navegabilidade dentro de um result set depende muito da implementação do driver JDBC. Pode ser que o driver que você está usando não suporte esta operação.

Sugiro você ler tudo, colocar em uma lista e navegar usando a lista e não o result set do banco de dados. Esta abordagem tem as seguintes vantagens:

  • Você desacopla a interface com a parte de banco de dados
  • Você não deixa a conexão aberta enquanto o usuário navega

Valeu Guerr@! Não tinha visto desse ângulo.

Você poderia me dar um exemplo de como implementar essa lista?!

abração! :wink:

Segue estes passos:

  • Crie um objeto para representar uma linha da tabela
  • Crie um ArrayList list = new ArrayList();
  • Leia o result set inteiro e para cada linha crie um objeto e insira os dados
  • Vá adicionando cada objeto criado no list.add(obj)
  • Depois você pode manter um contador e recuperar qualquer elemnto da lista sem estar coma a conexão do banco aberta