Combobox/classes DAO[RESOLVIDO]

7 respostas
P
Ola, Estou arrumando minhas classes e começando a usar classes DAO ainda tenho algumas duvidas mas estou conseguindo programar cm a ajuda do guj e do google =) bem mas estou iniciando este tópico por que justamente em uma destas classes DAO que estou tendo problemas..criei um método para pesquisar as turmas no banco e depois retornar um arraylist contendo as mesmas ai em outra classe referente a tela no caso eu crio objetos e uso este metodo para preencher um a combobox mas minha combo fica vazia!:( Meu código é o seguinte na classe TurmaDAO:
public ArrayList<String> carregaTurmas(Object obj)throws Exception
	{
		try{
			ArrayList<String>nomeTurmas=new ArrayList<String>();
			PreparedStatement ps= conexao.prepareStatement("select t.nome,t.id_tipoturma,a.tipo,a.id,e.id,e.tipo from turma t,tipoturma a,ensino e where t.id_ensino=e.id and e.tipo='"+obj+"' and t.totalAlunosTurma<43 and t.id_tipoturma=a.id and a.tipo='"+"semestral"+"'");
			ResultSet resultado = ps.executeQuery();
			
			while (resultado.next())
			{ 
				nomeTurmas.add(resultado.getString(1));
			}	
			return nomeTurmas;
		}
		catch(Exception e1)
		{
			JOptionPane.showMessageDialog(null, "A turma não esta cadastrada no banco!");
			e1.printStackTrace();
			throw e1;
		}
	}
E na classe Cadastro,onde eu preencho a combo tentei fazer o seguinte:
public void carrega()
{
	Turma tur=new Turma();
	TurmaDAO turDAO=new TurmaDAO();
	ArrayList<String>aux=new ArrayList<String>();
	try {
		aux=turDAO.carregaTurmas(comboBox);
		turma.removeAllItems();
		for(int i=0;i<aux.size();i++)
		{
			turma.addItem(aux.get(i));
		}
		System.out.println("metodo carrega()");
	} catch (Exception e) {
		e.printStackTrace();
	}
	
}
Alguém poderia me ajudar a encontrar o erro?obrigada

7 Respostas

gustavoliveira

Uma dica, primeiro debuga teu codigo… e ve se seu ArrayList esta retornando com dados…

EHS

Para preencher uma combobox eu sempre uso ITERATOR, da uma procurada tem bastante exemplo e faz como o gustavo falou, debuga para ver se esta retornando algo.

P

Oi Gustavo,
Bah!o meu arraylist não esta retornando nada!coloquei uns system no método da classe DAO(no laço do while e após ele) mas nada é exibido :frowning:
mas o select esta funcionando pelo menos no banco :confused:

Nicolas_Fernandes

Oi, paty!
Antes de mais nada, algumas considerações:

  1. Quando você for usar a cláusula throws, você não precisa fazer uso do bloco try/catch dentro do método. Essa cláusula [throws] serve justamente para você lançar qualquer exceção para as camadas superiores. Então, ou você trata a exceção com o bloco try/catch ou usa a cláusula throws. Os dois não convém;

  2. Veja esses dois pedaços de código:
    Esse…

e esse…

paty_trind:
try { aux=turDAO.carregaTurmas(comboBox);

Quando você faz a comparação por tipo, você compara com um objeto combobox, e não com um valor. Por isso não há nenhum valor gerado. O que você deve fazer é pegar o valor selecionado do seu combobox e assim compará-lo na sua sentença.

try { aux=turDAO.carregaTurmas(comboBox.getSelectedValue());

  1. Você está usando PreparedStatements e está concatenando strings ao mesmo tempo. Dica: quando usar PreparedStatements, use os métodos de preenchimento de atributos. Quando você concatena strings, seu código pode ser alvo fácil de SQL Injections, além de ficar preenchendo aspas aqui, aspas ali.

Use os PreparedStatements desse modo:

String sentencaSelect = "select t.nome,t.id_tipoturma,a.tipo,a.id,e.id,e.tipo from turma t,tipoturma a,ensino e where t.id_ensino=e.id and e.tipo= ? and t.totalAlunosTurma< 43 and t.id_tipoturma=a.id and a.tipo= ?";

PreparedStatement statementSelect = conexao.prepareStatement(sentencaSelect);
statementSelect.setString(1, "Valor qualquer"/* o valor para o seu parâmetro 1 que, no caso, é o tipo de ensino. */);
statementSelect.setString(2, "Valor qualquer" /* o valor para o seu parâmetro 2 que, no caso, é o tipo de turma. */);
ResultSet resultSelect = statementSelect.execute();
//...

Não fica mais limpo e inteligível?

Agora, faça essas alterações na sua classe DAO e tente regerar a sua combobox novamente!
Espero ter ajudado, abraços!

P

Oi EHS,
nunca usei ITERATOR :oops: :oops:
mas vou dar uma pesquisada sobre isso sim!

P

Oi Nicolas Fernandes,
tu me ajudastes sim!Bah!não tinha visto que tin ha tantos problemas no meu código :oops: mas agora esta funcionando o problema era que tu disseste sobre as comparações

Quando você faz a comparação por tipo, você compara com um objeto combobox, e não com um valor. Por isso não há nenhum valor gerado. O que você deve fazer é pegar o valor selecionado do seu combobox e assim compará-lo na sua sentença.

Fiz o seguinte:

Muito obrigada!

Nicolas_Fernandes

paty_trind:
Oi Nicolas Fernandes,
tu me ajudastes sim!Bah!não tinha visto que tin ha tantos problemas no meu código :oops: mas agora esta funcionando o problema era que tu disseste sobre as comparações
Quando você faz a comparação por tipo, você compara com um objeto combobox, e não com um valor. Por isso não há nenhum valor gerado. O que você deve fazer é pegar o valor selecionado do seu combobox e assim compará-lo na sua sentença.

Fiz o seguinte:

Muito obrigada!

Hehe, são só convenções que, com o passar do tempo, você se adapta.
Se o problema está totalmente solucionado, coloque [RESOLVIDO] no título do tópico!

Criado 10 de agosto de 2011
Ultima resposta 10 de ago. de 2011
Respostas 7
Participantes 4