Opa manu, desculpa a demora…vou te dar um exemplo de SELECT blz…vamos até o momento que mostra na tela…tendo o objeto populado já é grande coisa…pois ai você pode manipular do jeito que você quiser…
Vamos reaproveitar a classe de ConnectionFactory, e Cliente e o ClienteDao…
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class ContatoDao {
private Connection con;
/*Colocamos a conexão no construtor para que agente não precise instanciar a todo o momento*/
public ContatoDao() throws SQLException{
this.con = new ConnectionFactory().getConnection();
}
/*Esse é o método que está te tirando o sono*/
public List<Cliente> getLista() { /*Método que retorna uma lista de clientes*/
try {
List<Cliente> clientes = new ArrayList<Cliente>(); /*qAqui você cria uma lista de clientes do tipo Cliente*/
PreparedStatement stmt = this.con.prepareStatement("select * from cliente"); /*Prepara para executar uma ação no banco*/
ResultSet rs = stmt.executeQuery(); //Executa o select
while(rs.next()) { //Roda até chegar no final do select
Cliente cliente = new Cliente();/*Instancia um Cliente para popular o objeto*/
cliente.setNome(rs.getString("nome")); /*Olha o set aqui de novo, vamos lah, você está "Setando" dentro da variável nome da classe cliente, o rs vem do ResultSet, é ele que percorre o select executado, então ele irá percorrer a primeira coluna o qual é uma String, por isso o GetString ou seja, "Pegue uma String", e o que está entre as "" é o nome do campo no banco de dados. Fica mais ou menos assim "Pegue uma String no campo nome do banco de dados, e coloque o valor que você achar lá dentro da variável nome da classe cliente"*/
cliente.setIdade(rs.getInt("idade")); /*É o mesmo esquema do de cima*/
clientes.add(cliente); /*Aqui, depois que o ResultSet rodar a primeira vez, ou seja, depois que ele já ter populado o primeiro objeto, ele irá adicionar na lista*/
}
rs.close(); /*Fecha o ResultSet*/
stmt.close(); /*Fecha a conexao*/
return clientes; //Retorna todos os objetos populados
} catch (SQLException e) { //Erro no Select
throw new RuntimeException(e);
}
}
}
Beleza já temos a nossa lista populada, vamos mostrar ela na tela.
public class TestaCliente
public static void main (String args[]){
ClienteDao clienteDao = new ClienteDao();
/*Olha só uma coisa que eu percebi no seu código é que você está instanciando o Cliente também na classe de teste, se você fizer isso você irá apagar tudo que você populou, então neste caso nós não instanciamos ciente e sim clienteDao*/
List<Cliente> clientes = clienteDao.getLista(); /*Cria uma lista de cliente executando o método da classe clienteDao, então você pegou aquela lista e colocou em outra, assim você pode acessa-la em outras classes sem precisar instanciar e perder tudo que você fez*/
for (Cliente cliente : clientes){ /*Faz um forEach para rodar a lista nova de Clientes*/
System.out.println(cliente.toString()); /*Mostra o toString da classe cliente sem instanciar ela, pois você criou uma variável do tipo cliente no ForEach assim não recria o objeto*/
}/*não esquece de sobre escrever o método toString da classe Cliente*/
Então manu assim agente retornou do banco os dados que contem nele…espero ter ajudado…qualquer coisa posta a que eu tento te ajudar…se quiser tenta postar o código seu para agente analisar junto…abracos e boa sorte;…