Preencher JCombobox com Banco de Dados Access[RESOLVIDO]

3 respostas
dalsim

Olá..estou desenvolvendo um programa de controle de estoque do zero..e estou com um problema em preencher uma jcombobox com os dados de um bd em acces..
segue o código

public void preencheCombobox(){
        try {  
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");// Dados da conexo  
            String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/testamdb/estoque.mdb";
            con = DriverManager.getConnection(url,"","");
            // Variavel que permite a execucao de comandos sql   
            System.out.println("-------> Conexão bem sucedida!");  
            Vector<String> busca=new Vector();
            rs = stmt.executeQuery("select nome from unidade order by nome");
            while(rs.next()){               
               busca.add(rs.getString("ufestado"));
            }
            jComboBox3.addItem(busca);
            stmt.close();
            con.close();  
  
        } catch (SQLException e) {  
            JOptionPane.showMessageDialog(null,"Dados não encontrados"+e);
           
        }catch(Exception e){
            System.out.println("Não foi possível conectar ao banco: " + e.getMessage());
        }
        
    }

Ele deveria carregar nesta combobox os dados que tenho cadastrado referentes as unidades cadastradas(litros,metros,tonelads..etc);
li alguns tópicos no fórum,mais nenhum q se aproxime disso..
se alguém puder ajudar,agradeço :roll: :roll:

3 Respostas

dalsim

aliás,uma correção ai

public void preencheCombobox(){
        try {  
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");// Dados da conexo  
            String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/testamdb/estoque.mdb";
            con = DriverManager.getConnection(url,"","");
            // Variavel que permite a execucao de comandos sql   
            System.out.println("-------> Conexão bem sucedida!");  
            Vector<String> busca=new Vector();
            rs = stmt.executeQuery("select nome from unidade order by nome");
            while(rs.next()){               
               busca.add(rs.getString("nome"));
            }
            jComboBox3.addItem(busca);
            stmt.close();
            con.close();  
  
        } catch (SQLException e) {  
            JOptionPane.showMessageDialog(null,"Dados não encontrados"+e);
           
        }catch(Exception e){
            System.out.println("Não foi possível conectar ao banco: " + e.getMessage());
        }
        
    }

tinha esquecido de trocar o nome do campo na inserção,mais po problema persiste..

Ziguifrid

Eu faria assim:

Tela onde vai estar a combobox.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package combobox;

import Classes.ComboboxClasse;
import Consulta.Combobox;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author MAM
 */
public class Principal extends javax.swing.JFrame {
int naorepete=0;
    /**
     * Creates new form Principal
     */
    public Principal() {
        initComponents();
    }


    private void JCB_AccessMouseClicked(java.awt.event.MouseEvent evt) {
    try{//Preenche a combobox
        if(naorepete==0){//esta variável evita que apareça dados repetidos na jcomboBox.
            Combobox cmd = new Combobox();
            List listaf = cmd.nome();

            Iterator it = listaf.iterator();
                while(it.hasNext()){
                    ComboboxClasse e = (ComboboxClasse) it.next();
                    String nome = e.getNome();
                    JCB_Access.addItem(nome);
                }
        }
   naorepete=1;
    }//TRY

    catch (Exception e){
        JOptionPane.showMessageDialog(rootPane, e.getMessage(),"OPS!!!", WIDTH);
    }
    }

Classe Conexao

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
 *
 * @author michel
 */
public class Conexao {

    static Connection con=null;

 public static Connection conectar() throws ClassNotFoundException{
    try {

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");// Dados da conexo    
            String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Users/MAM/Documents/access/teste.mdb";  
            con = DriverManager.getConnection(url,"","");  
            // Variavel que permite a execucao de comandos sql     
            System.out.println("-------> Conexão bem sucedida!");        
    }
    catch (SQLException e) {
        JOptionPane.showMessageDialog(null, e);
    }
    return con;
    }

}

Onde vai fazer a pesquisa.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Consulta;

import Classes.ComboboxClasse;
import Conexao.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author MAM
 */
public class Combobox {
Connection con=null;
String sql = null;  
List combobox = new ArrayList();
     
  public Combobox() throws ClassNotFoundException{
      con = Conexao.conectar(); 
  }
    
public List nome() throws Exception{
    
 sql = "select nome from MAM order by nome";
 PreparedStatement ps = con.prepareStatement(sql);
 ResultSet rs = ps.executeQuery();
 
    while(rs.next()){
        String nome = rs.getString("nome");
        
        ComboboxClasse c = new ComboboxClasse();
        c.setNome(nome);
        
        combobox.add(c);

    } 
   return combobox;
    }  
  
}

A classe para setar os nomes

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Classes;

/**
 *
 * @author MAM
 */
public class ComboboxClasse {
    private String nome;

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }
}
dalsim

vlw…deu certinho aki

Criado 27 de fevereiro de 2013
Ultima resposta 8 de mar. de 2013
Respostas 3
Participantes 2