public Object[][] select(String table, String fields, String where) {
        //Permitira obtener la cantidada de registros de la consulta,
        //para poder determinar el array de objetos a devolver...
        int registros = 0;
        //Obtenemos los fields separados en los elementos de un array, por el split
        String colname[] = fields.split(",");

        //Implementacion para preveer el ingreso de campos personalizados, al SELECT
        //Ej: campo1 as Name,campo1 as Age,...
        for (int i = 0; i < colname.length; i++) {
            //Si contiene el " as ", quiere decir que tiene asignado al campo un
            //nombre personalizado para la consulta, y extraemos ese nombre...
            if (colname[i].toLowerCase().contains(" as ")) {
                colname[i] = colname[i].substring(colname[i].toLowerCase().indexOf(" as ") + 4, colname[i].length());
            }
        }

        //Consultas SQL
        String q = "SELECT " + fields + " FROM " + table;//Se encuentra la verdadera consulta
        String q2 = "SELECT count(*) as total FROM " + table;//Nos permite saber cuantos rows trae la consulta
        //Si la variable where no esta vacio, lo concadenamos a "q", para la consulta
        if (where != null) {
            q += " WHERE " + where;
            q2 += " WHERE " + where;
        }
        System.out.println("sql->q: " + q);
        //obtenemos la cantidad de registros existentes en la tabla
        try {
            PreparedStatement pstm = conn.prepareStatement(q2);
            System.out.println("sql->q2: " + q2);
            ResultSet res = pstm.executeQuery();
            res.next();
            registros = res.getInt("total");
            res.close();
        } catch (SQLException e) {
            System.out.println(e);
            System.out.println("...............................................................................");
            e.printStackTrace();
        }
        System.out.println("registros: " + registros);
        System.out.println("columnas: " + fields.split(",").length);

        if (registros > 0) {
            //Se crea una matriz con tantas filas y columnas que necesite
            Object[][] data = new String[registros][fields.split(",").length];
            //Realizamos la consulta sql y llenamos los datos en la matriz "Object"
            try {
                PreparedStatement pstm = conn.prepareStatement(q);
                ResultSet res = pstm.executeQuery();
                int i = 0;
                while (res.next()) {
                    for (int j = 0; j <= fields.split(",").length - 1; j++) {
                        data[i][j] = res.getString(colname[j].trim());
                    }
                    i++;
                }
                res.close();
            } catch (SQLException e) {
                System.err.println("Error en [Paquete: MODEL - NombreComponete: DATABASE.java(CLASS) - Funcion: Object[][] select()]...");
                System.err.println(e);
            }
            return data;
        }
        return null;
    }