Result Set na ComboBox

15 respostas
K

Pessoal, encotrei esse código para adicionar dados na ComboBox através de uma consulta.

while (rs.next()) {  
              cmbTeste.addItem(rs.getString("nm_teste"));  
          }

Agora será que num facilitaria, através desse ResultSet eu pegar o ID na minha consulta?

Por exemplo eu passo ai o campo “nm_teste”, pra pegar o ID agora deve esta mais fácil.

Deve ter uma forma com certeza, mas eu não sei qual é.

Será que alguem têm idéia ai?

Vlw pessoal!

15 Respostas

J

vc vai ter que executar um comando de seleção SQL no seu resultSet
tipo assim

SELECT * FROM TABELA WHERE CAMPO = 'minha pesquisa';
A

khaue_viana_@hotmail.com:
Pessoal, encotrei esse código para adicionar dados na ComboBox através de uma consulta.

while (rs.next()) {  
              cmbTeste.addItem(rs.getString("nm_teste"));  
          }

Agora será que num facilitaria, através desse ResultSet eu pegar o ID na minha consulta?

Por exemplo eu passo ai o campo “nm_teste”, pra pegar o ID agora deve esta mais fácil.

Deve ter uma forma com certeza, mas eu não sei qual é.

Será que alguem têm idéia ai?

Vlw pessoal!

Não sei se entendi bem… veja se é isso: você dá um select no banco, pega o valor do campo nm_teste e vai populando o combobox. O resultado final é que seu combobox mostra uma lista com os nomes dos objetos que estão na tabela do banco, mas você queria que nesse combobox estivesse o ID dos objetos, é isso?

K

Isso, eu populo os nm_teste, pra mostrar isso pro usuário. Mas na verdade o que me interessa é o ID.

O que pensei é como estou trabalhando com o ResultSet nesse caso, ficaria mais fácil de pegar o ID.

A

Passei por caso semelhante esses dias e resolvi assim:

1º tenho uma classe que representa o registro armazenado na tabela. Ela é um pojo simples, tem os atributos para ID e descrição e os getters e setters. Mas tem a cerejinha do bolo: um método toString que retorna só a descrição, escrito assim:

public String toString(){
      return this.descricao;
   }

2º quando estou percorrendo o resultset que traz os registros do banco, crio um objeto para cada linha retornada e guardo-os num Vector:

...
   Vector<MeuPojo> lista = new Vector<MeuPojo>();
   while(rst.next()){
      rst.next();
      MeuPojo objeto = new MeuPojo();
      objeto.setID(rst.getInt(1));
      objeto.setDescricao(rst.getString(2));
      lista.addElement(objeto);
   }

3º agora que tenho a lista de objetos na mão, fácil passá-la para o combobox:

JComboBox meuCombo = new JComboBox(lista);

4º aqui o combo já exibe a descrição de cada registro lido. Se eu quiser o ID do item que o usuário selecionou faço:

((MeuPojo) meuCombo.getSelectedItem()).getId();
K

Certo, mas o problema é que num crio a comboBox na mão. Mas muito interessante esse código. Será que mais alguem tem outra alternativa?

A

eu também não crio a combobox na mão… uso NetBeans. Coloquei esse exemplo simplificado só pra te mostrar

L

khaue_viana_@hotmail.com:
Pessoal, encotrei esse código para adicionar dados na ComboBox através de uma consulta.

while (rs.next()) {  
              cmbTeste.addItem(rs.getString("nm_teste"));  
          }

Agora será que num facilitaria, através desse ResultSet eu pegar o ID na minha consulta?

Por exemplo eu passo ai o campo “nm_teste”, pra pegar o ID agora deve esta mais fácil.

Deve ter uma forma com certeza, mas eu não sei qual é.

Será que alguem têm idéia ai?

Vlw pessoal!

Olá,

Bem pelo que eu entendi vc tem uma consulta que retornará o código e a descrição. Bem ai no seu jsp no comboBox vc pega a lista retornada da pesquisa e usa o for each do jstl para exibir no combo.

Segue exemplo:

<html:select property="xxx" styleId="xxx" styleClass="campoc">
									    		
    <html:option value=""></html:option>

    <c:forEach var="item" items="${nomedoForm.lista}">
       <html:option value="${item.id}"><c:out value="${item.descricao}"/></html:option>
											
   </c:forEach>										
</html:select>

Bem espero que eu tenha entendido direito o que vc deseja. :slight_smile:

K

Mas não utilizo JSP :confused:

K

MAis alguem tem alguna alternativa? Nossa esse problema ta me assustando ao um bom tempo… :cry:

A

bem… não é JSP, então é swing? se for e estiver usando netbeans respondo fácil essa rsrsrs

K

Isso msm, swing e netbeans!

A

Cara, desculpe não ter sido mais direto antes…

Bem, uso aqui netbeans 6.9.1, mas acho que isso é um recurso de versões anteriores já…

seguinte: abra lá seu frame no netbeans e dê um botâo direito do mouse no combobox que vai receber o conteúdo e no menu que aparecer clique em “personalizar código”.
Você terá acesso ao código que o netbeans cria, podendo então alterá-lo. Logo na primeira linha, onde o objeto do seu combo é instanciado, deve estar algo assim:

seuCombo = new javax.swing.JComboBox()

à esquerda desse código, mude a seleção para “criação personalizada”. Você poderá alterar o código que está lá, passando o Vector que foi preenchido com os registros que obteve da consulta do banco, ficando assim:

seuCombo = new javax.swing.JComboBox(seuVector)

Bem… tudo isso vai acontecer pela chamada do initComponents() que é aquele método que o netbeans cria para “montar” a janela e os componentes, certo? Tudo o que você tem que fazer é ter aquele seuVector já preenchido antes da chamada desse método.

Se ainda ficar alguma dúvida eu tento te explicar melhor…

K

Blz kra, vou tentar aqui com mais calma, vlw pela força brother e até mais

K

Num deu certo aki kra, primeiramente a comboBox não exibiu os valores quando passei o Vector, mas adicionei os elementos através do result set e depois não deixou converter a combo pra minha POJO.

while (rs.next()) {
              Teste teste = new Teste();
              teste.setId(rs.getInt("id_teste"));
              lista.addElement(teste);
              cmbTeste.addItem(rs.getString("nm_teste"));
            }

   ((Teste) cmbTeste.getSelectedItem()).getId();

Erro: java.lang.ClassCastException: java.lang.String cannot be cast to testebancodedados.Teste

Abraços

R

estou fazendo assim:
no meu caso quero q a pessoa va digitando e va listando

private void jComboBoxIn_CidadeActionPerformed(java.awt.event.ActionEvent evt) { try { Conectar.rs = Conectar.stam.executeQuery("select cidade from tabcli " + "where cidade like'" + jComboBoxIn_Cidade.getSelectedItem().toString() + "%'"); while (Conectar.rs.next()) { jComboBoxIn_Cidade.addItem(Conectar.rs.getString("cliente")); } jComboBoxIn_Cidade.showPopup(); } catch (SQLException ex) { System.out.println(ex.getLocalizedMessage()); } }

mais não está pegando Performade e nem KeyPressed
:?

Criado 13 de janeiro de 2011
Ultima resposta 7 de jun. de 2011
Respostas 15
Participantes 5