Preencher JComboBox com campos de uma tabela do banco [RESOLVIDO]

5 respostas
S
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
public void preencheCombo(ResultSet resultSet) throws SQLException {
        Connection con = null;
        Statement stm = 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 (Exception e) {
            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");

    }

Desde já agradeço a paciencia.

5 Respostas

V

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

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

É o código ficaria exatamente da maneira que você postou ai.
Não está funcionando?

S

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

Eu conseguir resolver já faz um tempinho mas agora eu vou colocar como o código ficou.
Mudei algumas coisas pra ficar mais economico.

public void preencheCombo() throws SQLException {
        Connection con = new ConexaoBanco().getConexao();
        PreparedStatement stmt = con.prepareStatement("Select  nome, codigo from tvenvendedor  "
                + "where tvenvendedor.empresa = '01' order by codigo");
        ResultSet rs = null;
        try {
            rs = stmt.executeQuery();
        } catch (SQLException ex) {
            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();
    }
Criado 6 de agosto de 2011
Ultima resposta 15 de ago. de 2011
Respostas 5
Participantes 2