SQL SERVER - COPIAS DE SEGURIDAD

SQL SERVER - COPIAS DE SEGURIDAD

INTRODUCCIÓN

En esta oportunidad les traigo una guía práctica para crear copias de seguridad y sus restauración utilizando diferentes situaciones.

GUIA

CÓDIGO FUENTE - EUREKA-WEB-ORACLE-JDBC

En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.

Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.



ORACLE SQL - CONSULTAS BASICAS

ORACLE SQL - CONSULTAS BASICAS - GUSTAVO CORONEL

Segunda lección del taller ORACLE SQL.

El tema a desarrollar en esta oportunidad es CONSULTAS BASICAS.

CÓDIGO FUENTE - EUREKA-WEB-ORACLE-JDBC

En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.

Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.



ORACLE SQL - INTRODUCCION

ORACLE SQL - INTRODUCCION

Primera lección del taller ORACLE SQL.

El taller se esta desarrollando con la versión 11g con Windows Server 2008.

CÓDIGO FUENTE - EUREKA-WEB-ORACLE-JDBC

En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.

Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.



CREACIÓN DEL ESQUEMA EUREKA

SQL SERVER ORACLE MYSQL JAVA JAVAEE JDBC MVC DAO PATRONES ANDROID SERVLETS JSP

EUREKABANK DATABASE

El esquema de datos EUREKA lo utilizo en mis cursos de Java y Oracle, por tal motivo recibo constantemente preguntas de como crearlo.

En esta guía encontrara paso a paso, como crear el esquema EUREKA, desde la instalación de Oracle 10g XE.

CÓDIGO FUENTE - EUREKA-WEB-ORACLE-JDBC

En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.

Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.



Java Web Lección 03: Patrón MVC

SQL SERVER ORACLE MYSQL JAVA JAVAEE JDBC MVC DAO PATRONES ANDROID SERVLETS JSP WEB JAVA WEB SERVLETS JSP MVC DAO EJB JDBC

INTRODUCCIÓN

El Patrón Model-View-Controller (MVC) es el mas utilizado en desarrollo web.

Este patrón permite estructurar una aplicación web en tres capas, donde cada una tiene una responsabilidad bien definida, haciendo mas fácil el desarrollo y mantenimiento de la aplicación.



DIAPOSITIVA



TALLER VIRTUAL DE SPRING FRAMEWORK

Acceso a Cursos Virtuales

Java Web Lección 03: Patrón MVC

SQL SERVER ORACLE MYSQL JAVA JAVAEE JDBC MVC DAO PATRONES ANDROID SERVLETS JSP WEB JAVA WEB SERVLETS JSP MVC DAO EJB JDBC

INTRODUCCIÓN

El Patrón Model-View-Controller (MVC) es el mas utilizado en desarrollo web.

Este patrón permite estructurar una aplicación web en tres capas, donde cada una tiene una responsabilidad bien definida, haciendo mas fácil el desarrollo y mantenimiento de la aplicación.



DIAPOSITIVA

CÓDIGO FUENTE - EUREKA-WEB-ORACLE-JDBC

En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.

Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.



Java Web Lección 03: Patrón MVC

SQL SERVER ORACLE MYSQL JAVA JAVAEE JDBC MVC DAO PATRONES ANDROID SERVLETS JSP WEB JAVA WEB SERVLETS JSP MVC DAO EJB JDBC

INTRODUCCIÓN

El Patrón Model-View-Controller (MVC) es el mas utilizado en desarrollo web.

Este patrón permite estructurar una aplicación web en tres capas, donde cada una tiene una responsabilidad bien definida, haciendo mas fácil el desarrollo y mantenimiento de la aplicación.



DIAPOSITIVA



TALLER VIRTUAL DE SPRING FRAMEWORK

Acceso a Cursos Virtuales

Java Web Lección 03: Patrón MVC

JAVA WEB - LECCIÓN 02: PATRON MVC

INTRODUCCIÓN

El Patrón Model-View-Controller (MVC) es el mas utilizado en desarrollo web.

Este patrón permite estructurar una aplicación web en tres capas, donde cada una tiene una responsabilidad bien definida, haciendo mas fácil el desarrollo y mantenimiento de la aplicación.



DIAPOSITIVA

CÓDIGO FUENTE - EUREKA-WEB-ORACLE-JDBC

En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.

Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.



Java Web Lección 02: JavaServer Page

JAVA WEB - LECCION 02: JAVASERVER PAGE

INTRODUCCIÓN

Java Server Page (JSP) es la tecnología que permite crear aplicaciones web con la plataforma Java EE de una manera sencilla.

Las páginas JSP permiten combinar HTML estático con HTML generado dinámicamente de una manera muy fácil, de esta manera estaríamos liberándonos de lo dificultoso que resulta hacerlo desde los servlets.



DIAPOSITIVA

CÓDIGO FUENTE

En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.

Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.



JAVA WEB - COMBOS ANIDADOS CON JQUERY Y JSON

JAVA WEB - COMBOS ANIDADOS CON JQUERY Y JSON
INTRODUCCIÓN
Cuando desarrollamos una aplicación web, una de las tareas mas frecuentes que tenemos que programar son los combos anidados, el ejemplo tipico es el del código de ubicación geografica (UBIGEO).
En este oportunidad desarrollare un ejemplo utilizando la base de datos EurekaBank y la plataforma Java.
La base de datos la puede descargar desde:
FUNDAMENTOS
JSON
JSon es una notación para representar arreglos y objetos JavaScript, se puede encontrar mas información en la siguiente URL:
GSON
Gson es una librería de Java que se puede utilizar para convertir objetos Java en su representación JSON. Podemos encontrar mas información en la siguiente dirección:
Por ejemplo, para convertir un Map con diferentes tipos de objetos las sentencias son las siguientes:
Map<String, Object> rpta = new HashMap<String, Object>();
EurekaModel model = new EurekaModel();
List<Map<String, ?>> lista = model.consultarCuentas("001");
rpta.put("rpta", "1");
rpta.put("lista", lista);
Gson gson = new Gson();
String texto = gson.toJson(rpta);
System.out.println(texto);
El resultado que se obtiene es el siguiente:
{"lista":[{"descripcion":"Cuenta: 00100001 | Moneda: 01 | Saldo: 6900.0","cuenta":"00100001"},{"descripcion":"Cuenta: 00100002 | Moneda: 02 | Saldo: 4500.0","cuenta":"00100002"}],"rpta":"1"}
EL CASO
DESCRIPCIÓN
De lo que se trata es de llenar el combo de cuentas en función al valor que el usuario seleccione en el combo de sucursales, tal como se muestra en la siguiente imagen:
SUCURSALES
Mediante un listener de sesión cargamos la lista de sucursales en sesión, la clase es la siguiente:
package pe.egcc.demo.servlets;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import pe.egcc.demo.model.EurekaModel;

/**
 *
 * @author Eric Gustavo Coronel Castillo
 * @blog gcoronelc.blogspot.com
 */
@WebListener()
public class SessionListener implements HttpSessionListener {

  @Override
  public void sessionCreated(HttpSessionEvent event) {
    try {
      EurekaModel model = new EurekaModel();
      event.getSession().setAttribute("sucursales", model.cosultarSucursales());
    } catch (Exception e) {
    }
  }

  @Override
  public void sessionDestroyed(HttpSessionEvent event) {
  }
}
Luego para llenar el combo utilizamos JSTL, el script es el siguiente:
<label>Sucursal</label><br/>
<select id="cboSucursal">
<option value="000">[Seleccione sucursal]</option>
<c:forEach items="${sessionScope.sucursales}" var="rec">
  <option value="${rec.codigo}">${rec}</option>
</c:forEach>
</select><br/>
<label>Cuenta</label><br/>
<select id="cboCuenta">
</select><br/>
CUENTAS
Para llenar el combo de cuentas se utiliza un servlet que retorna el resultado como un objeto JSon, se utiliza la librería GSON. La clase es la siguiente:
package pe.egcc.demo.servlets;

import com.google.gson.Gson;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import pe.egcc.demo.model.EurekaModel;

/**
 *
 * @author Eric Gustavo Coronel Castillo
 * @blog gcoronelc.blogspot.com
 */
@WebServlet(name = "DemoController", urlPatterns = {"/TraerCuentas"})
public class DemoController extends HttpServlet {

  private static final long serialVersionUID = 1L;

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    PrintWriter out = response.getWriter();
    Map<String, Object> rpta = new HashMap<String, Object>();
    try {
      // La siguiente línea es para poder apreciar el efecto AJAX.
      Thread.currentThread().sleep(2000);
      // Dato
      String sucursal = request.getParameter("sucursal");
      // Proceso
      EurekaModel model = new EurekaModel();
      List<Map<String, ?>> lista = model.consultarCuentas(sucursal);
      rpta.put("rpta", "1");
      rpta.put("lista", lista);
    } catch (Exception e) {
      rpta.put("rpta", "-1");
      rpta.put("mensaje", e.getMessage());
    }
    Gson gson = new Gson();
    out.print(gson.toJson(rpta));
    out.flush();
    out.close();
  }

}
Luego, para llenar el combo utilizamos JQuery, el script es el siguiente:
<script type="text/javascript" src="jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript">
$("#cboSucursal").change(function() {
  var cboCuenta = $("#cboCuenta");
  cboCuenta.empty();
  var sucursal = $("#cboSucursal").val();
  if (sucursal == '000') {
 return;
  }
  var data = "sucursal=" + sucursal;
  cboCuenta.append('<option value="">Cargando...</option>').val('');
  $.post("TraerCuentas", data, function(objJson) {
 cboCuenta.empty();
 if (objJson.rpta == -1) {
   alert(objJson.mensaje);
   return;
 }
 var lista = objJson.lista;
 if(lista.length > 0){
   cboCuenta.append("<option value='0'>[Seleccione cuenta]</option>");
 } else {
   cboCuenta.append("<option value='0'>[No hay cuentas]</option>");
 }
 for (var i = 0; i < lista.length; i++) {
   var item = "<option value='" + lista[i].cuenta + "'>" + lista[i].descripcion + "</option>";
   cboCuenta.append(item);
 }
  });
});
$("#cboCuenta").change(function() {
  var cuenta = $("#cboCuenta").val();
  if(cuenta=="0"){
 return;
  }
  alert("Cuenta: " + cuenta);
});
</script>
PROYECTO COMPLETO
Puede descargar el proyecto completo desde el siguiente enlace:
CÓDIGO FUENTE
En esta sección te presento un video que una aplicación CLIENTE-SERVIDOR desarrollada con Java y Oracle.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.



JAVA - JDBC - ORACLE - CURSOR

Java - JDBC - ORACLE - CURSOR
INTRODUCCIÓN
Cuando se programa con bases de datos Oracle, una de los problemas que debemos resolver es la lectura de un cursor que lo retorna un procedimiento como un parámetro de salida.
En este artículo veremos como resolver este problema utilizando Java - JDBC, especificamente, utilizaremos el objeto CallableStatement.
La base de datos a utilizar es EUREKA, que la puede descargar desde:
http://gcoronelc.blogspot.com/2011/08/base-de-datos-ejemplo.html
PROCEDIMIENTO ALMACENADO
CREACIÓN
Para ilustrar la demostración utilizaremos un procedimiento almacenado para consultar los movimientos de una cuenta:
create or replace procedure usp_egcc_movimientos
( p_cuenta IN cuenta.chr_cuencodigo%TYPE, 
  p_cursor OUT NOCOPY SYS_REFCURSOR )
as begin
  open p_cursor for 
    select 
      m.chr_cuencodigo cuenta,
      m.int_movinumero nromov,
      m.dtt_movifecha fecha,
      m.chr_tipocodigo tipo,
      t.vch_tipodescripcion descripcion,
      t.vch_tipoaccion accion,
      m.dec_moviimporte importe
    from tipomovimiento t
    join movimiento m 
    on t.chr_tipocodigo = m.chr_tipocodigo
    where m.chr_cuencodigo = p_cuenta;
end;
/
PRUEBA
Para probar el procedimiento almacenado utilizaremos el siguiente script:
declare
  v_cursor SYS_REFCURSOR;
  v_cuenta movimiento.chr_cuencodigo%TYPE;
  v_nromov movimiento.int_movinumero%TYPE;
  v_fecha movimiento.dtt_movifecha%TYPE;
  v_tipo tipomovimiento.chr_tipocodigo%TYPE;
  v_desc tipomovimiento.vch_tipodescripcion%TYPE;
  v_accion tipomovimiento.vch_tipoaccion%TYPE;
  v_importe movimiento.dec_moviimporte%TYPE;
begin
  usp_egcc_movimientos( '00100001', v_cursor );
  loop
    fetch v_cursor into v_cuenta, v_nromov, v_fecha, 
      v_tipo, v_desc, v_accion, v_importe;
    exit when v_cursor%NOTFOUND;
    dbms_output.put_line(v_cuenta || ' | ' || v_nromov
      || ' | ' || v_fecha || ' | ' || v_tipo || ' | ' || 
      v_desc || ' | ' || v_accion || ' | ' || v_importe);
  end loop;
  close v_cursor;
end;
/
No olvidar que debe habilitar la salida:
set serveroutput on
El resultado que se obtiene es similar a los siguiente:
00100001 | 1 | 06/01/08 | 001 | Apertura de Cuenta | INGRESO | 2800
00100001 | 7 | 15/03/08 | 003 | Deposito | INGRESO | 1000
00100001 | 4 | 14/02/08 | 003 | Deposito | INGRESO | 2000
00100001 | 2 | 15/01/08 | 003 | Deposito | INGRESO | 3200
00100001 | 6 | 03/03/08 | 004 | Retiro | SALIDA | 800
00100001 | 5 | 25/02/08 | 004 | Retiro | SALIDA | 500
00100001 | 3 | 20/01/08 | 004 | Retiro | SALIDA | 800
CODIFICACIÓN EN JAVA
FUNDAMENTOS
Se utilizará un objeto de tipo CallableStatement, que permite declarar un procedimiento almacenado y registrar parámetros de salida de tipo Cursor.
String sql = "{call usp_egcc_movimientos(?,?)}";
CallableStatement cstm = cn.prepareCall(sql);
cstm.setString(1, "00100001"); 
cstm.registerOutParameter(2, OracleTypes.CURSOR);
Después de ejecutar el procedimiento debemos obtener el cursor en un objeto de tipo ResultSet.
cstm.executeUpdate();
ResultSet rs = (ResultSet) cstm.getObject(2);
CLASE COMPLETA
A continuación tenemos la clase completa:
package pe.egcc.app;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import oracle.jdbc.OracleTypes;

/**
 *
 * @author Eric Gustavo Coronel Castillo
 * @blog gcoronelc.blogspot.com
 * @fecha 20/05/2014
 * @clase DemoCursor
 * @descripcion: Esta clase sirve para leer un cursor Oracle
 */
public class DemoCursor {

  public static void main(String[] args) {
    Connection cn = null;
    try {
      // Parámetros de conexión
      String driver = "oracle.jdbc.OracleDriver";
      String url = "jdbc:oracle:thin:@localhost:1521:XE";
      String user = "eureka";
      String pwd = "admin";
      // Conexión
      Class.forName(driver).newInstance();
      cn = DriverManager.getConnection(url, user, pwd);
      // Proceso
      String sql = "{call usp_egcc_movimientos(?,?)}";
      CallableStatement cstm = cn.prepareCall(sql);
      cstm.setString(1, "00100001"); 
      cstm.registerOutParameter(2, OracleTypes.CURSOR);
      cstm.executeUpdate();
      ResultSet rs = (ResultSet) cstm.getObject(2);
      while(rs.next()){
        String texto = rs.getString("cuenta");
        texto += " | " + rs.getString("nromov");
        texto += " | " + rs.getString("fecha");
        texto += " | " + rs.getString("tipo");
        texto += " | " + rs.getString("descripcion");
        texto += " | " + rs.getString("accion");
        texto += " | " + rs.getString("importe");
        System.out.println(texto);
      }
      rs.close();
      cstm.close();
    } catch (Exception e) {
      e.printStackTrace();
    } finally{
      try {
        cn.close();
      } catch (Exception e) {
      }
    }
  }
}
El resultado que se obtiene es el siguiente:
run:
00100001 | 1 | 2008-01-06 00:00:00.0 | 001 | Apertura de Cuenta | INGRESO | 2800
00100001 | 7 | 2008-03-15 00:00:00.0 | 003 | Deposito | INGRESO | 1000
00100001 | 4 | 2008-02-14 00:00:00.0 | 003 | Deposito | INGRESO | 2000
00100001 | 2 | 2008-01-15 00:00:00.0 | 003 | Deposito | INGRESO | 3200
00100001 | 6 | 2008-03-03 00:00:00.0 | 004 | Retiro | SALIDA | 800
00100001 | 5 | 2008-02-25 00:00:00.0 | 004 | Retiro | SALIDA | 500
00100001 | 3 | 2008-01-20 00:00:00.0 | 004 | Retiro | SALIDA | 800
BUILD SUCCESSFUL (total time: 1 second)
Espero que este artículo le sea útil.
CÓDIGO FUENTE: EUREKA-CS-ORACLE-JDBC
En esta sección te presento un video que una aplicación CLIENTE-SERVIDOR desarrollada con Java y Oracle.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.



Java OO - Lección 09
Excepciones

Java OO - Lección 09 - EXCEPCIONES
INTRODUCCIÓN
Uno de los problemas a los que tenemos que enfrentarnos cuando creamos software es el control de errores, que pueden ser de diferentes tipos y naturaleza.
Quizás los mas difíciles de tratar son los errores lógicos, mas conocidos como BUGS, ya que por su naturaleza puede llevarnos horas y hasta días en solucionarlos.
En esta oportunidad veremos como controlar los errores en tiempo de ejecución, para lo cual en Java tenemos las Excepciones y la estructura try-catch-finally.
DIAPOSITIVA
CÓDIGO FUENTE
En esta sección te presento un video de una aplicación CLIENTE-SERVIDOR.
Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.



Java POO - Lección 08 - Colecciones

Cliente-Servidor, DAO, Eclipse, GlassFish, Java, Java POO, JAVA SERVER FACES, Java Web, JEE, JFreeChart, Patrones, POO, Tomcat, Web, Colecciones
JAVA POO - LECCION 08 - COLECCIONES

Introducción

Las colecciones son un conjunto de interfaces, clases abstractas y clases concretas que nos permiten manejar cantidad de datos relacionados en forma de listas mediante la interfaz List y la clase ArrayList, también como pares de datos CLAVE -> VALOR mediante la interfaz Map y la clase HashMap.
Todas las clases que nos permiten manejas conjuntos de datos se agrupan en un marco de trabajo conocido como Java Colecction Framework (JCF), y entre sus características la que mas resalta es que soporte Generics, esto quiere decir que podemos crear por ejemplo lista genéricas de tipo Object o listas personalizadas, por ejemplo de tipo Producto, Cliente, Cuenta, etc.
Una de sus aplicación la tenemos en la capa DAO, por ejemplo, si estamos consultan los productos de una categoría, la capa DAO estaría retornando una lista con objetos de tipo Producto.
Todos los componentes de JCF se encuentran en el paquete java.util.

Dispositiva 1

Dispositiva 2

Dispositiva 3

Dispositiva 4

Dispositiva 5

Dispositiva 6

Dispositiva 7

Dispositiva 8

Dispositiva 9

Dispositiva 10

Dispositiva 11

Dispositiva 12

Dispositiva 13

Dispositiva 14

CODIGO FUENTE - EUREKA-WEB-MYSQL-SPRING

En esta sección te presento un video de una aplicación web desarrollada SPRING FRAMEWORK y MYSQL.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.