Ajuda - Movimentação de Registros

4 respostas
A

Alguém tem um exemplo
de um programa que conecta com banco de dados e faz movimentações
dos registros, tipo, proximo, anterior, etc.

Estou conseguindo conectar e apresentar os dados, mas na hora de
ficar movimentando não está dando certo.

Depois que fiz a conexao, crei os objeitos Statement e ResultSet,
eu criei os dois metodos abaixo, para ir para o registro anterior
e próximo registro, respectivamente. Consigo ir para o próximo, mas não consigo voltar.

Alguem tem uma ideia melhor de fazer isto, ou uma solução para meu código?

Obrigado.
Anderson

[color=green] public void anteriorReg() {

String codigo, municipio;
try{

rec.previous();

codigo = rec.getString(1);	

municipio = rec.getString(2);
textMunicipio.setText(municipio);
            textCod.setText(codigo);

}

catch (Exception e ){

System.out.println ("Erro");

}

}
public void proximoReg() {

String codigo, municipio;

try{

rec.next();

codigo = rec.getString(1);	

municipio = rec.getString(2);
textMunicipio.setText(municipio);
            textCod.setText(codigo);

}

catch (Exception e ){

System.out.println ("Erro");

}

}[/color]

4 Respostas

robinsonbsilva

Qual erro, ou problema ocorre??

Se possível posta o fonte, pois o que vc fez aparentemente está correto, mas seria bom ver todo o contexto…

tank’s.

A

O Codigo de azul, função do registro anterior, está lançando uma exceção “erro”.

Valeu

[color=green]/*

  • principal.java
  • Created on 27 de Julho de 2005, 11:41
    */
package projetoteste;

import javax.sql.<em>;

import java.sql.</em>;

/**
*

  • @author  andersonc
    
    */
    
    public class principal extends javax.swing.JFrame {
    
    Connection conn;
    
    Statement    st;
    
    ResultSet rec;
    

    /** Creates new form principal */
    public principal() {

    initComponents();
     abreConexao();
     //preencheForm();
     bdMunicipio();
     //preenchecampos();
    

    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      public void abreConexao(){

      setBounds(20,20,400,400);
      
      String Cadastro = jdbc:odbc:conexaoMunicipios;
      
      try{
      
      Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
      
      conn = DriverManager.getConnection(Cadastro, “”,"");
      

      }

      catch (Exception e){
      
      System.out.println("Error: " + e.toString() + e.getMessage());
      
      }
      

    }

    private void initComponents() {
    
    textMunicipio = new java.awt.TextField();
    
    label1 = new java.awt.Label();
    
    textCod = new java.awt.TextField();
    
    label2 = new java.awt.Label();
    
    jbAnterior = new javax.swing.JButton();
    
    jbProximo = new javax.swing.JButton();
    
    jComboBox1 = new javax.swing.JComboBox();
    
    jMenuBar1 = new javax.swing.JMenuBar();
    
    jMenu1 = new javax.swing.JMenu();
    
    jMenuItem1 = new javax.swing.JMenuItem();
    
    jMenu2 = new javax.swing.JMenu();
    
    getContentPane().setLayout(null);
    
     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
     setSize(400,400);
     setMaximizedBounds(new java.awt.Rectangle(20, 20, 400, 400));
     addWindowListener(new java.awt.event.WindowAdapter() {
         public void windowClosing(java.awt.event.WindowEvent evt) {
             formWindowClosing(evt);
         }
         public void windowOpened(java.awt.event.WindowEvent evt) {
             formWindowOpened(evt);
         }
     });
    
     getContentPane().add(textMunicipio);
     textMunicipio.setBounds(40, 100, 160, 25);
    
     label1.setAlignment(java.awt.Label.RIGHT);
     label1.setText("Municipio");
     getContentPane().add(label1);
     label1.setBounds(20, 40, 70, 20);
    
     getContentPane().add(textCod);
     textCod.setBounds(290, 60, 80, 25);
    
     label2.setText("Codigo");
     getContentPane().add(label2);
     label2.setBounds(290, 40, 40, 20);
    
     jbAnterior.setText("Anterior");
     jbAnterior.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             jbAnteriorActionPerformed(evt);
         }
     });
    
     getContentPane().add(jbAnterior);
     jbAnterior.setBounds(170, 180, 71, 23);
    
     jbProximo.setText("Proximo");
     jbProximo.setDebugGraphicsOptions(javax.swing.DebugGraphics.NONE_OPTION);
     jbProximo.setOpaque(false);
     jbProximo.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             jbProximoActionPerformed(evt);
         }
     });
    
     getContentPane().add(jbProximo);
     jbProximo.setBounds(80, 180, 71, 25);
    
     jComboBox1.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             jComboBox1ActionPerformed(evt);
         }
     });
    
     getContentPane().add(jComboBox1);
     jComboBox1.setBounds(40, 60, 200, 22);
    
     jMenu1.setText("Arquivo");
     jMenu1.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             jMenu1ActionPerformed(evt);
         }
     });
    
     jMenuItem1.setText("Sair");
     jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             jMenuItem1ActionPerformed(evt);
         }
     });
    
     jMenu1.add(jMenuItem1);
    
     jMenuBar1.add(jMenu1);
    
     jMenu2.setText("Municipios");
     jMenuBar1.add(jMenu2);
    
     setJMenuBar(jMenuBar1);
    
     pack();
    

    }

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
    
    System.exit(0);
    
    // TODO add your handling code here:
    
    }
    
    private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt) {
    
    // TODO add your handling code here:
    
    }
    
    private void formWindowOpened(java.awt.event.WindowEvent evt) {
    
    // TODO add your handling code here
    
    }
    

    private void formWindowClosing(java.awt.event.WindowEvent evt) {

    }

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
    
    /*
    
    String item = (String) jComboBox1.getSelectedItem();
    

    try{

    Statement    st = conn.createStatement();
    

    ResultSet rec = st.executeQuery(“SELECT * FROM TBMunicipio”);

    while (rec.next()) {
     if (item.equals(rec.getString(2))){ 
         textField1.setText(item);
         textCod.setText(rec.getString(1));
         
     }
    
    }
    
    st.close();
    
    }
    
    catch (Exception e){
    
    System.out.println(Erro no comando SQL de Consulta);
    
    }        // TODO add your handling code here:
    
    */
    
    }
    
    private void jbAnteriorActionPerformed(java.awt.event.ActionEvent evt) {
    
    anteriorReg();
    

    }

    public void preencheForm () {

    Statement st1;
    ResultSet rec1;

    try{
    
    st1 = conn.createStatement();
    rec1 = st.executeQuery("SELECT * FROM TBMunicipio");
    
           String municipio, codigo;
     
     while (rec1.next()) {
         
             codigo = rec1.getString(1);	
             municipio = rec1.getString(2);
             
             jComboBox1.addItem(municipio);
             textCod.setText(codigo);
    

    }

    rec1.close();
    

    }

    catch (Exception e){
    
    System.out.println(Erro no comando SQL de Consulta);
    
    }
    

    }

    private void jbProximoActionPerformed(java.awt.event.ActionEvent evt) {
    
    proximoReg();
    
    /*
    
    try{
    
    String municipio, codigo;
    rec.next(); 
    codigo = rec.getString(1);	
    municipio = rec.getString(2);
             
             jComboBox1.addItem(municipio);
             textCod.setText(codigo);
    

    }

    catch (Exception e){
    
    System.out.println(Erro Comando SQL);
    
    }*/
    

    }

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new principal().setVisible(true);
      //new Formveiculo().show(true);
      }
      });
      }

    public void bdMunicipio() {

    try{
    
    st = conn.createStatement();
    rec = st.executeQuery("SELECT * FROM TBMunicipio");
    
           String municipio, codigo;
     
     rec.next();        
             codigo = rec.getString(1);	
             municipio = rec.getString(2);
             
             textMunicipio.setText(municipio);
             textCod.setText(codigo);
    

    }

    catch (Exception e){
    
    System.out.println(Erro no comando SQL de Consulta);
    
    }
    

    }

    public void proximoReg() {
    
    String codigo, municipio;
    
    try{
    
    rec.next();
    
    codigo = rec.getString(1);	
    
    municipio = rec.getString(2);
    
    textMunicipio.setText(municipio);
             textCod.setText(codigo);
    

    }

catch (Exception e ){

System.out.println ("Erro");

}

}

[color=blue] public void anteriorReg() {

String codigo, municipio;
try{

rec.previous();

codigo = rec.getString(1);	

municipio = rec.getString(2);
textMunicipio.setText(municipio);
            textCod.setText(codigo);

}

catch (Exception e ){

System.out.println ("Erro");

}

}[/color]    
// Variables declaration - do not modify
private javax.swing.JComboBox jComboBox1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JButton jbAnterior;
private javax.swing.JButton jbProximo;
private java.awt.Label label1;
private java.awt.Label label2;
private java.awt.TextField textCod;
private java.awt.TextField textMunicipio;
// End of variables declaration

}[/color]

robinsonbsilva

Apenas uma dica, para saber qual erro está ocorrendo, ao invés de vc colocar:

}catch (Exception e ){
            System.out.println("Erro");
        }

Faça assim, pelo menos terá uma descrição do que realmente ocorre:

}catch (Exception e ){
            System.out.println("Descrição do erro: " + e.getMessage());
        }

Após fazer essa alteração, poste descrição do erro.

B

Por default, os result sets são forward only. Ou seja, vc só pode ir para frente… por isso o seu código dá erro: Vc está tentando voltar.

Para criar um result set “rolável”, veja a documentação em: http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html

Criado 2 de agosto de 2005
Ultima resposta 2 de ago. de 2005
Respostas 4
Participantes 3