Ajuda com ResultSet/Driver OBDC+Access

Salve!
antes de mais nada peço desculpas se o código estiver muito estranho, mas eu estou começando em Java, estava acostumado com VB.

estou fazendo um programa para testar a conexão/manipulação dos dados contidos em um banco e por enquanto tenho isso:

é bem básico mesmo.

tenho 4 classes, são elas: Co (conexão), Main, JFrame(responsável pela interface gráfica) e Registro(responsável por armazenar as variáveis).

Main

[code]package teste;

import javax.swing.JOptionPane;
//import java.sql.*;

/**
*

  • @author andre
    */
    public class Main {

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {
      // TODO code application logic here
      java.awt.EventQueue.invokeLater(new Runnable() {

       public void run() {
           new JFrame().setVisible(true);
       }
      

      });
      //Registros rg = new Registros();

      Co co = new Co();
      //co.conectar();
      co.fazConsulta(co.con);
      //co.desconectar(co.con);
      //co.nextCand(co.lista);

      Registros rg_1;
      rg_1 = (Registros)co.lista.get(1);

       rg_1.getCod();
       rg_1.getDatanasc();
       rg_1.getNome();
       rg_1.getRg();
       rg_1.getSexo();
      

      JOptionPane.showMessageDialog(null, "Cod.: " + rg_1.getCod() + "\nNome: " + rg_1.getNome() + "\nDataNasc: " + rg_1.getDatanasc() + "\nRG: " + rg_1.getRg() + "\nSexo: " + rg_1.getSexo());

      //co.nextCand(co.fazConsulta(co.con), co.i);

    }
    }
    [/code]

Co

[code]package teste;

import java.sql.*;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
*

  • @author andre
    */
    public class Co {

    //Método construtor da classe
    public Co() {
    }
    Connection con_1 = conectar();
    Connection con;
    ResultSet rs;
    Statement stm;
    Registros rg = new Registros();
    ArrayList lista = new ArrayList();
    String select = “SELECT * FROM teste_import”; //comando SQL
    int i = 0;

    public Connection conectar() {
    try {//Driver
    Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
    } catch (ClassNotFoundException e) {
    JOptionPane.showMessageDialog(null, "Impossível carregar o Driver. Erro: " + e);
    }
    try {//Escolhe o banco de acordo com o que foi definido via Ferramentas Administrativas/Fonte ODBC
    con = DriverManager.getConnection(“jdbc:odbc:selecao”);
    //JOptionPane.showMessageDialog(null, “Conexão OK!”);
    } catch (SQLException sqle) {
    JOptionPane.showMessageDialog(null, "Não foi possível conectar ao banco. Erro: " + sqle);
    }
    return con;
    }

    public void desconectar(Connection con) {
    try {
    con.close();
    } catch (SQLException sqle) {
    JOptionPane.showMessageDialog(null, "Não foi possível desconectar do banco. Erro: " + sqle);
    }
    //JOptionPane.showMessageDialog(null, “Desconexão OK!”);
    }

    public ArrayList fazConsulta(Connection con) {
    try {
    //JOptionPane.showMessageDialog(null, "con: " + con);
    stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    //Salva o resultado da consulta em um objeto rs
    rs = stm.executeQuery(select);
    while (rs.next()) {
    rg = new Registros();
    rg.setCod(rs.getInt(“codcand”));
    rg.setNome(rs.getString(“nomecand”));
    rg.setDatanasc(rs.getString(“datanasc”));
    rg.setSexo(rs.getString(“sexo”));
    rg.setRg(rs.getString(“rg”));
    lista.add(rg);
    //MessageDialog para testar se todos os códigos estão sendo passados
    //JOptionPane.showMessageDialog(null, rg.getCod());
    }

     } catch (SQLException sqle) {
         JOptionPane.showMessageDialog(null, "Não foi possível realizar a consulta. Erro: " + sqle);
     } finally {
         try {
             if (rs != null) {
                 rs.close();
             }
             if (stm != null) {
                 stm.close();
             }
             if (con != null) {
                 con.close();
             }
         } catch (SQLException sqle) {
             JOptionPane.showMessageDialog(null,"Erro:" + sqle);
         }
     }
     return lista;
    

    }

    public void nextCand(ArrayList lista, int i) {
    Registros rg_1;
    rg_1 = (Registros) lista.get(i);

     rg_1.getCod();
     rg_1.getDatanasc();
     rg_1.getNome();
     rg_1.getRg();
     rg_1.getSexo();
    
     //JOptionPane.showMessageDialog(null, "oi");
     JOptionPane.showMessageDialog(null, "Cod.: " + rg_1.getCod() + "\nNome: " + rg_1.getNome() + "\nDataNasc: " + rg_1.getDatanasc() + "\nRG: " + rg_1.getRg() +  "\nSexo: " + rg_1.getSexo());
     i += 1;
    

    }

    /*
    public void prevCand(ArrayList lista, int i) {

    }

    public void descartar() {
    }

    public void gravar() {
    }

    public int exibir() {
    return rg.getCod();
    }
    */
    }
    [/code]

Registros

[code]package teste;

/**
*

  • @author andre
    */
    public class Registros {

    int codcand;
    String nomecand, datanasc, sexo, rg;

    public Registros() {
    }

    public void setCod(int codcand) {
    this.codcand = codcand;
    }

    public int getCod() {
    return codcand;
    }

    public void setNome(String nomecand) {
    this.nomecand = nomecand;
    }

    public String getNome() {
    return nomecand;
    }

    public void setDatanasc(String datanasc) {
    this.datanasc = datanasc;
    }

    public String getDatanasc() {
    return datanasc;
    }

    public void setSexo(String sexo) {
    this.sexo = sexo;
    }

    public String getSexo() {
    return sexo;
    }

    public void setRg(String rg) {
    this.rg = rg;
    }

    public String getRg() {
    return rg;
    }

}
[/code]

JFrame

[code]package teste;

import javax.swing.JOptionPane;
/**
*

  • @author andre
    */
    public class JFrame extends javax.swing.JFrame {

    /** Creates new form JFrame */
    public JFrame() {
    initComponents();
    }
    Co co = new Co();

    // Iterador para passar o valor do registro a ser buscado quando usuário clicar “next”
    int i = 0;

    /** 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.
      */
      @SuppressWarnings(“unchecked”)
      //
      private void initComponents() {

      jLabel1 = new javax.swing.JLabel();
      txtCod = new javax.swing.JTextField();
      conectar = new javax.swing.JButton();
      desconectar = new javax.swing.JButton();
      descartar = new javax.swing.JButton();
      gravar = new javax.swing.JButton();
      proximo = new javax.swing.JButton();
      anterior = new javax.swing.JButton();
      exibir = new javax.swing.JButton();

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      jLabel1.setText(“código”);

      txtCod.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      txtCodActionPerformed(evt);
      }
      });

      conectar.setText(“conectar”);
      conectar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      conectarActionPerformed(evt);
      }
      });

      desconectar.setText(“descon.”);
      desconectar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      desconectarActionPerformed(evt);
      }
      });

      descartar.setText(“descartar”);
      descartar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      descartarActionPerformed(evt);
      }
      });

      gravar.setText(“gravar”);
      gravar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      gravarActionPerformed(evt);
      }
      });

      proximo.setText(“próximo”);
      proximo.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      proximoActionPerformed(evt);
      }
      });

      anterior.setText(“anterior”);
      anterior.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      anteriorActionPerformed(evt);
      }
      });

      exibir.setText(“exibir”);
      exibir.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      exibirActionPerformed(evt);
      }
      });

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addGap(21, 21, 21)
      .addComponent(conectar)
      .addGap(18, 18, 18)
      .addComponent(desconectar)
      .addGap(18, 18, 18)
      .addComponent(descartar)
      .addGap(18, 18, 18)
      .addComponent(gravar)
      .addGap(18, 18, 18)
      .addComponent(anterior)
      .addGap(18, 18, 18)
      .addComponent(proximo))
      .addGroup(layout.createSequentialGroup()
      .addGap(195, 195, 195)
      .addComponent(jLabel1)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(txtCod, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addGap(18, 18, 18)
      .addComponent(exibir)))
      .addContainerGap(23, Short.MAX_VALUE))
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addGap(35, 35, 35)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(txtCod, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addComponent(exibir))
      .addComponent(jLabel1))
      .addGap(41, 41, 41)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(conectar)
      .addComponent(desconectar)
      .addComponent(descartar)
      .addComponent(gravar)
      .addComponent(anterior)
      .addComponent(proximo))
      .addContainerGap(30, Short.MAX_VALUE))
      );

      pack();
      }//

    private void conectarActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    }

    private void anteriorActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    }

    private void txtCodActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    }

    private void descartarActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    txtCod.setText(null);
    txtCod.requestFocus();
    }

    private void desconectarActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    }

    private void proximoActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    //co.nextCand(co.lista);
    //i += 1;
    //JOptionPane.showMessageDialog(null, co.lista.get(i));
    co.nextCand(co.fazConsulta(co.con_1), co.i);
    }

    private void gravarActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    }

    private void exibirActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    }
    /**

    • @param args the command line arguments
      /
      /
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new JFrame().setVisible(true);
      }
      });
      } */
      // Variables declaration - do not modify
      private javax.swing.JButton anterior;
      private javax.swing.JButton conectar;
      private javax.swing.JButton descartar;
      private javax.swing.JButton desconectar;
      private javax.swing.JButton exibir;
      private javax.swing.JButton gravar;
      private javax.swing.JLabel jLabel1;
      private javax.swing.JButton proximo;
      private javax.swing.JTextField txtCod;
      // End of variables declaration
      }
      [/code]

problema novo:

ao iniciar o programa exibe uma MessageDialog com os dados do registro n.0(primeira linha) do banco, depois, ao clicar em “próximo”(que chama a função nextCand da classe Co) ele mostra o registro n.1(segunda linha do banco), normal, mas ao clicar “próximo” pela segunda vez o programa fecha e gera um relatório de erro. As primeiras linhas desse relatório são:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c90100b, pid=4036, tid=3660
#
# JRE version: 6.0_16-b01
# Java VM: Java HotSpot(TM) Client VM (14.2-b01 mixed mode windows-x86 )
# Problematic frame:
# C  [ntdll.dll+0x100b]
#

andei pesquisando e li algum post dizendo que não é bom usar ODBC, pois tem vários bugs mesmo. Como fazer para conectar a um banco Access sem usar ODBC?(e sem comprar drivers…)

Toda e qualquer ajuda é bem-vinda, tal como críticas construtivas.
Agradeço desde já!
abraço.

o erro ocorre no método teste.Co.nextCand. Mas vc não publicou esse método.

falha minha, nextCand é o nome que eu dei anteriormente para o método fazConsulta.

falha minha, nextCand é o nome que eu dei anteriormente para o método fazConsulta.[/quote]

Cara, bom dia, bom sou super novo aqui no forum tb, e estou estuando java… tb… vou tentar responder e peco aqueles que ja tem grande conhecimento que digam se eu estiver errado. Acredito que sua linha de raciocinio esta correta sim, voce tem que criar um Array de objetos que sao referentes ao resultset, Tipo assim seu resultset retorna clientes, voce tem que fazer um array de clientes e povoar esses array com o resultado do resultset. Abaixo segue um codigo que como eu fiz, nao sei se é o melhor jeito :

	public List<Cargos> selectTodos(){
		List<Cargos> listCargos = new ArrayList<Cargos>(); 
		Connection conn         = FabricaDB.getInstance().getConnection();
		String SQL              = "SELECT * FROM CARGOS"; 
		try {
			PreparedStatement stmt = conn.prepareStatement(SQL); 
			boolean result = stmt.execute(); 
			if (result == true) {
				ResultSet rs = null;
				rs = stmt.getResultSet();
				while (rs.next()){
					Cargos cargo = new Cargos();
					cargo.setCodigo(rs.getInt("CODIGO")); 
					cargo.setcodProfissao(rs.getInt("COD_PROFISSAO"));
					cargo.setDescricao(rs.getString("DESCRICAO"));
					listCargos.add(cargo); 					
				}
				return listCargos; 
			}else {
				System.out.println("SQL retornou False");
				return null; 
			}
		} catch (SQLException e) {
			System.out.println("Erro na execução do SQL " + e.getMessage());
			return null; 
		}
	}

Sobre a quantidade de campos da tabela, nao tem como nao, mesmo tendo 80 voce tera que ter uma classe que trata todos esse campos, chamada cliente por exemplo.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at teste.Co.fazConsulta(Co.java:58)
Qual é a linha 58 deste arquivo Co.java?

[quote=Bruno Laturner]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at teste.Co.fazConsulta(Co.java:58)
Qual é a linha 58 deste arquivo Co.java?[/quote]

eu tinha feito a cagada de colocar trechos dos códigos…
agora coloquei inteiros.

mas a dúvida mudou, vou deixar pra tratar os botões depois, quero antes saber fazer o resgate dos valores contido no ArrayList lista que eu criei.

abraço!

Oi,

Não seria array.get(int index); ?

Tchauzin!

[quote=lina]Oi,

Não seria array.get(int index); ?

Tchauzin![/quote]

Olá,
Obrigado pelo post.

Substituindo a linha n.30 “JOptionPane.showMessageDialog(null, rg.getCod());” por “JOptionPane.showMessageDialog(null, co.lista.get(1));”

a mensagem é:

Oi,

Declare a sua lista assim:

ArrayList lista = new ArrayList();

E adicione nela, assim:

while (rs.next()) { rg.setCod(rs.getInt("codcand")); lista.add(rg.getCod()); }

Post o resultado.

Tchauzin!

[quote=lina]Oi,

Declare a sua lista assim:

ArrayList lista = new ArrayList();

E adicione nela, assim:

while (rs.next()) { rg.setCod(rs.getInt("codcand")); lista.add(rg.getCod()); }

Post o resultado.

Tchauzin![/quote]
UAU!
Muito obrigado! funcionou.
mais tarde eu volto a mexer no código =)

Bom, passando apenas 1 campo para o ArrayList a mensagem sai correta, mas passando mais campos(vide ‘fazConsulta’ na classe Conexao) a mensagem fica daquela maneira "“teste.Registros@1bc4459”.
que que eu to fazendo de errado?

ja tentei faz o while de duas maneiras:

while (rs.next()) {
                rg.setCod(rs.getInt("codcand"));
                rg.setNome(rs.getString("nomecand"));
                rg.setDatanasc(rs.getString("datanasc"));
                rg.setSexo(rs.getString("sexo"));
                rg.setRg(rs.getString("rg"));
                lista.add(rg);
}
while (rs.next()) {
                rg.setCod(rs.getInt("codcand"));
                rg.setNome(rs.getString("nomecand"));
                rg.setDatanasc(rs.getString("datanasc"));
                rg.setSexo(rs.getString("sexo"));
                rg.setRg(rs.getString("rg"));
                lista.add(rg.getCod(), rg.getNome(), rg.getDatanasc(), rg.getSexo(), rg.getRg());
}

Oi,

A maneira que você está fazendo é um pouco + complicada do que adicionar campo a campo no seu ArrayList.
Vou lhe mostrar duas maneiras:

[code]// Adicionando item a item o resultado do result set.

while (rs.next()) {
rg.setCod(rs.getInt(“codcand”));
lista.add(rs.getInt(“codcand”)); // Ou então rg.getCod()
rg.setNome(rs.getString(“nomecand”));
lista.add(rs.getString(“nomecand”)); // Ou então rg.getNome()
rg.setDatanasc(rs.getString(“datanasc”));
lista.add(rs.getString(“datanasc”));
rg.setSexo(rs.getString(“sexo”));
lista.add(rs.getString(“sexo”));
rg.setRg(rs.getString(“rg”));
lista.add(rs.getString(“rg”));
}[/code]

[code]//Fazendo da forma como vc está utilizando:

while (rs.next()) {
rg.setCod(rs.getInt(“codcand”));
rg.setNome(rs.getString(“nomecand”));
rg.setDatanasc(rs.getString(“datanasc”));
rg.setSexo(rs.getString(“sexo”));
rg.setRg(rs.getString(“rg”));
lista.add(rg);
}[/code]

Porém, como você adicionou a classe rg (completa) em seu ArrayList, você deverá fazer o seguinte para pegar seus valores.

[code]Registros rg_1

for (int i=0; i<lista.size(); i++) {
rg_1 = (Registros)lista.get(i); // Utilizando cast;
System.out.print(rg_1.getNome);
}[/code]

Bom, acho que isso funciona! estou sem IDE para testar =)

Tchauzin!

LIna, permita-me

Eu melhoraria maais ainda o que a Lina fez. Segue um exemplo basico

ArrayList<Registros> lista = null;
    while (rs.next()) {  
                  rg = new Registros();
                   rg.setCod(rs.getInt("codcand"));  
                   rg.setNome(rs.getString("nomecand"));  
                   rg.setDatanasc(rs.getString("datanasc"));  
                   rg.setSexo(rs.getString("sexo"));  
                   rg.setRg(rs.getString("rg"));  
                   lista.add(rg);  
   }  

pra pegar os valores, vc terá q fazer assim, claro, com a devida modificação de acordo com sua aplicação

for (int j = 0; j < lista.size; j++)
lista.get(j).getCod;
lista.get(j).getNome;
lista.get(j).getDatanasc;
lista.get(j).getSexo;
lista.get(j).getRg;
}

espero ter ajudado :smiley:

Obrigado Lina e A.moraissoares!

atualizei o código e funcionou, agora o problema é com o botão ‘próximo’, que ao ser acionado gera o seguinte erro:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at teste.Co.fazConsulta(Co.java:50) at teste.JFrame.proximoActionPerformed(JFrame.java:175) at teste.JFrame.access$500(JFrame.java:8) at teste.JFrame$6.actionPerformed(JFrame.java:79) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

não consigo entender o motivo desse erro.

Opa. Por nada cara.

Seguinte, só de estar dando NullpointerException, vc já tem que ver que ele esta tentando acessar uma área que não existe.
Eu não vi seu código nem tentei entender o que o PROXIMO faz, prq ta imenso e to no trampo, heheh.

O que o PRÓXIMO tem que fazer? Ele da erro no “fazConsulta”, isso eu vi.

Poste aqui a parte do código onde ele fala q ta o erro, e qual o objetivo do PRÓXIMO.

[quote=a.moraissoares]Opa. Por nada cara.

Seguinte, só de estar dando NullpointerException, vc já tem que ver que ele esta tentando acessar uma área que não existe.
Eu não vi seu código nem tentei entender o que o PROXIMO faz, prq ta imenso e to no trampo, heheh.

O que o PRÓXIMO tem que fazer? Ele da erro no “fazConsulta”, isso eu vi.

Poste aqui a parte do código onde ele fala q ta o erro, e qual o objetivo do PRÓXIMO.[/quote]
segue:

botão ‘próximo’:

private void proximoActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: //co.nextCand(co.lista); //i += 1; //JOptionPane.showMessageDialog(null, co.lista.get(i)); co.nextCand(co.fazConsulta(co.con), co.i); }

função nextCand:

public void nextCand(ArrayList lista, int i) {
        Registros rg_1;
        rg_1 = (Registros) lista.get(i);

        rg_1.getCod();
        rg_1.getDatanasc();
        rg_1.getNome();
        rg_1.getRg();
        rg_1.getSexo();

        JOptionPane.showMessageDialog(null, "oi");
        JOptionPane.showMessageDialog(null, rg_1.getSexo());
        i += 1;
    }

fazConsulta:

public ArrayList fazConsulta(Connection con) {
        try {
            stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); // <-- linha 50 que está causando erro
            //Salva o resultado da consulta em um objeto rs
            rs = stm.executeQuery(select);
            while (rs.next()) {
                rg = new Registros();
                rg.setCod(rs.getInt("codcand"));
                rg.setNome(rs.getString("nomecand"));
                rg.setDatanasc(rs.getString("datanasc"));
                rg.setSexo(rs.getString("sexo"));
                rg.setRg(rs.getString("rg"));
                lista.add(rg);
                //MessageDialog para testar se todos os códigos estão sendo passados
                //JOptionPane.showMessageDialog(null, rg.getCod());
            }

Então. Confesso que nunca trabalhei com isso:

logo não tive experiências pra te ajudar mais nesse ponto.

Boa sorte ai, vou acompanhar pra tentar aprender com teu problema ai. Abração. Qqer coisa tamos ai

esquece esse post. heheh

Oi,

Acho muito dificil, mais Provavelmente a variavel de conexão passada por parametro está nula, para identificar, use isso.:

public ArrayList fazConsulta(Connection con) { try { System.out.println("Variavel de conexão: "+con); stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); // <-- linha 50 que está causando erro //Salva o resultado da consulta em um objeto rs rs = stm.executeQuery(select); while (rs.next()) { rg = new Registros(); rg.setCod(rs.getInt("codcand")); rg.setNome(rs.getString("nomecand")); rg.setDatanasc(rs.getString("datanasc")); rg.setSexo(rs.getString("sexo")); rg.setRg(rs.getString("rg")); lista.add(rg); //MessageDialog para testar se todos os códigos estão sendo passados //JOptionPane.showMessageDialog(null, rg.getCod()); }

Tchauzin!

[quote=lina]Oi,

Acho muito dificil, mais Provavelmente a variavel de conexão passada por parametro está nula, para identificar, use isso.:

public ArrayList fazConsulta(Connection con) { try { System.out.println("Variavel de conexão: "+con); stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); // <-- linha 50 que está causando erro //Salva o resultado da consulta em um objeto rs rs = stm.executeQuery(select); while (rs.next()) { rg = new Registros(); rg.setCod(rs.getInt("codcand")); rg.setNome(rs.getString("nomecand")); rg.setDatanasc(rs.getString("datanasc")); rg.setSexo(rs.getString("sexo")); rg.setRg(rs.getString("rg")); lista.add(rg); //MessageDialog para testar se todos os códigos estão sendo passados //JOptionPane.showMessageDialog(null, rg.getCod()); }

Tchauzin![/quote]

ahhh!
Muito obrigado!

criei uma variável Connection con_1 = conectar(); para passar o return da função para as outras funções. =)