JComboBox + ArrayList + BD

5 respostas
J

Boa noite...
Estou com um problema que nao consigo resolver ja li varios post, API mas nao entendi como funciona..
preciso carregar o meu JComboBox com os dados do BD mas nao consigo veja como to entando fazer...

import java.sql.Connection;
import java.sql.SQLException;

import org.omg.CORBA.PUBLIC_MEMBER;

public class ArrayList {
	public static void ArrayList(){//verifica o codigo         
			try{  
				ConexaoMySql.statement = ConexaoMySql.connect.prepareStatement("SELECT Nome FROM professor");  
				int count = 0;
				while(ConexaoMySql.resultSet.next()){
					count++;
				}  
				String[] x = new String[count];
				ConexaoMySql.resultSet.beforeFirst();
				int i = 0;
				while(ConexaoMySql.resultSet.next()){
					x[i] = ConexaoMySql.resultSet.getString("Nome");
					i++;
				}  

			}catch(SQLException e){  
				System.out.println(e.getMessage());  
			}  
		return;  
	}  
}
{
					ComboBoxModel cbxProfessorModel = new DefaultComboBoxModel(new String[]{
					"Prof01", "Prof02", "Prof03"
					});

					cbxProfessor = new JComboBox();
					pnDados.add(cbxProfessor);
					cbxProfessor.setModel(cbxProfessorModel);
					cbxProfessor.setBounds(83, 37, 423, 23);
				}
alguem me ajude pelo amor de DEUS.... [size=24] [color=red]preciso disso com urgencia. Alguem pode me ajudar[/color] [/size]

5 Respostas

DeGuedes

Cara eu uso assim os combos:

private void ComboSituacao() { Sit_AgendaJpaController sit_agendajpa = new Sit_AgendaJpaController(); List<Sit_Agenda> lstSitAg = new ArrayList<Sit_Agenda>(); try { //procura no banco todas as entidades lstSitAg = sit_agendajpa.findSit_AgendaEntities(); //remove tudo do combo jCSit.removeAllItems(); //faz o iterator Iterator<Sit_Agenda> i = lstSitAg.iterator( while (i.hasNext()) { //e vai adicionando item por item jCSit.addItem(i.next()); } } catch (Exception e) { } }

Espero ter ajudado! :smiley:

viniciusalvess
package vini.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Vector;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;

public class JVComboBox extends JComboBox {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private List<Integer> Cods = new ArrayList<Integer>();
	private String Campo;
	
	public void setValue(int value) {
		for (int i = 0; i < Cods.size(); i++) {
			if (Cods.get(i) == value) {
				this.setSelectedIndex(i);
				return;
			}
		}				
		this.setSelectedIndex(-1);
	}

	public int getValue() {
		int iSel = this.getSelectedIndex();
		if (iSel >= 0 & iSel < Cods.size()) {
			return Cods.get(iSel);
		 } 
		
		return -1; 
	}
	
	public void addValue(int cod, String desc) {
		Cods.add(cod);
		this.addItem(desc);
	}
	

	public void preencheLista(Connection conexao, String Nometabela, String campocod, String Campodesc){
		Cods.clear();
		removeAllItems();

		String select = "select "+campocod+", "+Campodesc+" from " + Nometabela +" order by "+Campodesc;

		try {
			PreparedStatement pstm = conexao.prepareStatement(select);
			ResultSet rs = pstm.executeQuery();
			while(rs.next()){
				addValue(rs.getInt(1), rs.getString(2));
			}
			pstm.close();
			rs.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


	public void setCampo(String campo) {
		Campo = campo;
	}

	public String getCampo() {
		return Campo;
	}
	

}

Fiz esse ai , funciona OK !

ViniGodoy

É cheia de péssimas práticas de programação, mas “roda”.

viniciusalvess

pow Viny , da um desconto ai , sou principiantem Java !

mas absorvo sua criticas como complemento para melhorar !

ViniGodoy

Se quiser melhorar, dê uma olhada em como funciona o ComboBoxModel. Você nem sequer vai precisar criar uma subclasse de JComboBox, nem criar aquele List<Integer> ali.

Também evite concatenar Strings em statements. O ideal é que as classes sejam criadas em DAOs específicos, e usando a passagem de parâmetro (com aquelas ?). Isso evita que o programador tenha que conhecer a versão String do banco, evita ataques de SQL Injection e também facilita para inserção de Strings, por causa dos apóstrofes.

Finalmente, mantenha sempre ResultSets, Statements e Conexões fechadas.
Preferencialmente, feche tudo num finally, logando as exceptions adequadamente, se ocorrerem.

Criado 9 de novembro de 2010
Ultima resposta 9 de nov. de 2010
Respostas 5
Participantes 4