Soluciones DAO

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);
	}

}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos