Criadas as classes bean, podemos nos dirigir à criação das classes DAO. Para a construção dessas classes, é necessário ter um conhecimento prévio na linguagem SQL, uma vez que é através dela que a comunicação é feita com o banco de dados. Primeiramente, precisamos buscar uma conexão com o banco de dados. Isso é feito por meio do método getConnection(). A seguir, utilizamos o PreparedStatement, que é usado para consultas parametrizadas, formatando os valores – inserindo dados de forma mais segura.
Exemplo de um método para inserção de dados no banco de dados:
// O retorno é vazio, e recebe um objeto do tipo Membros
public void Insert(Membros m) throws SQLException, ClassNotFoundException{
Connection con = Conexao.getConnection(); // Busca uma conexão com o banco de dados
PreparedStatement stmt = null;
try{
// Inserindo o comando SQL a ser usado
stmt = con.prepareStatement("INSERT INTO membros VALUES (DEFAULT, ?)");
// O método setString, define que o valor passado será do tipo inteiro
stmt.setString(1, m.getNome());
// Método responsável por fazer a alteração no banco de dados
stmt.executeUpdate();
}catch(SQLException ex){ // Tratamento das exceções
System.out.println(ex);
} finally{ // Encerramento da conexão
Conexao.closeConnection(con, stmt);
}
}
Note que, os valores que são auto-incrementáveis, não são passados através do método get, como é o caso do ID no exemplo.
O método para alteração, bem como para remoção de dados é semelhante ao da inserção, diferindo apenas no comando SQL utilizado.
Agora, desenvolveremos um exemplo de busca de dados no banco de dados. Tendo em vista que, ao ser realizada uma busca (SELECT) em um banco de dados, recebemos como retorno vários itens/linhas. Assim, trataremos esses dados como uma lista de informações, ou seja, o retorno desse método deve ser uma lista.
Exemplo de um método para busca de dados:
// O retorno é uma lista
public List<Membros> Select () throws SQLException, ClassNotFoundException{
Connection con = Conexao.getConnection(); // Busca uma conexão com o banco de dados
PreparedStatement stmt = null;
ResultSet rs = null; // Objeto que armazena o resultado de uma busca em uma estrutura de dados que pode ser percorrida
// Instanciando uma nova lista para receber os valores do banco
List<Membros>membros = new ArrayList<>();
try{
// Inserindo o comando SQL a ser usado
stmt = con.prepareStatement("SELECT * FROM membros");
rs = stmt.executeQuery(); // Executa o comando SQL
/* Loop responsável pela busca dos dados no banco que o repetirá até que não
haja valores */
while(rs.next()){
Membros mem = new Membros();
mem.setId(rs.getInt("id"));
mem.setNome(rs.getString("nome"));
membros.add(mem); // Adiciona o objeto na lista
}
}catch(SQLException ex){ // Tratamento das exceções
Logger.getLogger(MembrosDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return membros; // Retorna a lista
}
Tendo as classes DAO e bean, resta apenas o desenvolvimento de uma interface com o usuário. Dessa forma, pode-se testar a conexão e suas interações com o banco de dados. Esse é um ponto de partida para as aplicações que precisem usar bancos de dados e é extremamente importante sabermos lidar com essa interação e, embora possa parecer complexo, uma vez que se entenda o funcionamento dos métodos necessários, vemos que não é tão complicado assim.
http://www.codeacademy.com/articles/what-is-crud
http://www.linhadecodigo.com.br/artigo/832/overview-de-javabeans.aspx
https://pt.stackoverflow.com/questions/113840/como-funciona-o-padr%C3%A3o-dao
https://www.guj.com.br/t/classe-dao/71523/3
https://www.guj.com.br/t/class-forname/96650/3
https://www.devmedia.com.br/classe-de-conexao-em-java-no-netbeans-driver-mysql/18804
https://www.guj.com.br/t/re-resultset-pra-q-isso-serve/31507
https://www.guj.com.br/t/o-que-e-preparedstatement-e-para-que-serve/86774/2
https://www.javatpoint.com/PreparedStatement-interface
https://www.devmedia.com.br/jdbc-tutorial/6638
https://docs.microsoft.com/pt-br/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15
https://www.mindprod.com/jgloss/jdbc.html