ResultSet

Olá pessoal. É o seguinte: Tenho que fazer uma Agenda com acesso à Banco de Dados com uma Interface Gráfica e tudo mais. Nesta Agenda deve ter o botão OK que grava no BD, o botão Limpar que limpa todos os campos, o botão > que mostra na tela o próximo registro da Agenda, o botão < que mostra o registro anterior, o botão << que mostra o 1° registro e o botão >> que mostra o último registro. A minha dificuldade é implementar o botão > e pra isso eu estou usando o ResultSet com a variável rs assim: ResulstSet rs; e estou usando o método rs.next(); dentro do método do botão, com esse código:

private void btnproximoActionPerformed(java.awt.event.ActionEvent evt) {

    try{
    
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    
    String url = "jdbc:odbc:Banco";
        
    Connection con = DriverManager.getConnection(url);
        
    Statement stm = con.createStatement();
    
    String consulta = "SELECT * FROM Agenda";  
    
    ResultSet rs = stm.executeQuery(consulta);
 
    rs.next();
    
    System.out.println(rs.getString("Nome") + " " + rs.getString("Endereço"));
    
    stm.close();
                
    con.close();  
    
    }catch(java.lang.Exception ex){
        ex.printStackTrace(); 
    }

}

Só que com esse código ele fica mostrando na tela sempre o 1° registro, então se alguem puder me ajudar eu agradeceria muito.

Seguinte…

Vc da um select pega o primerio registro e fecha tudo…

Ai, quando clica no botão >, ele faz isso tudo de novo, entendeu???

É que vc esta pegando sempre o primeiro registro.

Para executar isso de forma correta, vc tem que pegar sempre o registro atual + 1, de alguma forma, por um ID, número de linha ou qualquer outra forma.

t+

Ola eu tenho um outro problema ir para frente e para ultimo esta certo mas quando eu uso previous ele me da um erro No not implemented
Voce teria como me ajudar

Amigo,

O seu problema eu já tive e a forma que consegui resolver foi :

1 - Criar um VO ( um Bean java com set e get somente) para “encapsular” os dados que retorno da Query;
2 - Fiz a query e gerei uma Colleçao com os objetos encontrados. Ex:

ArrayList list = new ArrayList();
rs.next(){
    ExemploVO vo = new ExemploVO();
    vo. setNome(r.getString("nome"));
    vo. setSbrubles(r.getString("sbrubles"));
    ....
    list.add(vo);
}

Depois é só “navegar” nos dados da coleçao:

int indice = 0 ; // ou valor que deve ser 1,2,3,... 
ExemploVO vo = (ExemploVO) list.get(indice);

Acho que isso resolver o seu problema e evita que vc crie outros, como por exemplo ter conexão aberta, statament aberto e por aí vai…

Quanto ao previuos…

Isso ocorre, porque se vc criar um Statement sem nenhum argumento, o seu ResultSet, será somemente para leitura e poderá somente seguir para frente passando de linha por linha.

Se quiser criar um ResultSet navegavel, veja aqui como fazer. Procure por Scrollable

http://java.sun.com/developer/Books/JDBCTutorial/index.html

t+

btafarelo Mesmo usando ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY
Ele continua dando erro.