Botoes de navegação de registros postgresql [RESOLVIDO]

Ola pessoal

Estou com um nó no cerebro em como criar botões para navegar nos registros do Postgree

Botões:

Primeiro Registro
Próximo Registro
Registro Anterior
Ultimo Registro

para o "Primeiro registo eu utilizo da seguinte forma

"select banc_codigo, banc_nome from banco where banc_codigo >= 1 limit 1";

o Último registro eu u tilizo da seguinte forma

"select banc_codigo, banc_nome from banco order by banc_codigo DESC limit 1";

meu problema é nos botões

Próximo Registro e Registro anterior q nao faço ideia de como posso fazer

Agradeço a atenção de todos

Mil desculpas eu esqueci de por o codigo de como estou tentando fazer os botões Próximo e Anterior.

Botão próximo registo


int reg = Integer.parseInt(txFuncCodigo.getText());  //pega o valor do "txFuncCodigo" Transforma em inteiro com o "parseint" e poe na variavel "reg"
        reg++;

        String sqlproximo = "select func_codigo, func_nome"
                + "from funcionario "
                + "where func_codigo >= " + reg + "limit 1";

        try {
            Connection conn = Conexao.getConexao();
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(sqlproximo); //executa consulta

            rs.next(); //envia os dados para a variavel "rs"
            txFuncCodigo.setText(rs.getString("func_codigo"));
            txFuncNome.setText(rs.getString("func_nome"));

        } catch (SQLException ex) {
            //JOptionPane.showMessageDialog(null, "Erro ao consultar Cliente \n" + ex.getMessage() + "\n" + ex.getCause());
        }

        if (txFuncCodigo.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "Você está no último registro.");
        }

Botão Registro Anterior

            int reg = Integer.parseInt(txFuncCodigo.getText());  //pega o valor do "txFuncCodigo" Transforma em inteiro com o "parseint" e poe na variavel "reg"

            reg--;

            String sqlproximo = "select func_codigo, func_nome"
                    + "from funcionario "
                    + "where func_codigo >= " + reg + "limit 1";

            try {
                Connection conn = Conexao.getConexao();
                Statement st = conn.createStatement();
                ResultSet rs = st.executeQuery(sqlproximo); //executa consulta

                rs.next(); //envia os dados para a variavel "rs"
                txFuncCodigo.setText(rs.getString("func_codigo"));
                txFuncNome.setText(rs.getString("func_nome"));

            } catch (SQLException ex) {
                //JOptionPane.showMessageDialog(null, "Erro ao consultar Cliente \n" + ex.getMessage() + "\n" + ex.getCause());
            }

demorei mas descobri.

Quero pedir desculpas para quem leu, acredito que nao me expressei bem

mas aqui esta a solução

[code]
int reg = Integer.parseInt(txFuncCodigo.getText()); //pega o valor do “txFuncCodigo” Transforma em inteiro com o “parseint” e poe na variavel "reg"
reg++;

    String sqlproximo = "select func_codigo, func_nome from funcionario where func_codigo = " + reg;



    try {
        Connection conn = Conexao.getConexao();
        Statement st = conn.createStatement();
        ResultSet rs = st.executeQuery(sqlproximo); //executa consulta
        if (!rs.next()) {
            JOptionPane.showMessageDialog(null, "Você está no último registro.");
        } else {
            
            txFuncCodigo.setText(rs.getString("func_codigo"));
            txFuncNome.setText(rs.getString("func_nome"));
        }
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Erro ao consultar proximo \n" + ex.getMessage() + "\n" + ex.getCause());
    }[/code]

Olá SombraVargas.

Baseado no que vc postou, faço uma pergunta: um vez que todo clique nos botões será feita uma pesquisa no BD, do ponto de vista do usuário, será que não pode ficar lento essas rotinas?

Como, a partir do código que vc postou, vc seleciona as mesmas colunas de uma determinada tabela, penso que seria melhor fazer uma navegação off-line, o que deixaria a interação app-usuario mais rápida (dependendo, é claro, de diversos fatores).

Assim, uma sugestão que eu faço seria:

  1. ter uma Enum para os botões;
  2. ter uma variável global para controlar o índice de navegação.
  3. ter uma variável global com a lista resultante da pesquisa no BD.

Na abertura da tela, vc faria a pesquisa no BD uma única vez. O código abaixo leva em consideração a proposta acima, assumindo ‘registros’ como nome da lista, ‘index’ como controle de registros e ‘botoes’ como a Enum.

//variáveis globais
private int index;
private List registros;

private void navega(Botoes botao){
   switch (botao){
      case PRIMEIRO: 
      //*1 faz as validações e mensagens necessárias
      index = 0;
      break;
   case ANTERIOR: 
      // *1
      index--;
      break;
   case PROXIMO: 
      // *1
      index++;
      break;
   default: 
      // *1
      index = registros.size()-1;
      break;
   }

   txFuncCodigo.setText(registros.get(index).getCodigo());  
   txFuncNome.setText(registros.get(index).getNome());
}

Espero ter sido claro no que eu disse.
Espero poder ajudar.

Abraços

berg.pb agradeco as dicas n tinha pensado nisso.

esse eh meu primeiro sisteminha em java sei mt pouco, mas agradeço as dicas.