Compatilhando conhecimento [COMBOBOX]

1 resposta
A

Oi pessoal, há algum tempo eu estava com algumas dúvidas de como carregar uma combobox com dados do mysql com jsp, eu sempre encontrava todos falando assim: “Usa javascript que é mais facil” ou “A solução é Ajax”, mais ninguém passava uma solução simples em jsp, então criei este código e estou disponibilizando para quem quiser utilizar.

No HTML:

<html>
<body>
<form name="exemplo" action="executaExemplo.jsp" method="POST">
                Gerência/Divisão:<select name="ger_div">
                    <option value="Selecione">Selecione</option>
                    <%  
                        fonte carrega = new fonte();
                        out.println(carrega.carregaCombo());
                     %>
                </select><br>
            <input type="button" value="Enviar" onclick="submit()" name="btnEnviar" />
        </form>
</body>
</html>

No meu src:

public String carregaCombo() {
        String retorno = "";

        try {
            Class.forName("org.gjt.mm.mysql.Driver").newInstance();
            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/meubanco", "root", "");
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select informacao from tabela");
            while (rs.next()) {
                String txtInfo = rs.getString("informacao");
                
                retorno = retorno + "<option value=" + txtInfo + ">" + txtInfo + "</option>";
                

            }
        } catch (InstantiationException ex) {
            ex.printStackTrace();
        } catch (IllegalAccessException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return retorno;
    }

e é isso :smiley:
vai ser gravado o valor que está na tabela do bd e exibirá também o valor contido na tabela do bd, assim ao registrar ou alterar algum valor no banco de dados ele assumirá também o valor da tabela, e ao adicionar algum valor à tabela da combo ele automaticamente será exibido.

se o que eu disse nesse parágrafo anterior ficou estranho me desculpem hehe.
abraços

1 Resposta

Jair_Rillo_Junior

Muito legal sua iniciativa de compartilhar conhecimento André, porém vou colocar algumas ressalvas no seu código.

1 - Tente evitar o máximo o uso de Scriptlet, no seu exemplo, você poderia usar c:forEach da JSTL
2 - A sua classe CarregaCombo está com excesso de responsabilidade. Ela tem que conectar no banco, fazer uma query e ainda tratar os valores. O ideal é separar toda a parte de operação com o BD em um outro layer (no caso, DAO seria interessante).

Mas é isso ai, parabéns pela iniciativa

Criado 14 de julho de 2009
Ultima resposta 14 de jul. de 2009
Respostas 1
Participantes 2