package com.trifulcas.DAO; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; // En esta clase vamos a implementar la lógica del CRUD // Desde aquí accederemos a la base de datos public class CountryDAO { // Tenemos una variable para almacenar la conexión private Connection con; PreparedStatement st; ResultSet rs; public CountryDAO() { this("sakila"); } public CountryDAO(String bd) { try { // Nos conectamos en el constructor, la variable con estará disponible // para todas las funciones de la clase DAO Class.forName("com.mysql.cj.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + bd, "root", ""); } catch (Exception ex) { System.out.println(ex.getMessage()); } } public void close() { try { con.close(); st.close(); rs.close(); } catch (SQLException e) { e.printStackTrace(); } } // cRud // Obtengo un pais por el ID public Country getCountry(int id) { try { // Lo hago igual que hasta ahora, SQL, STATEMENT, RESULTSET String sql = "select * from country where country_id=?"; st = con.prepareStatement(sql); st.setInt(1, id); rs = st.executeQuery(); // Si hay resultado construyo un país con los datos que me devuelve la consulta if (rs.next()) { return new Country(rs.getInt("country_id"), rs.getString("country")); } } catch (Exception ex) { System.out.println(ex.getMessage()); } return null; } // cRud // Obtengo todos los paises que tengan un texto public List<Country> getCountries(String texto) { try { List<Country> paises = new ArrayList<>(); // Lo hago igual que hasta ahora, SQL, STATEMENT, RESULTSET String sql = "select * from country where country like ?"; st = con.prepareStatement(sql); st.setString(1, "%"+texto+"%"); rs = st.executeQuery(); // Si hay resultado construyo un país con los datos que me devuelve la consulta while (rs.next()) { paises.add(new Country(rs.getInt("country_id"), rs.getString("country"))); } return paises; } catch (Exception ex) { System.out.println(ex.getMessage()); } return null; } // cRud // Obtengo todos los paises public List<Country> getCountries() { try { List<Country> paises = new ArrayList<>(); // Lo hago igual que hasta ahora, SQL, STATEMENT, RESULTSET String sql = "select * from country"; st = con.prepareStatement(sql); rs = st.executeQuery(); // Si hay resultado construyo un país con los datos que me devuelve la consulta while (rs.next()) { paises.add(new Country(rs.getInt("country_id"), rs.getString("country"))); } return paises; } catch (Exception ex) { System.out.println(ex.getMessage()); } return null; } // Crud // Para añadir hago lo mismo, le paso un pais public int addCountry(Country pais) { try { return addCountry(pais.getCountry()); } catch (Exception ex) { System.out.println(ex.getMessage()); } return 0; } // Crud public int addCountry(String pais) { try { // Creo el sql String sql = "insert into country(country) values (?)"; st = con.prepareStatement(sql); // Añado el parámetro st.setString(1, pais); // Ejecuto return st.executeUpdate(); } catch (Exception ex) { System.out.println(ex.getMessage()); } return 0; } // crUd // Para modificar public int updateCountry(Country pais) { try { String sql = "update country set country=? where country_id=?"; st = con.prepareStatement(sql); // Añado el parámetro st.setString(1, pais.getCountry()); st.setInt(2, pais.getCountry_id()); // Ejeceuto return st.executeUpdate(); } catch (Exception ex) { System.out.println(ex.getMessage()); } return 0; } // Cread un método deleteCountry al que le pasamos un id y nos borra el país con // ese id // cruD public int deleteCountry(int id) { try { String sql = "delete from country where country_id=?"; st = con.prepareStatement(sql); // Añado el parámetro st.setInt(1, id); // Ejecuto return st.executeUpdate(); } catch (Exception ex) { System.out.println(ex.getMessage()); } return 0; } // cruD public int deleteCountry(Country pais) { try { return deleteCountry(pais.getCountry_id()); } catch (Exception ex) { System.out.println(ex.getMessage()); } return 0; } }
package com.trifulcas.DAO; import java.util.List; public class Test { public static void main(String[] args) { // Usar la capa de DAO para crear un país llamado 'Utopía' CountryDAO countryDAO=new CountryDAO(); // Lo añado usando el método por cadena countryDAO.addCountry("Utopía"); // Lo añado usando un objeto de tipo Country Country utopia=new Country(0,"Utopía"); countryDAO.addCountry(utopia); // Usar la capa de DAO para modificar el nombre // del país de id 27 a 'República Dominicana' // Recupero el país Country repdom=countryDAO.getCountry(27); // Le cambio el nombre repdom.setCountry("República Dominicana"); // Actualizo countryDAO.updateCountry(repdom); // Creo el país repdom=new Country(27,"República Dominicana"); // Actualizo countryDAO.updateCountry(repdom); if (countryDAO.deleteCountry(12)==0) { System.out.println("No se ha podido eliminar"); }; List<Country> paises=countryDAO.getCountries("pa"); System.out.println(paises); } }