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
public List <Casa> listarTabela() {
Connection conexao = DBConnection.openConnection();
PreparedStatement sql;
ResultSet rs;
List <Casa> casas = new ArrayList<>();
try {
sql= conexao.prepareStatement("SELECT * FROM casa");
rs = sql.executeQuery();
while(rs.next()) {
Casa casa = new Casa();
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 (SQLException e) {
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
import java.util.ArrayList;
import java.util.List;
Além disso, ao declarar a tua lista, faça assim
List<Casa> casas = new ArrayList<>(); // Operador diamante <> só pode ser usado no java 7 ou superior, ok?
eu declarei desta forma mas por algum motivo o qual desconheço oque esta entre <> some quando posto o código aqui
Faz assim, coloca o código, seleciona ele todo, depois clica no botão </> que tem acima do editor
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
public void listarTabela() {
Ou você insere, antes do último fechamento de chaves, o seguinte código
return casas;
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
já verifiquei e fiz algumas alterações, a única duvida é se o resultado será o mesmo
public ArrayList<Casa> listarTabela() {
Connection conexao = DBConnection.openConnection();
PreparedStatement sql;
ResultSet rs;
ArrayList<Casa> casas = new ArrayList<>();
try {
sql= conexao.prepareStatement("SELECT * FROM casa");
rs = sql.executeQuery();
while(rs.next()) {
Casa casa = new Casa();
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 (SQLException e) {
JOptionPane.showMessageDialog(null,"deu merda");
}finally {
DBConnection.closeConnection(conexao);
}
return casas;
}
Como assim, resultado será o mesmo?
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
public void listarTabelas() {
DefaultTableModel modelo = (DefaultTableModel) tbListarCasas.getModel();
CasaCrud casa = new CasaCrud();
for (Casa c: casa.listarTabela()) {
modelo.addRow(new Object[] {
c.getId(),
c.getEndereco(),
c.getNumero(),
c.getAluguel(),
});
}
}
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
consegui arrumar fiz este metodo e chamei ele o evento do botão listar
public void removerTabelas(){
DefaultTableModel modelo = (DefaultTableModel) tbListarCasas.getModel();
for(int i=0; i < modelo.getRowCount(); i++ ) {
modelo.setRowCount(i);
}
}