[RESOLVIDO] Como usar list corretamente Para banco de dados
10 respostasResolvido
A
Alexandre_Santos2
estou tentando retornar uma tabela que esta em um banco de dados usando List e arraylist mas erro persiste na hora de declara meu objeto do tipo List estou usando o ecllipse vou mostra o código e explicar melhor
publicList<Casa>listarTabela(){Connectionconexao=DBConnection.openConnection();PreparedStatementsql;ResultSetrs;List<Casa>casas=newArrayList<>();try{sql=conexao.prepareStatement("SELECT * FROM casa");rs=sql.executeQuery();while(rs.next()){Casacasa=newCasa();casa.setId(rs.getInt("id"));casa.setEndereco(rs.getString("endereco"));casa.setNumero(rs.getInt("numero"));casa.setAluguel(rs.getFloat("aluguel"));casas.add(casa);}JOptionPane.showMessageDialog(null,"listado com sucesso");}catch(SQLExceptione){JOptionPane.showMessageDialog(null,"deu merda");}finally{DBConnection.closeConnection(conexao);}}
os erros estão nas seguintes linhas
public List <Casa> listarTabela();
e
List <Casa> casas = new ArrayList<>();
o eclipse diz que não posso ultilizar a Clase Casa como parametro
ela é a classe onde ficam os Getters e setters dos meus atributos e ela está em outro pacote
Antes de mais nada, certifique-se que os imports estão corretos
importjava.util.ArrayList;importjava.util.List;
Além disso, ao declarar a tua lista, faça assim
List<Casa>casas=newArrayList<>();// Operador diamante <> só pode ser usado no java 7 ou superior, ok?
A
Alexandre_Santos2
eu declarei desta forma mas por algum motivo o qual desconheço oque esta entre <> some quando posto o código aqui
darlan_machado
Faz assim, coloca o código, seleciona ele todo, depois clica no botão </> que tem acima do editor
darlan_machado
Todo método que tem a declaração de tipo de retorno, deve, obrigatoriamente, retornar:
Um objeto de uma classe do tipo definido
Um objeto de uma sub classe do tipo definido
null
Você não tem nenhum return em teu método.
Das duas uma, ou você muda isso
para isso
publicvoidlistarTabela(){
Ou você insere, antes do último fechamento de chaves, o seguinte código
returncasas;
A
Alexandre_Santos2
este é o erro que ela está retornando
type list is not generic it cannot be parameterized with arguments
lista de tipos não é genérica, não pode ser parametrizada com argumentos
darlan_machado
Já fez isso???
A
Alexandre_Santos2
já verifiquei e fiz algumas alterações, a única duvida é se o resultado será o mesmo
publicArrayList<Casa>listarTabela(){Connectionconexao=DBConnection.openConnection();PreparedStatementsql;ResultSetrs;ArrayList<Casa>casas=newArrayList<>();try{sql=conexao.prepareStatement("SELECT * FROM casa");rs=sql.executeQuery();while(rs.next()){Casacasa=newCasa();casa.setId(rs.getInt("id"));casa.setEndereco(rs.getString("endereco"));casa.setNumero(rs.getInt("numero"));casa.setAluguel(rs.getFloat("aluguel"));casas.add(casa);}JOptionPane.showMessageDialog(null,"listado com sucesso");}catch(SQLExceptione){JOptionPane.showMessageDialog(null,"deu merda");}finally{DBConnection.closeConnection(conexao);}returncasas;}
darlan_machado
Como assim, resultado será o mesmo?
A
Alexandre_Santos2
desculpa a demora em responder o mesmo resultado seria listar o dados do banco de dados da mesma forma que ultilizando List ao inves do ArrayList, mas funcionou da mesma forma que eu queria, porém agora estou com uma pequena dúvida este metodo aqui eu ultilizo para mostrar em uma Jtable os dados vindos do banco de dados
e eu estou com um problema toda vez que eu clico no atualizar ele não sobrepôes(Atualiza) oque está na Jtable mas repete em baixo novamente a mesma coisa eu gostaria que ao invés disso atualizar a mesma ou seja apagar o que foi mostrado a primeira vez mostra uma nova tipo um refresh
A
Solucao aceita
Alexandre_Santos2
consegui arrumar fiz este metodo e chamei ele o evento do botão listar
publicvoidremoverTabelas(){
DefaultTableModelmodelo=(DefaultTableModel)tbListarCasas.getModel();for(inti=0; i < modelo.getRowCount(); i++ ) {modelo.setRowCount(i);}
}