Atom Blog

Conexion de Java y Derby Utilizando Netbeans 7.1


La guia presentada a continuacion nos permitira crear una base de datos a traves de Derby utilizando Netbeans 7.1. Una vez creada la base de datos se continuara estableciendo una conexion para poder acceder a la misma.

Para poder conectarse a la base de datos es necesario realizar algunas operaciones de bases de datos.
El ejemplo consta de dos clases: una que nos permite crear la conexion con la base de datos y la otra nos permite acceder a la misma.

Accediendo a Base de Datos con JDBC


Empezaremos estableciendo algunos conceptos importantes.

Base de Datos.- Es una coleccion organizada de datos. Existen muchas estrategias para la organizacion de datos, para facilitar el acceso a la base de datos y su manipulacion.

DBMS.- Es un sistema de gestion de base de datos.
Ofrece mecanismos para almacenar, organizar, recuperar y modificar datos de varios usuarios.

Los programas en java se comunican con bases de datos y manipulan sus datos usando los JDBC API.

Bases de Datos Relacionales:
Sirven para almacenar datos, no tienen en cuenta su estructura fisica.
Almacenan los datos en tablas.
Las tablas se componen de filas y las filas de columnas.
Los programas en Java pueden especificar criterios de ordenacion cuando se solicitan datos en una base de datos.
Aveces es necesario seleccionar solo ciertos datos de la Base de Datos (SQL).

Ejemplo de Base de Datos:

SQL:
Operaciones que se pueden realizar con bases de datos:

SQL KeyWord.- Los ejemplos se referiran a la base de datos de ejemplo de arriba.

SELECT: Recupera datos de una o mas tablas.
FROM: Hace referencia a las tablas involucradas en la consulta, requiere de todos los SELECT.

SELECT * FROM nombreTabla (* Indica que todas las columnas de la tablas son recuperadas).

Ejemplo:
SELECT Id, Nombre FROM Estudiantes


WHERE: Criterio de seleccion que determina las filas a ser recuperadas, borradas o actualizadas.

SELECT columna1, columna2,.... FROM nombreTabla WHERE criterio

Ejemplo:
SELECT Nombre, Apellido, Calificacion
FROM Estudiantes
WHERE Calificacion > '15'

En WHERE se pueden utilizar las operaciones tales como: <, >, <=, >=, =, <> and LIKE(%).

Ejemplo:
SELECT  Nombre, Apellido 
FROM Estudiantes 
WHERE apellido LIKE 'A%' //Hace referencia a los apellidos que empiecen con la letra 'A'.

LIKE '_a%'  >> Criterio de que la segunda letra sea la 'a'.
LIKE '%s' >> Criterio de que la ultima letra sea la 's'.

GROUP BY: Criterio de agrupacion de filas, opcional en consultas SELECT.

ORDER BY: Criterio para ordenar filas, opcional en consultas SELECT. Sirve para agrupar ascendente o descendentemente.

SELECT Columna1, Columna2,..... FROM nombreTabla ORDER BY Columna ASC/DESC

Ejemplo:
SELECT Nombre, Apellido
FROM Estudiantes
ORDER BY Apellido ASC

INNER JOIN: Combina filas de varias tablas. Sirve para fusionar datos de varias tablas.

SELECT Columna1, Columna2,... FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Columna = Tabla2.Columna.

INSERT: Inserta filas en una tabla especifica.

INSERT INTO nombreTabla (Columna1, Columna2,......) VALUES (Value1, Value2,....)

Ejemplo:
INSERT INTO Estudiantes (Nombre, Apellido)
VALUES ('Emily', 'Cardenas')

UPDATE: Actualiza filas en una tabla especifica.

UPDATE nombreTabla SET Columna1 = Value1, Columna2 = Value2 WHERE Criterio

Ejemplo:
UPDATE Estudiantes
SET Nombre = 'Maria'
WHERE Id = '1'

DELETE: Elimina filas de una tabla especifica.

DELETE FROM nombreTabla WHERE Criterio

Ejemplo:
DELETE FROM Estudiantes WHERE Apellido = 'Loayza' AND Nombre = Carla









Cliente con Sockets en Java

A continuacion se explicara como elaborar un cliente son Sockets.
Para establecer la conexion se necesitaran 4 pasos.

Paso 1
Creamos el objeto Socket para conectarse al servidor.

Socket conexion = new Socket(ipServidor, numPuerto);

ipServidor>> ip del servidor.
numPuerto>> puerto con el que se va a conectar con el servidor.

Si la conexion es exitosa esta instruccion devuelve un objeto Socket.

Paso 2
El cliente utiliza los metodos getInputStream y getOutputStream de la clase Socket para hacer referencia a los objetos OutputStream e InputStream de Socket.

Paso 3
Procesamiento: El cliente y el servidor se comunican a traves de los objetos InputStream y OutputStream.

Paso 4
El cliente cierra la conexion cuando se completa la transmision.



Servidor con Sockets en Java


A continuación se explicara como elebarorar un Servidor a través de Sockets.
Para establecer la conexion se necesitan seguir 5 pasos.

Paso 1
Para empezar debemos crear un objeto ServerSocket:

ServerSocket servidor = new ServerSocket(numPuerto, numClientes);

numPuerto>>especifa el puerto TCP disponible.
numClientes>>especifica el numero maximo de clientes que se pueden conectar.

El numero de puerto es utilizado por los clientes para localizar al servidor.
El constructor establece el puerto en donde el servidor espera las conexiones de los clientes.

Paso 2
Para administrar las conexiones del cliente es necesario un objeto Socket.
El Servidor escucha indefinidamente esperando a que un cliente trate de conectarse.
Para escuchar la conexion de un cliente se debe llamar al metodo:

Socket conexion  = servidor.accept();

Devuelve un objeto Socket al establecer la conexion con el cliente.
El objeto Socket permite al servidor interactuar con el cliente, estas interacciones ocurren por otro puerto, no por el establecido en el paso 1; lo que permite al servidor aceptar otra conexion del cliente con subprocesamiento multiple.

Paso 3
Establecer los objetos OutputStream e InputStream que permite al servidor comunicarse con el cliente.
El servidor envia informacion al cliente mediante un objeto OutputStream y recibe informacion mediante InputStream.

Los objetos flujo pueden utilizarse para enviar o recibir bytes individuales o secuencias de bytes mediante los metodos write de OutputStream y read de InputStream.
Se puede enviar o recibir valores de tipo primitivo u objetos Serializables.

ObjectInputStream input = new ObjectInputStream(conexion.getInputStream);
ObjectOutputStream output = new ObjectOutputStream(conexion.getOutputStream);  

Cualquier cosa que escriba el servidor en el objeto ObjectOutputStream se enviara mediante el objeto OutputStream y estara disponible en el objeto InputStream del cliente y viceversa.

Paso 4
Procesamiento: El servidor y el cliente se comunican mediante los objetos OutputStream e InputStream.

Paso 5
Al completarse la transmision, el servidor cierra la conexion invocando al metodo close en los flujos.

output.close()
input.close();
conexion.close();




Como Crear Archivo Log en Java

Mostraremos un ejemplo simple de como crear un archivo log (tipo de registro o historial) de los sucesos que ocurren en el programa, se guardan con la fecha y hora del evento.

Primero necesitaremos importar el paquete Calendar, que se encargar de darnos la fecha y la hora.

import java.util.Calendar;

public class archivoLog () {
     FileWriter archivo //nuestro archivo log

     public void crearLog(String Operacion) {

        //Pregunta el archivo existe, caso contrario crea uno con el nombre log.txt
        if (new File("log.txt").exists()==false){archivo=new FileWriter(new File("log.txt"),false);}
             archivo = new FileWriter(new File("log.txt"), true);
             Calendar fechaActual = Calendar.getInstance(); //Para poder utilizar el paquete calendar    
             //Empieza a escribir en el archivo
             archivo.write((String.valueOf(fechaActual.get(Calendar.DAY_OF_MONTH))
                  +"/"+String.valueOf(fechaActual.get(Calendar.MONTH)+1)
                  +"/"+String.valueOf(fechaActual.get(Calendar.YEAR))
                  +";"+String.valueOf(fechaActual.get(Calendar.HOUR_OF_DAY))
                  +":"+String.valueOf(fechaActual.get(Calendar.MINUTE))
                  +":"+String.valueOf(fechaActual.get(Calendar.SECOND)))+";"+operacion+"\r\n");
             archivo.close(); //Se cierra el archivo
     }//Fin del metodo crearLog
   
     //Como ejemplo ponemos el caso que se este agregando nombres de personas a un vector
     //y queremos guardar en el Log cada vez que ocurre el evento, seria así:

     public void agregarPersona() {
          //Codigo .....
          this.crearLog("Nueva Persona guardada"); //Guarda en el Log el evento realizado
     }

     public static main() {
          archivoLog archivo = new ArchivoLog(); //Instancia de la clase para utilizar sus metodos.
          archivo.agregarPersona(); //Se llama al método agregarPersona
     }//Fin del main

}//Fin de la clase