Como carregar combobox com dados do banco de dados em Java?

8 respostas
java
R

Pessoal eu to tendo uma complicação… eu não estou conseguindo fazer para chamar os dados do banco de dados para a minha JComboBox

eu cadastrei alguns fornecedores, mas agora o que eu quero fazer, é que todos os fornecedores que eu cadastrar sejam inseridos no combobox, e toda vez que um fornecedor novo for cadastrado ele ser inserido no JComboBox… poderiam me ajudar? eu to perdido… eu n to conseguindo fazer

8 Respostas

4

Faz o select no banco, assim vc terá ou um ArrayList, ou um List de dados(Isso vc ja deve saber como fazer, eu suponho). Assim vc implementa o seguinte código:

List<Fornecedor> lista = new FornecedorDAO.getList(); // só um exemplo nesta linha de GET
for (int i = 0; i < lista.size(); i++) { 
    jComboBox1.addItem(lista.get(i).getNomeFornecedor); // Já que a lista é orientado a objetos, consigo     usar o GET nome
}

O que importa é o jComboBox.addItem(???), isso permite adicionar um String, e/ou Object pelo q me lembre

R

mano eu não consegui fazer e gostaria de vc ver o código da minha tela java swing.

//:Dfuncionando com o banco0
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;
import java.awt.Label;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.ImageFilter;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.text.MaskFormatter;
import javax.swing.text.PlainDocument;
import javax.swing.text.html.ImageView;

public class Tela_Cadastro_Prod extends JFrame implements ActionListener
{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
		//Vari�veis para os bot�es
		private JButton bt_salvar;
		private JButton bt_novo;
		private JButton bt_editar;
		private JButton bt_limpar;
		private JButton bt_cancelar;
		private JButton bt_pesquisar;
		private JButton bt_sair;
		private JButton bt_procurar;
	    private JFileChooser escolherImagem;
		

		//vari�veis simples
		private float cod, produto, quantidade, precodecompra, precodevenda, fornecedor, imagem;
		int resposta;  

		//vari�veis tela
		private JTextField  c_produto, c_quantidade, c_fornecedor, c_pesquisar, c_precounitario, c_precototal;
		private JLabel imageprod, l_produto, l_quantidade, l_precounitario, l_fornecedor, l_titulo;
		JTextField c_cod;
		JComboBox cmbFornecedorList = new JComboBox();
		
		InputMap bla = this.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);

		public Tela_Cadastro_Prod () throws ParseException
		{
			setTitle("Cadastro de Produtos");
			setBounds(180,40,990,520);
			setDefaultCloseOperation(DISPOSE_ON_CLOSE);
			setResizable(false);
			//getContentPane().setBackground(new Color(190,194,233));
			//getContentPane().setBackground(Color.RED);
			setLayout(null);
			setIcon();
			
			
			JLabel label=new JLabel("Cadastro de Produtos", SwingConstants.CENTER);
			label.setHorizontalTextPosition( SwingConstants.CENTER );
			label.setVerticalTextPosition( SwingConstants.BOTTOM );
			add(label);			
					
			
			//iniciar as vari�veis num�ricas
			cod = 0;
			produto = 0;
			quantidade = 0;
			precodecompra = 0;
			precodevenda = 0;
			//fornecedor = 0;
			imagem = 0;
			//nome = 0;
			
			
			//colocando a��o para os botoes (salvar)
				bt_salvar = new JButton();
				bt_salvar.setText("Salvar");
				bt_salvar.setBounds(340,420,100,30);
			//bt_calcula.setBackground(new Color(134,142,215));
			//bt_calcula.setForeground(Color.white);
			    this.add(bt_salvar);
			 
			// colocando a��o para os botoes (novo)
			//	bt_novo = new JButton();
			//	bt_novo.setText("Novo");
			//	bt_novo.setBounds(300,200,80,30);
			//	bt_novo.setBackground(new Color(134,142,215));
			//	bt_novo.setForeground(Color.white);
			//	//bt_calcula.setBackground(new Color(134,142,215));
			//	//bt_calcula.setForeground(Color.white);
			//	this.add(bt_novo);
				 
			//colocando a��o para os botoes (editar)
			//	bt_editar = new JButton();
			//	bt_editar.setText("Editar");
			//	bt_editar.setBounds(400,200,80,30);
			//	bt_editar.setBackground(new Color(134,142,215));
			//	bt_editar.setForeground(Color.white);
			//bt_calcula.setBackground(new Color(134,142,215));					
			//bt_calcula.setForeground(Color.white);
			//	this.add(bt_editar);
			
			//colocando a��o para os botoes (excluir)
				 bt_limpar = new JButton();
				 bt_limpar.setText("Limpar");
				 bt_limpar.setBounds(220,420,100,30);
			//bt_calcula.setBackground(new Color(134,142,215));
			//bt_calcula.setForeground(Color.white);
				 this.add(bt_limpar);
				
			//colocando a��o para os botoes (cancelar)
				// bt_cancelar = new JButton();
				// bt_cancelar.setText("Cancelar");
				// bt_cancelar.setBounds(405,275,90,30);
				// bt_cancelar.setBackground(new Color(134,142,215));
				// bt_cancelar.setForeground(Color.white);
			//bt_calcula.setBackground(new Color(134,142,215));
			//bt_calcula.setForeground(Color.white);
				// this.add(bt_cancelar);
				
			//colocando a��o para os botoes (pesquisar)
				//bt_pesquisar = new JButton();
				//bt_pesquisar.setText("Pesquisar");
				//bt_pesquisar.setBounds(25,340,130,30);
				//bt_pesquisar.setBackground(new Color(134,142,215));
				//bt_pesquisar.setForeground(Color.white);
			//bt_calcula.setBackground(new Color(134,142,215));
			//bt_calcula.setForeground(Color.white);
				//this.add(bt_pesquisar);
				
			//colocando a��o para os botoes
				bt_sair = new JButton();
				bt_sair.setText("Sair");
				bt_sair.setBounds(100,420,100,30);
				this.add(bt_sair);
				
				bt_procurar = new JButton();
				bt_procurar.setText("Procurar");
				bt_procurar.setBounds(25,320,100,30);
				this.add(bt_procurar);
				
				 
			// textfield						
			c_produto = new JTextField();
			c_produto.setBounds(125,120,250,20);
			this.add(c_produto);
			
			c_quantidade = new JTextField();
			c_quantidade.setBounds(125,200,90,20);
			this.add(c_quantidade);
			
			c_precounitario = new JTextField();
			c_precounitario.setBounds(125,160,100,20);
			this.add(c_precounitario);
		
			c_pesquisar = new JTextField();
			c_pesquisar.setBounds(140,320,250,30);
			this.add(c_pesquisar);
			
			/*c_fornecedor = new JTextField();
			c_fornecedor.setBounds(125,240,150,20);
			this.add(c_fornecedor);*/
			
			
			//label titulo
			Font fonte = new Font("Arial",Font.BOLD, 30);
			l_titulo = new JLabel ("Cadastro de Produtos");
			l_titulo.setFont(fonte);
			l_titulo.setBounds(350,-60,450,200);
			this.add (l_titulo);
			
			//label.setFont( new font( "Serif", Font.BOLD + Font.ITALIC + 20 )); 
			//Fonte titulo = new Fonte ("serif", Font.Bold | Font.Italic, 28);
			//JLabel titulo = new JLabel ("Cadastro de Produtos");
			//label.setFont();
			//l_nome.setFont(font);

			
			l_produto = new JLabel("Produto: ");
			l_produto.setBounds(25,120,200,20);
			this.add(l_produto);
			
			l_quantidade = new JLabel("Quantidade: ");
			l_quantidade.setBounds(25, 200, 200, 20);
			this.add(l_quantidade);
			
			l_precounitario = new JLabel("Preço Unitário: ");
			l_precounitario.setBounds(25, 160, 120, 20);
			this.add(l_precounitario);
			
			l_fornecedor = new JLabel("Fornecedor: ");
			l_fornecedor.setBounds(25, 240, 100, 20);
			this.add(l_fornecedor);
			//470, 140, 100, 20
			
			//pesquisando imagem			
			imageprod = new JLabel();
			imageprod.setBounds(620, 100, 260, 300);
			imageprod.setBorder(BorderFactory.createLineBorder(new Color(181, 181, 181),1));
			this.add(imageprod); 
			
			cmbFornecedorList.setSelectedItem(cmbFornecedorList);
			//pega o item selecionado da combobox, antes estava setSelectIndex. Precisa colocr entre parenteses o nome da combox
			//cmbFornecedorList.addActionListener(this);
			cmbFornecedorList.setBounds(125,240,150,20);
			add(cmbFornecedorList);
			add(l_fornecedor);
			
			
			bt_procurar.addActionListener(new ActionListener() {			
				public void actionPerformed(ActionEvent evt) {       
					
					escolherImagem = new JFileChooser();
			        
			        FileNameExtensionFilter filtro = 
			                new FileNameExtensionFilter("Tipos de Imagens", "jpg", "jpeg", "gif","png");
			        escolherImagem.setFileFilter(filtro);

			                
			        int resultado = escolherImagem.showOpenDialog(Tela_Cadastro_Prod.this);
			                
			        if (resultado == JFileChooser.APPROVE_OPTION) {
			            
			            // armazena o diretório da imagem.
			            String caminho = escolherImagem.getSelectedFile().getPath();
			            imageprod.setIcon(new ImageIcon(caminho));
			            c_pesquisar.setText(caminho);
			        }
					
					
					
			} 
			});
			
			
			//criando eventos
			
			//botao sair
			bt_sair.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evto){	
					if(evto.getSource() == bt_sair){
			
						resposta = JOptionPane.showOptionDialog(null,"Tem Certeza que Deseja Sair?","Deseja Sair",JOptionPane.YES_NO_OPTION, DISPOSE_ON_CLOSE, null, null, null);
						if (resposta == JOptionPane.YES_OPTION) {
							// verifica se o usu�rio clicou no bot�o YES
							dispose();
							} 
			
					}
				}
			});
			
			//botao limpar
			bt_limpar.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evento){
					if(evento.getSource() == bt_limpar){
						c_quantidade.setText("");
						c_fornecedor.setText("");
						c_precounitario.setText("");
						c_pesquisar.setText("");
						c_produto.setText("");
					}
				}
			 });
			
			this.add(bt_limpar);
			
			//bot�o salvar
			bt_salvar.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evto){	
					if(evto.getSource() == bt_salvar){
						
						String host = "127.0.0.1";
	                    String user = "root"; 
	                    String password = "";
	                    String db = "eletronicworld";
	                    //banco de dados
	                        //Conecto no banco
	                        try 
	                        {
	                                
	                                Class.forName("com.mysql.jdbc.Driver");
	                                Connection connection = DriverManager.getConnection("jdbc:mysql://" + host + ":3306/" + db + "?autoReconnect=true",user,password); 
	                                connection.setAutoCommit(false);
	                                
	                                //Crio a query
	                                //String sql = "select * from cad_func where id = ?"; 
	                                //String sql= "insert into cadastrocliente (nome,datanacimento,CPF,endere�o,estado,cidade,cep,bairro,email,senha) values(??????????)";
	                                //seleciona da tabela filmes onde o id_filme ser� digitado
	                                //String sql = "select * from filmes"; 
	                                
	                                String sql="insert into cadastroproduto (produto,quantidade,precounitario,precototal,fornecedor,imageprod,diretimg) values (?,?,?,?,?,?,?)";
	                                //insere dentro da tabela login nos campos nome,login,senha os valores que ser�o digitados
	                             
	                                //Crio o statement
	                                PreparedStatement stmt = connection.prepareStatement(sql);

	                                int rseletronicworld = stmt.executeUpdate(); 
	                                
	                                //Passo parametro
	                                
	                                stmt.setString(1, c_produto.getText() );
	                                stmt.setString(2, c_quantidade.getText() );
	                                stmt.setString(3, c_precounitario.getText() );
	                                stmt.setString(4, c_precototal.getText() );
	                                stmt.setString(5, c_fornecedor.getText() );
	                                stmt.setString(6, imageprod.getText() );
	                                stmt.setString(7, c_pesquisar.getText() );
	                                //1 � a primeira interroga��o, 2 o segundo,...
	                                //
	                                
	                                //Executo a query
	                                //item exclusivo para realizar o insert, para o select � outro. Ver o exemplo 
	          
	                                //rseletronic_world.next();
	                                //s� funciona para o select
	                                
	                                //Mostro os dados
	                                
	                                
	                                //System.out.println("Diretor: " + rsFilme.getString("diretor"));
	                                // quando � digitado no c_nome a query � mostrada no c_email, atraves do id que � digitado se busca o resultado no banco de dados
	                                // � mostrado o resultado quando o botao confirma � clicado, por que esta na a��o definida para o botao
	                                
	                               
	                                stmt.close();
	                                connection.commit();
	                                connection.close();
	                                // fecha tudo, a tabela e a conex�o 
	                                //verificando quais s�o os erros de conex�o
	                        } catch (ClassNotFoundException e) {
	                                System.out.println("Erro! Driver JDBC n�o encontrado!");
	                                e.printStackTrace();
	                        } catch (SQLException e) {
	                                System.out.println("Erro! Problemas realizando a conexao ou a consulta!");
	                                e.printStackTrace();
	                        } 
						
						JOptionPane.showMessageDialog(null,"Produto salvo com sucesso!");
					}
					//System.exit(0);
				}
			});
			
			//criando tabelas
			//String[] colunas = new String[] {"Produto","Fornecedor","Pre�o de compra (R$)","Pre�o de venda (R$)"};
			//String[][]dados = new String[][]
			//	{
			//		{"","","",""},
			//		{"","","",""},
			//		{"","","",""},
			//		{"","","",""},
			//		{"","","",""},
			//		{"","","",""},
			//		{"","","",""},
			//		{"","","",""},
					
	//	};
		//	JTable tabela = new JTable (dados, colunas);
		//	JScrollPane scroll = new JScrollPane();
		//	scroll.setViewportView (tabela);
		//	scroll.setBounds(30, 200, 850, 150);
		//	this.add(scroll);
		}
		{}
		
		
		
		public void setIcon() {
			// TODO Auto-generated method stub
		setIconImage(Toolkit.getDefaultToolkit().getImage("Imagens/logoicon.png"));
		}
		
	public static void main(String[] args) throws ParseException {
		Tela_Cadastro_Prod Calculadora = new Tela_Cadastro_Prod();
		Calculadora.setVisible(true);
		
		 try {
	            for (UIManager.LookAndFeelInfo info : 
	                    UIManager.getInstalledLookAndFeels()) {
	                if ("Windows".equals(info.getName())) {
	                    UIManager.setLookAndFeel(info.getClassName());
	                    break;
	                }
	            }
	        } catch (ClassNotFoundException ex) {
	            Logger.getLogger(Tela_Cadastro_Prod.class.getName()).log(Level.SEVERE,
	                    null, ex);
	        } catch (InstantiationException ex) {
	            Logger.getLogger(Tela_Cadastro_Prod.class.getName()).log(Level.SEVERE,
	                    null, ex);
	        } catch (IllegalAccessException ex) {
	            Logger.getLogger(Tela_Cadastro_Prod.class.getName()).log(Level.SEVERE,
	                    null, ex);
	        } catch (UnsupportedLookAndFeelException ex) {
	            Logger.getLogger(Tela_Cadastro_Prod.class.getName()).log(Level.SEVERE,
	                    null, ex);
	        }

	}
	public JTextField getC_produto() {
		return c_produto;
	}

	public void setC_produto(JTextField c_produto) {
		this.c_produto = c_produto;
	}

	public JTextField getC_quantidade() {
		return c_quantidade;
	}

	public void setC_quantidade(JTextField c_quantidade) {
		this.c_quantidade = c_quantidade;
	}

	public JTextField getC_fornecedor() {
		return c_fornecedor;
	}

	public void setC_fornecedor(JTextField c_fornecedor) {
		this.c_fornecedor = c_fornecedor;
	}

	public JTextField getC_pesquisar() {
		return c_pesquisar;
	}

	public void setC_pesquisar(JTextField c_pesquisar) {
		this.c_pesquisar = c_pesquisar;
	}

	public JTextField getC_cod() {
		return c_cod;
	}

	public void setC_cod(JTextField c_cod) {
		this.c_cod = c_cod;
	}

	public JTextField getC_precounitario() {
		return c_precounitario;
	}

	public void setC_precodecompra(JTextField c_precounitario) {
		this.c_precounitario = c_precounitario;
	}

	public JTextField getC_precototal() {
		return c_precototal;
	}

	public void setC_precototal(JTextField c_precototal) {
		this.c_precototal = c_precototal;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}

}

No JCombo Box Fornecedores, quero que ele carregue os dados do banco de dados e possa cadastrar também.

M

Exemplo:
// MEU COMBO : jcb_newcli_cidades
// CONEXAO COM BD: con

String sql = "SELECT CIDADE FROM CIDADES "; con.executeSQL(sql); jcb_newcli_cidades.removeAllItems(); try { con.resultset.first(); while (con.resultset.next()) //enquanto tiver dados jcb_newcli_cidades.addItem(con.resultset.getString("CIDADE")); } catch (SQLException erro) { JOptionPane.showMessageDialog(null,"Nenhuma informação localizada - Erro: \n"+erro); }

R

então brother não esta reconhecendo o resultset. tanto na conexão, quanto no while.

PS.: meu ResultSet se chama: rseletronicworld;

R

A linha:

cmbCidadeList.removeAllItems();

é mesmo necessária?

4

Veja o exemplo que montei para vc, quero que leia os comentários que coloquei no código, anotei cada detalhe para facilitar o entendimento.

ExemploComboBox.rar (24.7 KB)

Só para constar, eu desenvolvo orientado a objetos, caso vc também utilize esta forma, conseguirá entender com maior facilidade. Duvidas sobre o exemplo que mandei, ficarei a disposição para responde-las via skype se preferir.

R

Mano … Não deu certo… O que eu preciso é que seja. Carregado essa informação pelo banco de dados algo mais simples… Porém que funcione

4

Se vc tivesse lido os comentários q coloquei entenderia que os valores q o exemplo geram ao meu comboBox são fictícios e tem o objetivo de simular a entrada de dados a lista do comboBox, Se seu problema não é especificamente a população de dados e sim o Select do banco, olhe este link:

https://www.caelum.com.br/apostila-java-web/bancos-de-dados-e-jdbc/

Caso vc já tenha a matriz do seu select, reveja o código e tente entende-lo.

Criado 12 de novembro de 2016
Ultima resposta 19 de nov. de 2016
Respostas 8
Participantes 3