miércoles, 28 de agosto de 2019

Operaciones BD Java

package pqConexion;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.sql.*;

/**
 *
 * @author Jorge Luis Perez Canto
 */
import pqSecurity.SecurityInterface;

public class Transactions {

    private Conexion conexionClass;
    private Connection conexion;
    private Statement sentencia;
    private String cadenaSQL;
    private SecurityInterface sI = new SecurityInterface();

    public Transactions() {
        this.conexionClass = new Conexion();
        sentencia = null;
    }

    public void conectar() {
        try {
            this.conexion = this.conexionClass.getConexion();
            if (sentencia != null) {
                sentencia.close();
                sentencia = null;
            }
        } catch (SQLException e) {
            System.out.println("SQLException: No se puede establecer conección con el servidor");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("Exception: No se puede establecer conección con el servidor");
            System.out.println(e.toString());
            e.printStackTrace();
        }
    }

    public void buscar(String tabla) {
        conectar();
        boolean r = false;
        Statement miStatement = null;
        ResultSet rs = null;
        try {
            System.out.println("Iniciando la busqueda de datos...");
            miStatement = this.conexionClass.getConexion().createStatement();
            String cadena = "SELECT * FROM " + tabla + "";
            System.out.println(cadena);
            rs = miStatement.executeQuery(cadena);

            if (rs != null) {
                while (rs.next()) {
                    System.out.println("ID: " + rs.getString("id") + " NOMBRE: " + rs.getString("nombre") + " APELLIDO: " + rs.getString("apellido") + "");
                }
            }

        } catch (SQLException e) {
            System.out.println("Ocurrio un error al intentar realizar la operación.");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } finally {
            cerrarResultSet(rs);
            cerrarPstmt(miStatement);
            closeConnection();
        }
    }

    public boolean buscar(String tabla, String id) {
        conectar();
        boolean r = false;
        Statement miStatement = null;
        ResultSet rs = null;
        try {
            System.out.println("Iniciando la busqueda de datos...");
            miStatement = this.conexionClass.getConexion().createStatement();
            String cadena = "SELECT * FROM " + tabla + " WHERE id='" + id + "'";
            System.out.println(cadena);
            rs = miStatement.executeQuery(cadena);

            if (rs != null) {
                if (rs.next()) {
                    r = true;
                    System.out.println("ID: " + rs.getString("id") + " NOMBRE: " + rs.getString("nombre") + " APELLIDO: " + rs.getString("apellido") + "");
                } else {
                    System.out.println("Los datos solicitados no existen en la tabla: " + tabla);
                    r = false;
                }
            }

        } catch (SQLException e) {
            System.out.println("Ocurrio un error al intentar realizar la operación.");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } finally {
            cerrarResultSet(rs);
            cerrarPstmt(miStatement);
            closeConnection();
        }
        return r;
    }

    // INSERTAR:
    public void insertarUsuario(String tabla, String id, String nombre, String apellido, String login, String password, String sessionid) {
        conectar();
        String estado = "";
        Statement miStatement = null;
        if (buscar(tabla, id) == false) {
            System.out.println("Procediendo el proceso de inserción...");
            try {
                System.out.println("Iniciando la inserción...");
                miStatement = this.conexionClass.getConexion().createStatement();
                String cadena = "INSERT INTO " + tabla + " (ID, NOMBRE, APELLIDO, LOGIN, SESSIONID, PASSWORD) VALUES ('" + id + "', '" + nombre + "', '" + apellido + "', '" + login + "', '" + sessionid + "', '" + password + "')";
                System.out.println(cadena);
                miStatement.executeUpdate(cadena);
                System.out.println("Datos insertados correctamente.");
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            } catch (Exception e) {
                System.out.println(e.getMessage());
            } finally {
                cerrarPstmt(miStatement);
                closeConnection();
            }
        } else {
            System.out.println("No se puede realizar la inserción porque ya existe un registro con el mismo ID");
        }
    }

    // ACTUALIZAR:
    public void modificarUsuario(String tabla, String id, String nombre, String apellido, String login, String password, String sessionid) {
        conectar();
        Statement miStatement = null;
        if (buscar(tabla, id)) {
            conectar();
            String cadena = "UPDATE " + tabla + " SET nombre='" + nombre + "', apellido='" + apellido + "', login='" + login + "', password='" + password + "', sessionid='" + sessionid + "' WHERE id='" + id + "'";
            System.out.println(cadena);
            try {
                System.out.println("Iniciando el proceso de actualización...");
                miStatement = this.conexionClass.getConexion().createStatement();
                miStatement.executeUpdate(cadena);
                System.out.println("Datos actualizados correctamente.");
            } catch (SQLException e) {
                System.out.println(e.getMessage());;
            } finally {
                cerrarPstmt(miStatement);
                closeConnection();
            }
        } else {
            System.out.println("No se puede realizar la actualización porque no existe ningún registro con ese número de ID.");
        }
    }

    // ELIMINAR:
    public String eliminarUsuario(String tabla, String id) {
        String estado = null;
        if (buscar(tabla, id)) {
            conectar();
            PreparedStatement pstmt = null;
            Statement miStatement = null;
            String cadena = "DELETE FROM " + tabla + " WHERE id='" + id + "'";
            try {
                System.out.println("Iniciando el proceso de eliminación...");
                miStatement = this.conexionClass.getConexion().createStatement();
                miStatement.executeUpdate(cadena);
                System.out.println("Datos eliminados exitosamente.");

            } catch (SQLException e) {
                estado = e.getMessage();
            } finally {
                cerrarPstmt(miStatement);
                closeConnection();
            }
        } else {
            System.out.println("No se puede realizar la eliminación porque no existe ningún registro con ese número de ID.");
        }
        return estado;
    }

    // OTROS MÉTODOS
    private void cerrarSentencia(Statement sentencia) {
        if (sentencia != null) {
            try {
                sentencia.close();
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
            sentencia = null;
        }
    }

    private void cerrarResultSet(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
    }

    private void cerrarPstmt(PreparedStatement pstmt) {
        if (pstmt != null) {
            try {
                pstmt.close();
                pstmt = null;
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
    }

    private void cerrarPstmt(Statement pstmt) {
        if (pstmt != null) {
            try {
                pstmt.close();
                pstmt = null;
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
    }

    public void cerrarConexion() {
        if (this.conexion != null) {
            try {
                //this.conexion.close();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    }

    protected void closeConnection() {
        try {
            if (this.conexion != null) {
                //this.conexion.close();
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public List<Map<String, Object>> obtenerArregloResultados(ResultSet rs) {
        List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
        ResultSetMetaData metaData = null;
        int columnCount = 0;
        try {
            metaData = rs.getMetaData();
            columnCount = metaData.getColumnCount();

            while (rs.next()) {
                Map<String, Object> columns = new LinkedHashMap<String, Object>();
                for (int i = 1; i <= columnCount; i++) {
                    columns.put(metaData.getColumnLabel(i), rs.getObject(i));
                }
                rows.add(columns);
            }
        } catch (SQLException e) {
            System.out.println("Error al intentar convertir un ResultSet a un Arreglo.");
            System.out.println(e.getMessage());
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return rows;
    }

    public List<Map<String, Object>> sesion(String tabla, String usuario, String password) {
        conectar();
        Statement miStatement = null;
        ResultSet result = null;
        List<Map<String, Object>> rs = null;
String cadena = "SELECT id, login, password FROM " + tabla + " WHERE login="+usuario+" AND password="+password+"";
        try {
            System.out.println("Iniciando la verificación de credenciales...");
            miStatement = this.conexionClass.getConexion().createStatement();
            System.out.println(cadena);
            result = miStatement.executeQuery(cadena);

            if (result != null) {
                rs = obtenerArregloResultados(result);
            }
            
            if (result != null) {
                if (result.next()) {
                    System.out.println("ID: " + result.getString("id") + " NOMBRE: " + result.getString("nombre") + " APELLIDO: " + result.getString("apellido") + "");
                } else {
                    System.out.println("Los datos solicitados no existen en la tabla: " + tabla);
                }
            }
            
        } catch (SQLException e) {
            System.out.println("Ocurrio un error al intentar comprobar credenciales.");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("Ocurrio un error al intentar comprobar credenciales.");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } finally {
            cerrarResultSet(result);
            cerrarPstmt(miStatement);
            closeConnection();
        }
        return rs;
    }

}

No hay comentarios.:

Publicar un comentario