JDBC
Procedimiento y Resultados:
Modelo entidad relación: “tienda”
1. Acceso a BD desde una aplicación de consola
Aplicacion1.java
package proyecto.dao;
import java.sql.* ;
public class Aplicacion1 {
public static voidmain(String[] args) {
try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/tienda", "root", "");
Statement stmt = con.createStatement();
String idUsuario = "esaavedra";
ResultSet rs = stmt.executeQuery("select id_usuario,clave,nombres,paterno,materno,correo,direccion,telefono,estado from usuario where id_usuario=' " + idUsuario + " ' ");
if(rs.next()) {
System.out.println("Nombres: " + rs.getString(3));
System.out.println("Paterno: " + rs.getString("paterno"));
System.out.println("Correo: " + rs.getString("correo"));
}
rs.close();
stmt.close();
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2. Acceso a BD desde una aplicación de consola usando DAO
Usuario.java
package proyecto.modelo;
public class Usuario {
privateString idUsuario;
privateString clave;
privateString nombres;
privateString paterno;
privateString materno;
privateString correo;
privateString direccion;
privateString telefono;
privateString estado;
/* CREAR LOS MÉTODOS GET Y SET PARA CADA ATRIBUTO */
}
UsuarioDAO.java
package proyecto.dao;
import java.sql.*;
public class UsuarioDAO {
public Usuario obtenerPorIdUsuario(String idUsuario){
Usuario vo = new Usuario();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/tienda", "root", "");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select id_usuario,clave,nombres,paterno,materno,correo,direccion,telefono,estado from usuario where id_usuario='"+
idUsuario + "'");
if(rs.next()) {
vo.setIdUsuario(rs.getString("id_usuario"));
vo.setClave(rs.getString("clave"));
vo.setNombres(rs.getString("nombres"));
vo.setPaterno(rs.getString("paterno"));
vo.setMaterno(rs.getString("materno"));
vo.setCorreo(rs.getString("correo"));
vo.setDireccion(rs.getString("direccion"));
vo.setTelefono(rs.getString("telefono"));
vo.setEstado(rs.getString("estado"));
}
rs.close();
stmt.close();
con.close();
} catch(ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return vo;
}
}
Aplicacion2.java
package proyecto.dao;
public classAplicacion2 {
public static void main(String[] args) {
UsuarioDAO dao = new UsuarioDAO();
Usuario u = dao.obtenerPorIdUsuario("esaavedra");
System.out.println(u.getNombres());
System.out.println(u.getPaterno());
System.out.println(u.getMaterno());
}
}
Creando una clase conexión y los métodos del DAO:
· Crear la clase ConexionBD
package proyecto.dao;
import java.sql.*;
public final class ConexionBD {
public static Connection obtenerConexion() throws SQLException {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
con = DriverManager.getConnection("jdbc:mysql://localhost/tienda", "root", "");
return con;
}
}
· En la clase UsuarioDAO, implementar los siguientes métodos:
public Collection<Usuario> buscarPorNombre(String nombre) {
String query = "select id_usuario,clave,nombres,paterno,materno,correo,direccion,telefono,estado from usuario where nombres like '%"+nombre +"%'";
Collection<Usuario> c = new ArrayList<Usuario>();
try {
Connection con = ConexionBD.obtenerConexion();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next()) {
Usuario vo = new Usuario();
vo.setIdUsuario(rs.getString("id_usuario"));
vo.setClave(rs.getString("clave"));
vo.setNombres(rs.getString("nombres"));
vo.setPaterno(rs.getString("paterno"));
vo.setMaterno(rs.getString("materno"));
vo.setCorreo(rs.getString("correo"));
vo.setDireccion(rs.getString("direccion"));
vo.setTelefono(rs.getString("telefono"));
vo.setEstado(rs.getString("estado"));
c.add(vo);
}
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return c;
}
public Usuario insertar(Usuario vo) {
String query = "INSERT INTO usuario (id_usuario,clave,nombres,paterno,materno,correo,direccion, telefono,estado) "
+ "VALUES (?,?,?,?,?,?,?,?,?)";
System.err.println(query);
Connection con = null;
PreparedStatement stmt = null;
try {
con = ConexionBD.obtenerConexion();
stmt = con.prepareStatement(query);
stmt.setString(1, vo.getIdUsuario());
stmt.setString(2, vo.getClave());
stmt.setString(3, vo.getNombres());
stmt.setString(4, vo.getPaterno());
stmt.setString(5, vo.getMaterno());
stmt.setString(6, vo.getCorreo());
stmt.setString(7, vo.getDireccion());
stmt.setString(8, vo.getTelefono());
stmt.setString(9, vo.getEstado());
int i = stmt.executeUpdate();
if (i != 1) {
throw new SQLException("No se pudo insertar");
}
stmt.close();
con.close();
} catch (SQLException e) {
System.err.println(e.getMessage());
}
return vo;
}
public Usuario actualizar(Usuario vo) {
String query = "UPDATE usuario SET clave=?, nombres=?, paterno=?, materno=?, correo=?, direccion=?, telefono=?, estado=? WHERE id_usuario=?";
try {
Connection con = ConexionBD.obtenerConexion();
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, vo.getClave());
stmt.setString(2, vo.getNombres());
stmt.setString(3, vo.getPaterno());
stmt.setString(4, vo.getMaterno());
stmt.setString(5, vo.getCorreo());
stmt.setString(6, vo.getDireccion());
stmt.setString(7, vo.getTelefono());
stmt.setString(8, vo.getEstado());
stmt.setString(9, vo.getIdUsuario());
int i = stmt.executeUpdate();
if(i != 1){
throw new SQLException("No se pudo actualizar");
}
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return vo;
}
public void eliminar(String idUsuario) {
String query = "DELETE FROM usuario WHERE id_usuario=?";
try {
Connection con = ConexionBD.obtenerConexion();
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, idUsuario);
int i = stmt.executeUpdate();
if(i != 1){
throw new SQLException("No se pudo eliminar");
}
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public Collection<Usuario> listarTodos() {
Collection<Usuario> c = new ArrayList<Usuario>();
try {
Connection con = ConexionBD.obtenerConexion();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select id_usuario,clave,nombres,paterno,materno,correo,direccion,telefono,estado from usuario");
while (rs.next()) {
Usuario vo = new Usuario();
vo.setIdUsuario(rs.getString("id_usuario"));
vo.setClave(rs.getString("clave"));
vo.setNombres(rs.getString("nombres"));
vo.setPaterno(rs.getString("paterno"));
vo.setMaterno(rs.getString("materno"));
vo.setCorreo(rs.getString("correo"));
vo.setDireccion(rs.getString("direccion"));
vo.setTelefono(rs.getString("telefono"));
vo.setEstado(rs.getString("estado"));
c.add(vo);
}
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return c;
}
3. Acceso a BD desde una aplicación Web usando capas
Se rehusarán las clases Usuario y UsuarioDAO del ejercicio 2.
Estructura del proyecto
/src
|- / proyecto.dao
|-UsuarioDAO
|-ConexionBD
|- / proyecto.servlet
|-UsuarioBuscarServlet
|- /proyecto.modelo
|-Usuario
Agregar el método en UsuarioBuscarServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UsuarioDAO dao = new UsuarioDAO();
Collection c = dao.buscarPorNombre(request.getParameter("nombre"));
request.setAttribute("USUARIOS", c);
RequestDispatcher rd = request.getRequestDispatcher("/usuario_buscar.jsp");
rd.forward(request, response);
}
usuario_buscar.jsp
<%@page import="java.util.*, proyecto.modelo.Usuario" %>
<html>
<head>
<title>Usuario Buscar</title>
</head>
<body>
<form name="f1" action="UsuarioBuscarServlet" method="post">
Nombre: <input type="text" name="nombre"/>
<input type="submit" name="enviar"value="Buscar"/>
</form>
<table border="1">
<tr>
<th>Id</th><th>Nombre</th><th>Paterno</th><th>Email</th>
</tr>
<%
Collection<Usuario> c = (ArrayList<Usuario>)request.getAttribute("USUARIOS");
if(c != null) {
for(Usuario vo : c) {
out.println("<tr><td>"+vo.getIdUsuario()+"</td>");
out.println("<td>"+vo.getNombres()+"</td>");
out.println("<td>"+vo.getPaterno()+"</td>");
out.println("<td>"+vo.getCorreo()+"</td></tr>");
}
}
%>
</table>
</body>
</html>
No hay comentarios:
Publicar un comentario