.
Inserir dados do banco de dados em um combo box[RESOLVIDO]
24 Respostas
já debugou? o sql retorna valores?
já pesquisou no forum sobre tal asssunto? tem bastante material sobre isso.
att,
então já rodei a aplicação sim e não retorna nenhum valor !! o que está acontecendo será ?!
então esse cara:
ta vazio?
att,
Então é sim, acho que deve ter algum erro com o código ! porque não está vindo nenhum valor do banco de dados !
Retira o “;” do comando e adiciona um degub para ver se está entrando no bloco while. Pode ser um “syso” mesmo.
Tenta tirar o try e catch do seu método, e adicionar o clausula throws sqlException e Exception.
Depois tira o statement. E deixe o seu código assim.
Statement stm = conn.createStatement();
Faça o mesmo com o resultset.
No seu select você pode deixar no lugar de “empresa_nome”, simplesmente um “*”. Assim facilita, se houver alguma divergência. Não que vá alterar muito, mas sabe que é melhor previnir do que ficar correndo atrás de erros.
No lugar de:
conn.close();
Você põem:
stm.close;
rs.close;
Há não ser que você queira fechar sua conexão com o banco, vai da sua aplicação. Porém não sei se não interfere na consulta, acho que não.
Dentro do seu método popularCombo, você coloca isto:
dao fat = new dao();
try{
DefaultComboBoxModel defaulComboBox = new DefaultComboBoxModel(fat.getDados().toArray());
jComboBox1.setModel(defaulComboBox);
}catch (Exception e){
}
Então você chama este método no seu construtor e seja feliz.
E não esqueça de verificar se você tem algum dado cadastrado no seu banco.
Espero ter ajudado.
Abraços
coloquei isso que no meu código , rodei a aplicação… mas não esta aparecendo nenhum valor ainda ! o que será que está de errado ??
Nesta tabela tem algum dado inserido?
Então posta o seu código novamente, pra ver como ficou.
então, o meu código está do jeito que tava antes , só que com as suas alterações ! não está retornando nenhum valor ainda…
alguém tem algum código básico que funcione o combo box, preciso urgentemente!!
obrigado
Se você não postar o código, não tem como te ajudar mais.
O jeito é você ir fazendo teste até conseguir achar o seu erro.
Sem testar e mudar o que está errado, não vai aparecer nada mesmo.
esta ai o codigo ! não retorna nenhum valor e nenhum erro ao rodar a aplicação
public void popularCombo(){
jComboBox1.removeAllItems();
dao fat = new dao();
ArrayList<String> shad = fat.getDados();
try{
DefaultComboBoxModel defaulComboBox = new DefaultComboBoxModel(fat.getDados().toArray());
jComboBox1.setModel(defaulComboBox);
}catch (Exception e){
}
//loop que percorrerá todos os dados retornado pelo banco
for (int i=0; i<shad.size();i++) {
String lista = shad.get(i);
//comando para adicionar os dados no comboBox
jComboBox1.addItem(lista);
}
}
public ArrayList<String> getDados()throws sqlException {
ArrayList<String> dados = new ArrayList<String>();
try{
Statement stm = (Statement) conn.createStatement();
//resultado do banco
ResultSet rs = (ResultSet) stm.executeQuery("Select empresa_nome from empresas;") ;
while(rs.next()){
dados.add(rs.getString("empresa_nome"));
}
// conn.close();
stm.close;
rs.close;
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Erro ao selecionar." +e);
}
return dados;
}
Faz o seguinte, tira:
public ArrayList<String> getDados()throws sqlException {
ArrayList<String> dados = new ArrayList<String>();
try{
Statement stm = (Statement) conn.createStatement();
//resultado do banco
ResultSet rs = (ResultSet) stm.executeQuery("Select empresa_nome from empresas;") ;
while(rs.next()){
dados.add(rs.getString("empresa_nome"));
}
// conn.close();
stm.close;
rs.close;
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Erro ao selecionar." +e);
}
return dados;
}
e põem:
public ArrayList<String> getDados()throws sqlException, Exception {
ArrayList<String> dados = new ArrayList<String>();
Statement stm = conn.createStatement();
//resultado do banco
ResultSet rs = stm.executeQuery("Select empresa_nome from empresas;") ;
while(rs.next()){
dados.add(rs.getString("empresa_nome"));
}
// conn.close();
stm.close;
rs.close;
return dados;
}
e:
public void popularCombo() {
jComboBox1.removeAllItems();
dao fat = new dao();
ArrayList<String> shad = fat.getDados();
try{
DefaultComboBoxModel defaulComboBox = new DefaultComboBoxModel(fat.getDados().toArray());
jComboBox1.setModel(defaulComboBox);
}catch (Exception e){
}
//loop que percorrerá todos os dados retornado pelo banco
for (int i=0; i<shad.size();i++) {
String lista = shad.get(i);
//comando para adicionar os dados no comboBox
jComboBox1.addItem(lista);
}
}
por:
public void popularCombo() throws SqlException, Exception{
dao fat = new dao();
DefaultComboBoxModel defaulComboBox = new DefaultComboBoxModel(fat.getDados().toArray());
jComboBox1.setModel(defaulComboBox);
}
Sendo que a sua conexão com o banco está funcionando certinho.
E em vez de copiar e colar, vai digitando o que está escrito, e dando um ‘ctrl+space’, que é para o netbeans, se é que você está usando o netbeans, poder ir fazendo os import’s necessários.
blzz , eu vou tentar aqui ! depois eu posto novamente alguma coisa sobre isso !
valeu…
Certo.
Só não esqueça de colocar [Resolvido], caso tenha solucionado o seu problema.
Abraços
não consegui , coloquei o código igualzinho o que vc escreveu… não dei ctrl+c não, escrevi tudinho e continua não aparecendo nenhum valor ainda!!!
não consegui não, o codigo esta igual, escrevi tudinho! não aparece nenhum valor ainda…
Você chamou o método no construtor?
como assim? eu escrevi do jeito que me passo! esse metodo popularCombo esta dentro da classe!
Você fez a sua tela clicando e arrastando os componentes, certo?
Então lá no seu código, vai ter a inicialização da classe:
public class cadastro_Aluno extends javax.swing.JFrame {
e logo abaixo vai ter o construtor da sua classe:
public cadastro_Aluno() throws Exception {//note que o nome deste método é o mesmo da sua classe, porém ele virou um método. Isto é um construtor.
Provavelmente o seu construtor já tem alguns métodos, o mais comum é ter o método:
initComponents();//que é o método que constrói os seus componentes.
Então chame o seu método abaixo deste.
acabei de colocar abaixo do initComponents(), dentro do método e o public void popularCombo esta com a linha vermelha de erro! esta dizendo expressao ilegal
Para você chamar o seu método, você segura “ctrl+space”, e começa a digitar o nome dele, 'popularCombo, então você verá que irá aparecer o seu método escrito. Dai você seleciona o seu método e dá um enter.
Está chamado o seu método.
Não esquecendo do ‘;’, no fim do comando.
blz, vou tentar …
consegui…valeu a ajuda!
fica com Deus
Ok.
Mas o [resolvido] que você tem que colocar é no primeiro post.
Abraços