Preencher JComboBox com campos de uma tabela do banco [RESOLVIDO]
5 respostas
S
Skurubidios
Fale galera.
Estou aqui pra tirar umas duvidas a respeito do JComboBox.
Tenho uma banco chamado ecodados.gbd
Ele tem uma tabela de tvenvendedor onde tem vários campos estou tentando colocar no combo os campos nome e codigo.
Pesquisei algumas por aqui e cheguei a este código.
Mas não tenho ideia onde estou errando e nem se estou no caminho certo.
Tenho algumas perguntas que são:
1- Criei um um FormularioJFrame e coloquei um jcomobox, o que eu coloco no ActionsEvents dele?
2- Onde estou errando neste metodo?
3- Falta mais alguma coisa?
4 - O que coloco dentro do removeAlltItems(); pois ele pede um paramentro
publicvoidpreencheCombo(ResultSetresultSet)throwsSQLException{Connectioncon=null;Statementstm=null;try{Class.forName("org.firebirdsql.jdbc.FBDriver");con=DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:/ecosis/dados/ecodados.gbd","sysdba","masterkey");System.out.println("Conectado com sucessso ao banco.");stm=(Statement)con.createStatement();}catch(Exceptione){System.out.println("Não foi possível conectar ao banco: "+e.getMessage());}jCVendedores.removeAlltItems();while(resultSet.next()){jCVendedores.addItem(resultSet.getString(2));}jCVendedores.updateUI();resultSet=stm.executeQuery("Select nome, codigo from tvenvendedor where tvenvendedor.empresa = '01' order by codigo");}
1- depende do que você quer fazer.
2- O Pricipal erro que eu pude ver ai é que vc tenta adicionar os elementos ao combo antes mesmo de fazer a consulta.
3-Tente separar a camada de persistencia da camada de apresentação dos dados.
4-removeAlltItems() não pede nenhum parâmentro.
S
Skurubidios
1 - Eu quero que no momento que eu execute o aplicativo já aparece o vendedor do código 1. E a pessoa fosse lá na "setinha" aparece o restante dos outros vendedores.
2,3 - No caso essa parte do código fica assim agora?
jCVendedores.removeAlltItems();resultSet=stm.executeQuery("Select nome, codigo from tvenvendedor "+"where tvenvendedor.empresa = '01' order by codigo");while(resultSet.next()){
jCVendedores.addItem(resultSet.getString(2));}
jCVendedores.updateUI();}
4 - no caso eu coloco nome_do_combo.removeAllItems() , é assim que estou fazendo.
V
victorp_farias
É o código ficaria exatamente da maneira que você postou ai.
Não está funcionando?
S
Skurubidios
Não está funcionando por 3 motivos.
1 - esse metodo [public void preencheCombo(ResultSet resultSet) throws SQLException { está apenas montado na parte dos códigos.
2 - está dando erro no jCVendedores.removeAlltItems();
cannot simbol
simbol : method removeAllItems
locatin : class.javax.swing.JComboBox
3 - dentro do private void jCVendedoresActionPerformed(java.awt.event.ActionEvent evt) {
não tem nada
teria que colocar o metodo preenchecombo aqui?
e qual o parâmetro que coloco pois ele pede?
S
Skurubidios
Eu conseguir resolver já faz um tempinho mas agora eu vou colocar como o código ficou.
Mudei algumas coisas pra ficar mais economico.
publicvoidpreencheCombo()throwsSQLException{Connectioncon=newConexaoBanco().getConexao();PreparedStatementstmt=con.prepareStatement("Select nome, codigo from tvenvendedor "+"where tvenvendedor.empresa = '01' order by codigo");ResultSetrs=null;try{rs=stmt.executeQuery();}catch(SQLExceptionex){JOptionPane.showMessageDialog(null,"Erro no executeQuery.");}jCVendedores.removeAllItems();while(rs.next()){// String nome = rs.getString("nome");//String codigo = rs.getString("codigo");//System.out.println(nome + " :: " + codigo);jCVendedores.addItem(rs.getString(1));}stmt.close();con.close();}