ResultSet

Estou tentando fazer com que meu resultset seja “navegável”, coloquei os parametros necessários na criação do prepareStatment, mas quando testo o resultSet.first(), estou tendo um erro de NullPointException. O que quero na verdade é navegar pelos registros utilizando botões de navegação (primeiro, próximo…). Qual a melhor forma de fazê-lo, não gostaria de retornar um List com os dados. Alguma idéia para me ajudar ? Obrigado.

Em relação ao erro, algo me diz que seu objeto resultSet é nulo.

Para “popular” o seu ResultSet, vc antes tem que dar o executeQuery(), que, pelo que entendi do teu post, vc não usou ainda.

Além disso, você deve entender algumas regrinhas:

1 - ResultSet Será nulo, enquanto não for lhe passado nada para apontar (o que o amigo se referiu, a popular)
1.1 - O apontador, apontará para onde a query executada for alimentada
2 - Uma query do tipo: “select * from tabela”, deixará o resultset apontando sempre pro registro 0
2.1 - Para resolver, utilize o .first(), logo após a execução da query
3 - Toda vez que você adicionar/atualizar/remover dados da tabela, o resultset deve ser atualizado, senão ele não achará as modificações
4 - Para seu navegador funcionar em sincronismo, aconselho você comentar bem seus métodos: proximo(), anterior(), gravar()/atualizar(), excluir() …
5 - proximo() e anterior() - Aqui tu pode ter alguns erros de referencia, uma vez que o resultSet navega em registros nulos, então faça um bom tratamento aqui. DICA:

boolean ande = rs.next(); //Faz o rs apontar pro proximo registro if (ande) { codigo ok } //se contem algo lá e não for nulo, faça seu codigo else rs.previous() //senão, volte um registro para trás (para não sair da sincronia de registros válidos

Método que fiz para atualizar o RS, apontando para o registro que contenha certo dado:

private void atualizaRS(String item) { try { rs.first(); while (!rs.getString("suaColuna").equalsIgnoreCase(item)) { rs.next(); } } catch (Exception e) { System.out.println("Erro [atualizaRS]: "+e); } }

Boa sorte :slight_smile:

Valeu pessoal, vou considerar as sugestões e fazer as correções necessárias no código.

Obrigado.