miércoles, 18 de febrero de 2015

Ingeniría del software 3 - conexion a base de datos - springtools - primefaces

primero crear un proyecto web dinámico usando las librerías de primefaces.
importar las librerías de mysql y las de primefaces.

Crear un nuevo archivo xml para el manejo de la base de datos en el directorio meta-inf
 y llamarlo context y modificarlo con la siguiente informacion.

<?xml version="1.0" encoding="UTF-8"?>
<Context>
  <Resource auth="Container" description="BD Programador"
     name="jdbc/ReservasOnline" type="javax.sql.DataSource"

     password="jaindakund" driverClassName="com.mysql.jdbc.Driver"
     maxIdle="2" maxWait="5000" validationQuery="select 1"
     username="root" url="jdbc:mysql://localhost:3306/ReservasOnline" maxActive="4"  />
       <WatchedResource>WEB-INF/web.xml</WatchedResource>
  <WatchedResource>META-INF/context.xml</WatchedResource>

</Context>

Despues crear la clase InitListener

import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.sql.DataSource;
@WebListener
public class InitListener implements ServletContextListener {  public InitListener() { }
  public void contextInitialized(ServletContextEvent sce) {
    DataSource fuenteDatos = null;
    Context ctx;
    try {
      ServletContext sc = sce.getServletContext();
      ctx = new InitialContext();
      fuenteDatos = (DataSource) ctx.lookup("java:comp/env/jdbc/ReservasOnline");
      Connection cn = fuenteDatos.getConnection();
      sc.setAttribute("datasource", cn);
    } catch (NamingException e) {
      throw new RuntimeException(e.getMessage());
    } catch (SQLException e) {
      throw new RuntimeException(e.getMessage());
    }
  }
  public void contextDestroyed(ServletContextEvent sce) { }
}


Si quieres hacer una instruccion sql este es un ejemplo para ingresar un dato.

public Boolean ingresar(ActividadDTO actividad, Connection conection)throws SQLException {
try{
String p = "INSERT INTO actividades (`Codigo`, `nombre`) VALUES " + "('"+actividad.getCodigoActividad()+"' ,'"+actividad.getNombreActividad()+"')";
PreparedStatement instruccion = conection.prepareStatement(p);
instruccion.executeUpdate();
return true;
}
catch (Exception e){
return false
}
}

_______________________________ACTUALIZAR____________________________________


public Boolean Actualizar(ActividadDTO actividad, Connection conexion)throws SQLException {

try{
String p = "UPDATE `actividades` SET `nombre`='"+actividad.getNombreActividad()+"' WHERE `Codigo`='"+actividad.getCodigoActividad()+"'";
PreparedStatement instruccion = conexion.prepareStatement(p);
instruccion.executeUpdate();
return true;
}

catch (Exception e){
return false;

}


}

______________________________________LISTAR__________________


public List<ActividadDTO> consultarActividad(Connection conexion, ActividadDTO actividad) throws Exception {
List<ActividadDTO> listActividad = new ArrayList<ActividadDTO>();
PreparedStatement ps;
if (actividad.getNombreActividad()==""){
ps = conexion.prepareStatement("SELECT * FROM actividades");
}
else {
ps = conexion.prepareStatement("SELECT * FROM actividades where nombre like '%"+actividad.getNombreActividad()+"%'");
}

ResultSet rs = ps.executeQuery();
while (rs.next()){
ActividadDTO actividadDTO = new ActividadDTO();

actividadDTO.setCodigoActividad(rs.getString("codigo"));
actividadDTO.setNombreActividad(rs.getString("Nombre"));
listActividad.add(actividadDTO);
}

rs.close();
return listActividad;
}