UCV-ATE: CONGRESO DE INGENIERÍA 2017

UCV-ATE: CONGRESO DE INGENIERÍA 2017
INTRODUCCIÓN
En esta ocasión comparto mi presentación y la de Guino Henostroza de nuestras charlas en el Congreso de Ingeniería 2017 de la UCV-ATE.
BUENAS PRÁCTICAS EN EL DESARROLLO DE SOFTWARE
LO QUE TODO DESARROLLADOR
DEBERÍA SABER SOBRE LA CALIDAD DE SOFTWARE
CÓDIGO 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.



SQL SERVER: ÚLTIMO DÍA DEL MES

CÓMO OBTENER EL ÚLTIMO DÍA DEL MES EN SQL SERVER
En muchas ocasiones necesitamos conocer el último día de un determinado mes, en SQL Server desde la versión 2012 contamos con la función EOMONTH, pero en versiones anteriores debemos utilizar algún artificio.
SQL Server 2012 o superior
Desde la versión 2012 podemos utilizar la función EOMONTH.
Por ejemplo, la siguiente consulta permite averiguar el último día del mes de febrero para el año 2018 y 2020.
select EOMONTH ( '20180201' ) "2018", EOMONTH ( '20200201' ) "2020";
GO
El resultado es el siguiente:
2018            2020
--------------- ------------
2018-02-28      2020-02-29
El parámetro que recibe es una fecha del mes a evaluar.
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.
SQL Server 2008
Si tienes la versión 2008, debes crear tu propia función.
En esta oportunidad te presento una función que podrías probar para obtener el mismo resultado que la función EOMONTH.
CREATE FUNCTION [dbo].[fn_LastDayMonth] ( @paramDate DATETIME )
RETURNS DATETIME
BEGIN

  declare @resultDate  datetime
  declare @textDate    varchar(15)
  declare @vYear       int
  declare @vMont       int

  set @vYear = YEAR( @paramDate )
  set @vMont = MONTH( @paramDate )

  set @textDate = CAST(@vYear as varchar) + '/' + CAST(@vMont as varchar) + '/' + '1'

  set @resultDate = CONVERT( datetime, @textDate, 111 )

  set @resultDate = DATEADD( month, 1, @resultDate )
    
  set @resultDate = DATEADD( day, -1, @resultDate )

  RETURN @resultDate

END
GO
Para verificar la función, se ha realizado la misma prueba que en el caso anterior.
select 
  dbo.fn_LastDayMonth( '20180215' ) "2018", 
  dbo.fn_LastDayMonth( '20200215' ) "2020"
GO
A continuación tienes el resultado.
2018                      2020
-----------------------   -----------------------
2018-02-28 00:00:00.000   2020-02-29 00:00:00.000
CÓDIGO 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.



Práctica de Oracle SQL

Práctica de Oracle SQL
Contar con una guía de ejercicios es muy importante para practicar el lenguaje SQL en Oracle.
En este artículo tienes una serie de ejercicios que te permitirán desarrollar el lenguaje SQL con base de datos Oracle.
ESQUEMA SCOTT
Desarrolle las siguientes consultas utilizando el esquema SCOTT.
  1. Consultar los empleados del departamento de ventas que no tienen comisión.
  2. Consultar los empleados que ingresaron a laborar el primer trimestre del año 1981.
  3. Consultar los empleados cuyo ingreso (salario + comisión) supera los 2500.
  4. Consultar los empleados cuya penúltima letra de su nombre es E.
  5. Consultar los empleado que la segunda letra de su nombre puede ser A, O u I.
  6. Se necesita saber cuánto es la planilla por cada departamento.
  7. Se necesita saber quiénes son los empleados que tienen el más alto salario por departamento.
  8. Se necesita saber el salario máximo, mínimo y el salario promedio por departamento.
ESQUEMA HR
Desarrolle las siguientes consultas utilizando el esquema HR.
  1. Se necesita saber cuántos empleados existen por puesto de trabajo.
  2. Por departamento se necesita saber la cantidad de empleados, el salario mayor, el salario menor, el salario promedio y el importe total de la planilla.
  3. Por departamento se necesita saber quiénes son los empleados que tienen mayor tiempo en la empresa.
  4. Por cada país se necesita saber cuántas oficinas existen, la cantidad de empleados y el importe de la planilla.
  5. Por cada departamento se necesita saber quiénes son los empleados con mayor y menor salario.
  6. Se necesita saber que departamentos tienen una planilla superior a 50,000.
  7. Se necesita cuantos empleados han ingresado por año.
  8. Se necesita cuantos empleados han ingresado cada mes por cada año
  9. Del esquema HR se necesita saber cuántos empleados ganan comisión. La evaluación se realiza por departamento.
  10. Por departamento se necesita saber quiénes son los empleados que tienen mayor tiempo en la empresa.
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.



JDBC: Conexión con Bases de Datos

JDBC: Conexión con Bases de Datos
Muchas veces necesitamos con urgencia ejemplos de cómo realizar la conexión a fuentes de datos utilizando JDBC.
En este artículo te presento ejemplos que te pueden servir para esos casos que necesites conocer los parámetros de conexión con diferentes motores de bases de datos.
Los driver utilizados los puedes encontrar en la siguiente dirección:
https://github.com/gcoronelc/recursos/tree/master/jdbc_drivers
Conexión con MySQL
Para crear un nuevo usuario en MySQL puedes utilizar el siguiente script:
USE MYSQL;

GRANT ALL PRIVILEGES ON *.* TO 'eureka'@'%' 
IDENTIFIED BY 'admin' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'eureka'@'localhost' 
IDENTIFIED BY 'admin' WITH GRANT OPTION;

FLUSH PRIVILEGES;
Es importante que verifiques el puerto del servidor, esto lo realizamos en el archivo my.ini.
Para la conexión con JDBC debe utilizar los siguientes parámetros:
String driver = "com.mysql.jdbc.Driver";
String urlDB = "jdbc:mysql://localhost:3306/base-de-datos";
String user = "eureka";
String pass = "admin";
Debes utilizar el nombre de tú base de datos y su respectivo usuario y clave.

JAVA ORIENTADO A OBJETOS

Aprenderás a aplicar de manera correcta la PROGRAMACIÓN EN CAPAS en la creación de SISTEMAS EMPRESARIALES.
Aprenderás a aplicar la ORIENTACIÓN A OBJETOS en la creación de SISTEMAS EMPRESARIALES.
Aprenderás a aplicar PATRONES DE SOFTWARE y BUENAS PRACTICAS en la creación de SISTEMAS EMPRESARIALES.
Aprenderás a aplicar CRITERIOS DE USABILIDAD para mejorar la EXPERIENCIA DEL USUARIO en la construcción de INTERFACES DE USUARIO.
Conexión con SQL Server
Lo primero que debes hacer es habilitar la autenticación mixta del servidor.
El driver utilizado para esta prueba es sqljdbc42.jar, proporcionado por Microsoft.
Utilizando una instancia no nombrada
En este caso se está utilizando la instancia no nombrada o instancia por defecto de SQL Server.
El puerto por defecto es el 1433, pero te recomiendo que lo verifiques.
Los parámetros para la conexión son los siguientes:
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String urlDB = "jdbc:sqlserver://localhost:1433;databaseName=base-de-datos";
String user = "eureka";
String pass = "admin";
Debes usar tu base de datos y su respectivo usuario y clave.
Para el ejemplo he creado el inicio de sesión eureka, con su clave admin.
Utilizando una instancia nombrada
Para esta prueba he instalado SQL Server Express, el nombre de la instancia es SQLEXPRESS y debes verificar el puerto:
Los parámetros para la conexión son los siguientes:
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String urlDB = " jdbc:sqlserver://localhost\\SQLEXPRESS:50136;databaseName=base-de-datos";
String user = "eureka";
String pass = "admin";
Debes usar tu base de datos y su respectivo usuario y clave.
Para el ejemplo he creado el inicio de sesión eureka, con su clave admin.

PROGRAMACIÓN DE
BASES DE DATOS ORACLE CON JAVA JDBC

Aprenderás a aplicar correctamente el API JDBC de Java para programar bases de datos ORACLE.
Aprenderás los conceptos fundamentales de Oracle Database y a crear el esquema de trabajo que se utilizará durante el curso.
Estarás capacitado para aplicar el API JDBC de Java para ejecutar consultas sin parámetros, consultas con parámetros, gestión de transacciones y ejecutar procedimientos almacenados que retornan cursor y que gestionan transacciones.
Estarás capacitado para desarrollar una aplicación de escritorio empresarial que ayude a las empresas a gestionar sus procesos comerciales.
Conexión con Oracle
En este caso tengo instalado Oracle XE, y lo primero que debes realizar es verificar los servicios. Son dos servicios que debes verificar: OracleServiceXE y OracleXETNSListener.
Otro punto importante es consultar el SID, esto lo puedes realizar en el SQL*Plus:
SQL> select sys_context('userenv','instance_name') from dual;

SYS_CONTEXT('USERENV','INSTANCE_NAME')
----------------------------------------------------------------
xe
Otra consulta útil es la siguiente:
SQL> select name, value from v$system_parameter
  2  where name in ('instance_name','service_names','db_domain');

NAME                           VALUE
------------------------------ ------------------------------
db_domain                      gustavo.pe
instance_name                  xe
service_names                  XE.gustavo.pe
Con esta consulta puedes ver el nombre de la instancia, el nombre del servicio y el dominio.
Cuando instalas el OracleXE el SID y el nombre del servicio son iguales a XE, por esa razón es indistinto utilizar cualquiera de los dos.
En este ejemplo, he cambiado el nombre del dominio, y por lo tanto cambia el nombre del servicio.
El puerto por defecto es el 1521, esto lo determina el listener.
Puedes ejecutar el siguiente comando en la consola de Windows para consultar el puerto del listener:
lsnrctl status
Conexión utilizando el SID
A continuación tienes los parámetros de conexión utilizando el SID:
String driver = "oracle.jdbc.OracleDriver";
String urlDB = "jdbc:oracle:thin:@localhost:1521:<SID>";
String user = "eureka";
String pass = "admin";
Conexión utilizando el nombre del servicio
A continuación tienes los parámetros de conexión utilizando el nombre del servicio:
String driver = "oracle.jdbc.OracleDriver";
String urlDB = "jdbc:oracle:thin:@localhost:1521/<nombre-del-servicio>";
String user = "eureka";
String pass = "admin";
CÓDIGO 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.