Bom dia a todos. Podem me ajudar a entender este código por favor?
A conexão. Entendido.
public class ConnectionFactory {
public static Connection getConnection(){
Connection cnn = null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
cnn = DriverManager.getConnection("jdbc:mysql://localhost/crud", "root", "root");
} catch (Exception e) {
e.printStackTrace();
}
return cnn;
}
}
Classe que irá ser a base da tabela no banco de dados.Entendi.
public class Cliente { private String nome; private Integer idade;
//Getters e Setters
}
Insira alguns dados no banco:
Insert into Cliente values (‘Cristiano’, 22);
Insert into Cliente values (‘Fabio’, 15);
Insert into Cliente values (‘Joao’, 135);
Insert into Cliente values (‘Pedro’, 11);
Insert into Cliente values (‘Maria’, 53);
Agora vamos criar nossa classe que ira fazer o select e armazenar na ArrayList
public class ClienteCrud {
public List<cliente> clientes = new ArrayList<cliente>();
public void listar(){
ResultSet rs = null;
Connection cnn = ConnectionFactory.getConnection();
try {
PreparedStatement sql = cnn.prepareStatement("select * from cliente");
rs = sql.executeQuery();
while(rs.next()){
Cliente cliente = new Cliente();
cliente.setNome(rs.getString("nome"));
cliente.setIdade(rs.getInt("idade"));
clientes.add(cliente);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Classe que faz tudo acontecer. Aqui está minha dúvida:
public class ClienteView {
public static void main(String[] args) {
ClienteCrud cc = new ClienteCrud();
cc.listar();
System.out.println("--------\nSem Classificação \n--------");
for (Cliente c : cc.clientes) { //de onde vem **clientes** ? É o List da classe ClienteCrud ?
System.out.println(c.getNome());
System.out.println(c.getIdade());
}
}
}
Entendi tudo, menos a variável clientes dentro do foreach. Se ClienteView consegue acessá-la em ClienteCrud, como isso é feito? Não deveria ser static? Ou não é isso? Agradeço desde já. Nathalie.