Obtendo lista do JComboBox no banco de dados

2 respostas
R

Olá pessoal,

Sou meio "newbie", e me surgiu uma dúvida aqui.

Existe uma forma mais fácil de se obter no banco de dados uma lista para um JComboBox?

Eu tive que rebolar pra conseguir essa forma aqui, mas tenho certeza absoluta que deve ter um jeito mais fácil.

Aqui vai a minha solução:

JComboBox testeCB = new JComboBox(getListaComboBox());

...

private String[] getListaComboPlaca() {
	int i = 0, t = 0;
	String[] lista;
	try {
		rs = stmt.executeQuery("select placa from veiculos;");
		while (rs.next()) {
			++t; // variável apenas para inicializar corretamente o array
		}
	}
	catch(Exception e) {
		JOptionPane.showMessageDialog(null, "Erro no banco:\n\n" + e.getMessage());
	}
	lista = new String[t]; // inicializando o array
	try {
		rs = stmt.executeQuery("select placa from veiculos;");
		while (rs.next()) {
			lista[i++] = rs.getString("placa"); // lançando valores pra dentro do array
		}
	}
	catch(Exception e) { 
		JOptionPane.showMessageDialog(null, "Erro no banco:\n\n" + e.getMessage());
	}
	return lista;
}

E aí? O que acharam da minha solução?

E alguém poderia me sugerir a forma correta e mais fácil? Porque eu sei que essa minha está muito "porca" hehehe...

Abraço![/code]

2 Respostas

W

Voce pode usar um Vector no lugar de um array, assim so precisara fazer uma vez.

Ex.: Vector v = new Vector();

while (rs.next())

v.addElement(rs.getString(campo));

JComboBox combo = new ComboBox(v);

Se tiver algum erro é na sintaxe, mas a logica é essa.

Wallace

R

Cria um metodo como esse usando DefaultComboBoxModel

public DefaultComboBoxModel PopularCombo(){ try{ conectar(); cb = new DefaultComboBoxModel(); sql = "SELECT TIPO FROM GENEROS;"; //ORDER BY GENEROS;"; ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); int cont = 0; while (rs.next()){ cb.addElement((String)rs.getString("TIPO")); cont++; } ps.close(); desconectar(); } catch (Exception e){ e.printStackTrace(); } return cb ; }

Criado 4 de agosto de 2005
Ultima resposta 5 de ago. de 2005
Respostas 2
Participantes 3