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:
publicArrayList<String>carregaTurmas(Objectobj)throwsException{try{ArrayList<String>nomeTurmas=newArrayList<String>();PreparedStatementps=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"+"'");ResultSetresultado=ps.executeQuery();while(resultado.next()){nomeTurmas.add(resultado.getString(1));}returnnomeTurmas;}catch(Exceptione1){JOptionPane.showMessageDialog(null,"A turma não esta cadastrada no banco!");e1.printStackTrace();throwe1;}}
E na classe Cadastro,onde eu preencho a combo tentei fazer o seguinte:
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
paty_trind
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
mas o select esta funcionando pelo menos no banco
Nicolas_Fernandes
Oi, paty!
Antes de mais nada, algumas considerações:
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;
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.
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
paty_trind
Oi EHS,
nunca usei ITERATOR :oops: :oops:
mas vou dar uma pesquisada sobre isso sim!
P
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!
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!