Buscar JComboBox Banco de dados

14 respostas
G
Eu tenho um JcomboBox com todos os dados de um uma coluna da minha tabela do banco, eu queria que quando eu selecionar um item do meu combobox e mandar o comando pesquisar eu possa jogar o a descrição no JtextList, como eu faço uma pesquisa no banco seguinto esse esquema? Eu tentei fazer o seguinte:
Public void Pesquisa(){
         try{   
            String sql = "select descricao from relatorio.tbrelatorio where doenca = '"+rel_doenca.getSelectedItem()+"'";   
            ResultSet res = null;   
            res = canal.executeQuery(sql);       
            jlistbox.setToolTipText(res.getString(2));   
            }   
            catch (Exception e ){   
                System.out.println(e.getMessage());   
                   
            }   
        }  
}

so que ñ deu certo fazer dessa maneira, alguem pode me dar uma ajuda?

14 Respostas

fiaux

O que aconteceu? Algum erro? Explique melhor.

S

Olá amigo

stmt = bd.ConexaoBancoDados.conexao().createStatement();               
           rs = stmt.executeQuery("select id from tipoequipamento where descricao='" + cboTipoEquipamento.getSelectedItem() + "'");
           rs.next();
           tipoEquipamento = rs.getInt("id"); <--- tipoEquipamento será usado para inserção ou atualização no banco de dados

Silvio Guedes

G
Não deu erro nenhum, eu ñ to coseguindo fazer o seguinte no meu combobox eu fiz uma query para que ele pegasse todas as doençãs que estão cadastradas no meu banco referente a coluna doença, eu queria fazer com que quando fosse fazer uma pesquisa era para vc selecionar um tipo de doença no combobox e mandasse fazer uma pesquisa ele jogaria a descrição dela referente no textlist, No meu banco eu tenho 2 colunas Doenca e Descricao, a coluna doenca esta vinculado no Combobox, so q a descricao eu ñ consegui fazer o select para ela eu tentei fazer o seguinte
Public void Pesquisa(){   
         try{     
            String sql = "select descricao from relatorio.tbrelatorio where doenca = '"+rel_doenca.getSelectedItem()+"'";     
            ResultSet res = null;     
            res = canal.executeQuery(sql);         
            rel_descricao.setToolTipText(res.getString(2));     
            }     
            catch (Exception e ){     
                System.out.println(e.getMessage());     
                     
            }     
        }     
}
Entendeu o que eu quero fazer?
S

Olá amigo

para que vc ter acesso a um segundo campo de um select vc precisa definí-lo também desta forma:

Public void Pesquisa(){
         try{   
            // como vc está fazendo
            String sql = "select descricao from relatorio.tbrelatorio where doenca = '"+rel_doenca.getSelectedItem()+"'";   
        
            // agora com o campo que vc precisa
            String sql = "select doenca,descricao from relatorio.tbrelatorio where doenca = '"+rel_doenca.getSelectedItem()+"'";   

            ResultSet res = null;   
            res = canal.executeQuery(sql);       
            jlistbox.setToolTipText(res.getString(2));   <- mostra no jlistbox o 2 campo do select
            }   
            catch (Exception e ){   
                System.out.println(e.getMessage());   
                   
            }   
        }  
}

caso vc fosse mostrar todos os campos de um select:

public static void selecionaCliente() throws Exception {
       
       try {
            stmt = bd.ConexaoBancoDados.conexao().createStatement(); 
            rs = stmt.executeQuery("select * from clientes where id='" + id_cliente + "'");           
            rs.next();
            id_cliente = rs.getString("id");
            tfIdCliente.setText(rs.getString("id"));
            tfNomeCliente.setText(rs.getString("nome"));
            tfFantasia.setText(rs.getString("fantasia"));
            tfRgInscEstadual.setText(rs.getString("rg_inscestadual"));
            tfCnpfCnpj.setText(rs.getString("cnpf_cnpj"));
            tfTelefone.setText(rs.getString("telefone"));
            tfCelular.setText(rs.getString("celular"));
       } catch (SQLException ex) {
                 Logger.getLogger(Listaclientes.class.getName()).log(Level.SEVERE, null, ex);
       }         
       stmt.close();  
}
res.getString(2))

o 2 aqui é segundo campo, mas a sua query só tem um campo entendeu?

Silvio Guedes

G

Silvio eu tentei fazer oq vc disse

Public void Pesquisa(){
if(conecta() == 1)
    {
        try{
            String sql = "select doenca, descricao from relatorio.tbrelatorio where doenca = '"+rel_doenca.getSelectedItem()+"'";
            ResultSet res = null;
            res = canal.executeQuery(sql);    
            rel_descricao.setToolTipText(res.getString(2));
            }
            catch (Exception e ){
                System.out.println(e.getMessage());
                
            }
        }
        desconecta();
        
    }

mudei como vc falow mas ele nao esta me retornando nda kara, o meu rel_ descricao e um JtextArea, existe algum outro meio de pegar o arquivo e jogar em um TextArea, eu fiz pelo debug, quando ele chega na linha

rel_descricao.setToolTipText(res.getString(2));
ele ja da null, eu fiz um teste com essas 2 linhas:
rel_tratamento.setToolTipText(res.getString("descricao"));
          rel.setText(res.getString("descricao"));
A primira e de um JtextArea, ele nao retornava nda ja a segunda q e textField ele ja retorna o conteudo, so q eu preciso que seje em um TextArea, vc sabe como eu faço o set para um TextArea?
S

Olá amigo

pelo o que percebi vc está usando o setToolTipText:

rel_descricao.setToolTipText(res.getString(2));

eu uso setText:

rel_descricao.setText(res.getString(2));

o setToolTipText é para mostrar alguma mensagem do tipo Hint quando o mouse passa por cima do componente(Button etc.) Para atribuir algum valor vc deve utilizar o setText.

Silvio Guedes

G

O Silvio, mas eu to usando um JtextArea ele ñ me da a opção de usar o setText e se eu coloco digitando, so passa o setToolTipText, tem algum outro meio de estar fazendo isso com o JTextArea?

Vc sabe me falar se no TextField tem como quebrar linha?

S

Olá amigo

lá no topo vc falou em:

" eu queria que quando eu selecionar um item do meu combobox e mandar o comando pesquisar eu possa jogar o a descrição no JtextList, " não existe jTextList e sim JList. No javax tem JTextArea, jTextPanel e JtextField.

mas se vc apenas precisa colocar a descrição da doença num campo texto, então use jTextField, não entendi pq vc quer colocar numha área de texto. Então use o exemplo que já passei anteriormente.

static JTextField tfIdCliente       = new JTextField();
    static JTextField tfNomeCliente     = new JTextField();
..
    public static void selecionaCliente() throws Exception {
       
       try {
            stmt = bd.ConexaoBancoDados.conexao().createStatement(); 
            rs = stmt.executeQuery("select * from clientes where id='" + id_cliente + "'");           
            rs.next();
            tfIdCliente.setText(rs.getString("id"));
            tfNomeCliente.setText(rs.getString("nome"));
         } catch (SQLException ex) {
                 Logger.getLogger(Listaclientes.class.getName()).log(Level.SEVERE, null, ex);
       }         
       stmt.close();  
}

veja:
http://java.sun.com/docs/books/tutorial/uiswing/examples/components/index.html#TabbedPaneDemo

tem vários exemplos, foi a partir dai que já consegui fazer muita coisa.

Silvio Guedes

G

É que o TextField ñ aparece toda a descrição, ele coloca tudo em uma linha so, ñ faz a quebra de linha para poder visualizar, algumas descrições são pequenas coisa de uma linha mas tem umas que são coisa de 11 linha e são grandes por isso q o TextArea seria o melhor, mas se o TextField tiver como quebrar linha ai ajudaria muito. Eu ñ sei como fazer para quebrar as linhas

F

Olá,

É um JTextArea ou um JTextField que vc quer que fique o resultado ???

G

É o TextArea

S

Olá amigo

eu lhe passei um link que tem o que vc precisa, um exemplo com TextArea que faz a quebra de linha.

http://java.sun.com/docs/books/tutorial/uiswing/examples/components/TextAreaDemoProject/src/components/TextAreaDemo.java

Silvio Guedes

K

meu amigo, eu tenho a solucao pra vc, eu custei pra faze isso que vc quer… mas a um tempo atras eu tinha a mesma duvida que vc… quando vc clica em um jlist ele retorna todos os valores menos o jtextarea.

pra vc resolver isso tem que fazer o seguinte.
vou deixar exatamente como o meu está para vc entender.

private JTextArea textLogProc = new JTextArea();

private JScrollPane barraProc = new JScrollPane(textLogProc);

private JListBox funcionarioListBoxFuncionario = new JListBox(
textLogProc.setForeground(new Color(0, 150, 0));

textLogProc.setEditable(true);

barraProc.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

barraProc.setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

textLogProc.setLineWrap(true);
funcionarioListBoxFuncionario.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

funcionarioListBoxFuncionario.setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

funcionarioListBoxFuncionario.addListSelectionListener(new FuncionarioListBoxEmpSelectionListener());
private class FuncionarioListBoxEmpSelectionListener implements ListSelectionListener

{

<a class="mention" href="/u/override">@Override</a>

public void valueChanged(ListSelectionEvent e) {
if(e.getSource() == funcionarioListBoxFuncionario.getList())

{

Funcionario funcionario = (Funcionario) funcionarioListBoxFuncionario.getSelectedValue();

if(funcionario != null)

{
funcionarioTextNumeroProc.setText(""+funcionario.getId());

funcionarioTextNomeProc.setText(funcionario.getNome());

funcionarioTextRgProc.setText(funcionario.getRg());

<a href="//funcionarioTextUfProc.setText">//funcionarioTextUfProc.setText</a>(funcionario.getUf());

 :arrow:textLogProc.setText(funcionario.getObs()); // é isso aqui que retorna normal com o setText mas é JtextArea.
}
		}
		
	}

//funcionarioTextUfProc.setText(funcionario.getUf()); //ESSE É UM JCOMBOBOX E EU NAO SEI RETORNAR UM VALOR DE JCOMBOBOX… O PROBLEMA DELE TA RESOLVIDO E GOSTARIA QUE RESOLVESSEM O MEU KKKKK :lol:

ESPERO TER AJUDADO

K

a mais uma coisa no seu model o get e set sao string nao esqueca disso

public String getObs() {
	return obs;
}
public void setObs(String obs) {
	this.obs = obs;
}
Criado 8 de setembro de 2008
Ultima resposta 20 de out. de 2008
Respostas 14
Participantes 5