Carregar JComboBox com Banco de Dados

Galera Boa Noite galera, antes de mais nada gostaria de dizer que já escarafunchei o Google, esse site e e outros, vi muita coisa boa a respeito e não consegui exatamente o que queria, pode até ser fácil masi eu empaquei…

Gostaria de pedir por gentileza se alguém ai poderia me ajudar neste pequeno programa, acredito não ser muita coisa mais minha mente tá travada nele q ficaria muito grato se alguém pudesse me salvar.

Objetivo: Fazer um JComboBox Dinâmico, ou seja, fazer a interação dele com o Banco de dados.

(Ferramentas: Eclipse IDE 3.6, Swing, Banco MySql, conecto MySql 5.1 ODBC Driver)

1º Caso: Sincronizar Automaticamente (assim que rodar o programa) o Combobox com todos os itens listados em um determinado campo do Banco (ex ficticio. nome_do_fornecedor), fazendo com que assim q eu abra o programa o Combobox liste todos os nomes que eu tenho, e ao clicar no nome escolhido execute uma query de pesquisa para preencher os demais campos(a query eu faço).

2º Caso (mais complicado): Quase igual ao primeiro porém com uma diferença: através do like (sql) eu irei escolher umas letras ou palavras (ex. “Loj” de Lojas) ai gostaria que tudo o que tivesse “Loj” aparecesse listado no JCombobox, ai qdo eu clicar vai executar uma outra Query Sql que preencheria os demais campos com os demais campos da tabela.
Espero não ter confundido, poderia usar um JTable, na verdade vou prcisar, ma spor hora tem que ser um JComboBox msm.
Deixo aqui o link do programa, todo comentado, e com um código em SQL para a construção do banco.

http://www.2shared.com/file/tjbReI1G/Amaral.html

Agradeço mesmo a força.

Se ficar melhor (acreidto que sim tanto para mi quanto para vcs, eu queria fazer ambos os casso em particular tipo um em cada programa, pois axo q se misturar tudo eu me confundirei.

Grato

melhorando…
Estava analisando e pensei em uma maneira melhor de fazer,

esta é a construção normal do JComboBox

JComboBox lista; //Aqui cria a variável do JComboBox
String cbfornecedores [] = {“Lojas Digital”, “Casas Bahia”}; //aqui cria a variável string com o conteudo do JCombobox
lista = new JComboBox (cbfornecedores); //aqui crio o ComboBox e adiciono o conteudo da variável sbfornecedores nele
lista.setMaximumRowCount(5); // aqui defino o máximo de itens que serão exibidos assim que expandir oJComboBox
lista.setEditable(true); // Deixa-o editável

(…)

O que eu quero é que ao clicar em um determiando Botão execute uma query de pesquisa SQL que jogue os dados
selecionados no JComboBox.

[quote=nando182]melhorando…
Estava analisando e pensei em uma maneira melhor de fazer,

esta é a construção normal do JComboBox

JComboBox lista; //Aqui cria a variável do JComboBox
String cbfornecedores [] = {“Lojas Digital”, “Casas Bahia”}; //aqui cria a variável string com o conteudo do JCombobox
lista = new JComboBox (cbfornecedores); //aqui crio o ComboBox e adiciono o conteudo da variável sbfornecedores nele
lista.setMaximumRowCount(5); // aqui defino o máximo de itens que serão exibidos assim que expandir oJComboBox
lista.setEditable(true); // Deixa-o editável

(…)

O que eu quero é que ao clicar em um determiando Botão execute uma query de pesquisa SQL que jogue os dados
selecionados no JComboBox.
[/quote]

Fala, Nando, beleza?

  1. Aprenda a fazer uma conexão com o banco de dados;
  2. Aprenda a manipular os objetos PreparedStatement e ResultSet, os quais serão os responsáveis por realizar a consulta dos dados no seu BD;
  3. Com isso, faça uma consulta que retorne uma coleção dos dados que você quer e atribua à combobox em questão:
List<String> suaColecao = suaClasseDePersistencia.recuperarTodosOsNomes();
JComboBox comboboxExemplo = new JComboBox(new DefaultComboBoxModel(suaColecao));

Abraços!

Oi amigo,

se vc puder, faça o download do projeto que eu descrevi no primeiro post, tá tudo certinho, já tem até o código do BD com as conexões tudo beleza, tem até uma pesquisa usando o JComboBox.

repito o link

agradeço

http://www.2shared.com/file/tjbReI1G/Amaral.html

É como falei no outro tópico: faça sua classe de persistência retornar uma coleção dos fornecedores e, ao obtê-la, faça da seguinte forma:

// onde:
//   1. fornecedoresDAO: sua classe de persistência;
//   2. recuperarTodos(): seu método que retorna todos os fornecedores;
//   3. fornecedores: sua coleção de objetos Fornecedor;
//   4. comboboxFornecedores: sua combobox que receberá os valores;

List<Fornecedor> fornecedores = fornecedoresDAO.recuperarTodos();
JComboBox comboboxFornecedores = new JComboBox(new DefaultComboBoxModel(fornecedores));

[quote=“nando182”]
2º Caso (mais complicado): Quase igual ao primeiro porém com uma diferença: através do like (sql) eu irei escolher umas letras ou palavras (ex. “Loj” de Lojas) ai gostaria que tudo o que tivesse “Loj” aparecesse listado no JCombobox, ai qdo eu clicar vai executar uma outra Query Sql que preencheria os demais campos com os demais campos da tabela.
Espero não ter confundido, poderia usar um JTable, na verdade vou prcisar, ma spor hora tem que ser um JComboBox msm.
Deixo aqui o link do programa, todo comentado, e com um código em SQL para a construção do banco.[/quote]

Para autocomplete em JComboBoxes, eu faço uso das Glazed Lists. Talvez seja isso que você precisa, dê uma olhada.

Consegui o que eu queria! mas falta apenas uma coisa…

usei o seguinte código após a pesquisa (String sql = “select * from tbfornecedor where nomeforn like '%”+lista.getSelectedItem()+"%’":wink:

(…)

lista.addItem(rs.getString(“nomeforn”)); //lança o resultado da pesquisa sql no JComboBox

O conteúdo do campo nomeforn foi lançado no JComboBox, até ai tudo beleza, bem bonitinho, porém só foi o primeiro, queria que fosse todo o resultado da pesquisa.

Grato

[quote=nando182]Consegui o que eu queria! mas falta apenas uma coisa…

usei o seguinte código após a pesquisa (String sql = “select * from tbfornecedor where nomeforn like '%”+lista.getSelectedItem()+"%’":wink:

(…)

lista.addItem(rs.getString(“nomeforn”)); //lança o resultado da pesquisa sql no JComboBox

O conteúdo do campo nomeforn foi lançado no JComboBox, até ai tudo beleza, bem bonitinho, porém só foi o primeiro, queria que fosse todo o resultado da pesquisa.

Grato[/quote]

Se eu fosse você, faria as camadas de Visão e Persistência independentes. Dá muito menos dor de cabeça.
Bom, para resolver o problema do jeito que você está fazendo, basta:

while (rs.next()) {
    lista.addItem(rs.getString("nomeforn"));
}

Você itera sobre a coleção de linhas que a consulta retornou e adiciona em sua JComboBox.
Você poderia fazer algo do tipo:

  1. Crie sua classe de Fornecedor com o método toString() sobrescrito:

[code]public class Fornecedor {

private Long ID;
private String nome;
// getters e setters omitidos...

@Override public String toString() {
return getNome();
}
}[/code]

  1. Crie sua classe de persistência que possua um método que recupere todos os funcionários a partir do nome dado:
public class ServicosFornecedor {

    public List<Fornecedor> recuperarFornecedoresPorNome(String nome) throws SQLException {

        String sentencaSelect = "SELECT * FROM DBO.FORNECEDORES WHERE NOME LIKE ?";
        PreparedStatement statementSelect = connection.prepareStatement(sentencaSelect);
        ResultSet resultsetSelect = statementSelect.executeQuery();

        List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
        while (resultsetSelect.next()) {
            fornecedores.add(recuperarObjeto(resultsetSelect));
        }

        resultsetSelect.close();
        statementSelect.close();
        return fornecedores;
    }

    private Fornecedor recuperarObjeto(ResultSet resultsetSelect) {

        Fornecedor fornecedor = new Fornecedor();
        fornecedor.setID(resultsetSelect.getLong("ID"));
        fornecedor.setNome(resultsetSelect.getString("NOME"));
  
        return fornecedor;
    }
}

E, ao clicar no botão de pesquisar…

private class EventoDoBotaoDePesquisa implements ActionListener {

    public void actionPerformed(ActionEvent e) {

        ServicosFornecedor servicosFornecedor = new ServicosFornecedor();
        String filtro = combobox.getSelectedItem();
        List<Fornecedor> fornecedores = servicosFornecedor.recuperarFornecedoresPorNome(filtro);

        combobox.removeAll();
        combobox.addAll(fornecedores);
    }
}

Que tal?

Cara eu agradeço de verdade, em um outro tópico o cara postou algo parecido no mesmo momento que vc e deu certo, conncerteza o seu processo ia dar certo tbm pois é a mesma lógica, eu agradeço a vc e a quem tentou ajudar de alguma forma, muito obrigado msm, pelo esfoço e por gastar seu tempo me auxiliando

Obrigado e o código dá certinho

Disponha, e coloque [RESOLVIDO] no título do seu tópico!