domingo, 25 de septiembre de 2016

JAVA CON BASE DE DATOS


Escuela Profesional De Ingeniería De Sistemas Y Telemática
INTEGRANTES:
Marleni CHUQUIZUTA RAMOS
Yoseily ALTAMIRANO GUEVARA
DOCENTE: Marco Aurelio PORRO CHULLI

I.              JAVA CON BASE DE DATOS:




1.    Contenido
*      Definición:
JAVA:
Java es un lenguaje de programación de  propósito general, concurrente, orientado a objetos que se popularizó a partir del lanzamiento de su primera versión comercial de amplia difusión, la JDK 1.0 en 1996. Fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados. Actualmente es uno de los lenguajes más usados para la programación en todo el mundo.
BASE DE DATOS:
Se le llama base de datos a los bancos de información que contienen datos relativos a diversas temáticas y categorizados de distinta manera, pero que comparten entre sí algún tipo de vínculo o relación que busca ordenarlos y clasificarlos en conjunto.
Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido; una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos.
Existen programas denominados sistemas gestores de bases de datos, abreviado SGBD (del inglés database management system o DBMS), que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos DBMS, así como su utilización y administración, se estudian dentro del ámbito de la informática.
Las aplicaciones más usuales son para la gestión de empresas e instituciones públicas; También son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información experimental.

Aunque las bases de datos pueden contener muchos tipos de datos, algunos de ellos se encuentran mutuamente protegidos por las leyes de varios países. Por ejemplo en España, los datos personales se encuentran protegidos por la Ley Orgánica de Protección de Datos de Carácter Personal (LOPD), en México por la Ley Federal de Transparencia y Acceso a la Información Pública Gubernamental y en Argentina la Ley de Protección de Datos Personales.
JAVA CON BASE DE DATOS
Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos combinado con un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso
*      OBJETOS CONECTION, STATEMENT Y RESULTSET
OBJETO CONNECTION
Un objeto Connection se utiliza para representar enlaces de comunicación entre sistemas CICS( Customer Information Control System). Con el fin de direccionar el trabajo de un sistema CICS a otro, debe definirse un par de objetos Connection. Cada mitad del par Connection se asocia con un objeto SystemClone, que es el sistema CICS a partir del cual se define la conexión. Las dos conexiones de cada mitad deben estar relacionadas entre sí de modo que WLM de CICS pueda detectar que ambas partes de la relación están presentes y son correctas. Una relación se define a partir de la conexión de una parte del par con la otra parte. No es necesario codificar la relación inversa, ya que WLM de CICS la detecta. Con el fin de posibilitar el direccionamiento a través de un objeto Connection, ambas mitades de la conexión deben definirse como activas (en servicio). Es posible establecer el atributo InService para una mitad de la conexión en cero. En tal caso, el trabajo no se direcciona a la región porque el programa de utilidad WLM (workload management ) de CICS no ve que exista una vía de acceso de comunicación segura a la misma.
Las entradas creadas para los objetos Connection del archivo de configuración de WLM de CICS no reemplazan ni afectan a las Definiciones de comunicaciones de CICS. El programa de utilidad de WLM de CICS utiliza las entradas del objeto Connection para crear el modelo de objeto interno.
Atributos de los objetos Connection
Los objetos Connection tienen valores de atributo para describir el coste de las comunicaciones mediante el objeto Connection relativas al coste de utilización de otros objetos Connection en la configuración. Asimismo, dichos valores indican si el objeto Connection se encuentra en servicio o no.
 Los atributos y valores predeterminados de un objeto Connection.

Atributo
Valor predeterminado
Descripción
load
0,1
El factor de ponderación se aplica al objeto que utiliza esta conexión. El incremento de este número desviará el algoritmo WLM del sistema conectado.
inService
0
Se habilita un conmutador para especificar si este objeto Connection se encuentra actualmente habilitado (1) o no (0). Tenga en cuenta que ambos objetos Connection deben estar en servicio (inService) para posibilitar el direccionamiento entre ambos sistemas.

Relaciones de los objetos Connection
Los objetos Connection tienen una relación complementaria con los demás objetos Connection.
Contenido de los objetos Connection
Los objetos Connection no contienen objetos.

OBJETOS STATEMENT
El objeto Statement (sentencia) sirve para procesar una sentencia SQL estática y obtener los resultados producidos por ella. Solo puede haber un ResultSet abierto para cada objeto Statement en un momento dado. Todos los métodos statement que procesan una sentencia SQL cierran implícitamente el ResultSet actual de una sentencia si existe uno abierto.

OBJETOS RESULTSET
En la lista siguiente se resumen las propiedades del objeto ResultSet:
Nombre de propiedad
Descripción
Establece o devuelve el límite actual de longitud de datos obtenido de un campo de texto de varias líneas. El límite se aplica a los campos de serie cortos así como también a los campos de texto de varias líneas.
Establece o devuelve el límite inicial sobre el número de registros que se incluirá en el conjunto de resultados cuando se ejecuta una consulta.
Devuelve el recuento de registros (número de filas) del conjunto de resultados.

Crear sentencias
Los objetos Statement se crean a partir de objetos Connection con el método createStatement. Por ejemplo, suponiendo que ya exista un objeto Connection denominado conn, la siguiente línea de código crea un objeto Statement para pasar sentencias SQL a la base de datos:
Statement stmt = conn.createStatement();
Especificar características de ResultSet
Las características de los ResultSets están asociadas con la sentencia que finalmente los crea. El método Connection.createStatement permite especificar estas características de ResultSet. A continuación se ofrecen algunos ejemplos de llamadas válidas al método createStatement:
Ejemplo: método createStatement
// El siguiente código es nuevo en JDBC 2.0
 
Statement stmt2 = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATEABLE);
 
// El siguiente código es nuevo en JDBC 3.0
 
Statement stmt3 = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSOR_OVER_COMMIT);
Para obtener más información acerca de estas características, consulte la sección ResultSets.
Procesar sentencias
El proceso de sentencias SQL con un objeto Statement se realiza mediante los métodos executeQuery(), executeUpdate() y execute().
Devolver resultados desde consultas SQL
Si debe procesarse una sentencia de consulta SQL que devuelva un objeto ResultSet, debe utilizarse el método executeQuery(). Puede consultar el programa de ejemplo que utiliza el método executeQuery de un objeto Statement para obtener un ResultSet.
Nota: si una sentencia SQL que se procesa con el método executeQuery no devuelve un ResultSet, se lanza una SQLException.
Devolver cuentas de actualización para sentencias SQL
Si se sabe que el código SQL es una sentencia de lenguaje de definición de datos (DDL) o una sentencia de lenguaje de manipulación de datos (DML) que devuelve una cuenta de actualización, debe utilizarse el método executeUpdate(). El programa StatementExample utiliza el método executeUpdate de un objeto Statement.
Procesar sentencias SQL en las que el valor de retorno esperado es desconocido
Si no se sabe cuál es el tipo de sentencia SQL, debe utilizarse el método execute. Una vez que se ha procesado este método, el controlador JDBC puede indicar a la aplicación qué tipos de resultados ha generado la sentencia SQL mediante las llamadas de API. El método execute devuelve true si el resultado es un ResultSet como mínimo, y false si el valor de retorno es una cuenta de actualización. Con esta información, las aplicaciones pueden utilizar los métodos de sentencia getUpdateCount o getResultSet para recuperar el valor de retorno del proceso de la sentencia SQL. El programa StatementExecute utiliza el método execute en un objeto Statement. Este programa espera que se pase un parámetro que sea una sentencia SQL. Sin mirar el texto de la sentencia SQL que el usuario proporciona, el programa procesa la sentencia y determina la información relativa a lo que se ha procesado.
Nota: la llamada al método getUpdateCount cuando el resultado es un ResultSet devuelve -1. La llamada al método getResultSet cuando el resultado es una cuenta de actualización devuelve nulo.
El método cancel
Los métodos del controlador JDBC nativo están sincronizados para evitar que dos hebras que se ejecutan en el mismo objeto provoquen daños en el mismo. Una excepción a esta norma la representa el método cancel. Una hebra puede utilizar el método cancel para detener una sentencia SQL de larga ejecución en otra hebra que opera sobre el mismo objeto. El controlador JDBC nativo no puede obligar a la hebra a detenerse; solo puede solicitarle que detenga la tarea que estaba realizando. Por esta razón, una sentencia cancelada tarda tiempo en detenerse. El método cancel puede utilizarse para detener consultas SQL incontroladas en el sistema.

*      Ejemplo básico de Java  con Base de Datos MySQL:
Una vez instalado MySQL, descargado el driver para java de MySQL y con una base de datos y una tabla creada en MySQL, vamos a hacer un pequeño programa en java que nos permita conectarnos a la base de datos MySQL y consultar la tabla que hemos creado.
Instalar el Driver
En nuestro programa java, todos los import que necesitamos para manejar la base de datos están en java.sql.*. Puesto que casi todas los métodos relativos a base de datos pueden lanzar la excepción SQLException, meteremos todo nuestro programa en un try-catch.
Además, necesitamos la clase org.gjt.mm.mysql.Driver que viene con el driver de MySQL. Por ello, en nuestro CLASSPATH o incluido en nuestro proyecto con nuestro IDE favorito, debemos incluir el jar que contiene el driver MySQL (mysql-connector-java-3.1.7-bin.jar) o la versión más moderna y compatible con la versión de nuestro servidor de MySQL.
Lo primero que tenemos que hacer es asegurarnos que el Driver se inicializa y se registra, para ello:
try
{
   Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e)
{
   e.printStackTrace();
}

Establecer la conexión con la base de datos
Debemos tener el servidor de MySQL arrancado. Si hemos instalado y dejado esa opción como estaba, cada vez que encendamos el ordenador, se arrancará el servidor deMySQL, por lo que no tenemos que preocuparnos por ello.
El servidor de MySQL abre por defecto el puerto 3306 para aceptar conexiones de posibles clientes, de programas que quieran conectarse y acceder a la base de datos. Nuestro programa java, si quiere consultar la tabla de base de datos que hemos creado, deberá conectarse a este servidor.
Para establecer la conexion, la clase DriverManager tiene métodos getConnection(). Usaremos uno de ellos.

// Establecemos la conexión con la base de datos.
Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/prueba","root", "la_clave");
El primer parámetro del método getConnection() es un String que contiene la url de la base de datos:
•          jdb:mysql porque estamos utilizando un driver jdbc para MySQL, que es el que nos hemos bajado.
•          localhost porque el servidor de base de datos, en mi caso, está en el mismo ordenador en el que voy a correr el prorama java. Aquí puede ponerse una IP o un nombre de máquina que esté en la red.
•          prueba es el nombre de la base de datos que he creado dentro de mysql. Se debe poner la base de datos dentro del servidor de MySQL a la que se quiere uno conectar. Es el nombre que pusimos cuando desde SQL hicimos create database prueba;
Los otros dos parámetros son dos String. Corresponden al nombre de usuario y password para acceder a la base de datos. Al instalar MySQL se crea el usuario root y se pide la password para él. Como no hemos creado otros usuarios, usaremos este mismo.
Si todo va bien, en conexion tendremos nuestra conexión a la base de datos.
Esta conexión es en realidad un socket entre java y la base de datos, aunque para nosotros es transparente. Lo que sí es importante, es saber que si varios hilos comparten esta conexión, deben usarla sincronizadamente. Si no se hace así, los mensajes que van por el socket se pueden entremezclar y los hilos pueden leer cachos de mensaje destinados al otro hilo. Otra opción es que cada hilo cree su propia conexión. Finalmente, la mejor opción de todas si nuestra aplicación va a tener varios hilos intentando acceder a la base de datos, es usar un Pool de conexiones.
Realizar una consulta
Para realizar cualquier acción sobre la base de datos (consulta, insertar nuevos registros, modificar los existentes o borrar), necesitamos una clase Statement. Para obtenerla, se le pide dicha clase a la conexión. La forma de hacerlo, para una consulta, es la siguiente:
// Preparamos la consulta
Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");
La parte de createStatement() no tiene ningú secreto, salvo que puede lanzar una excepción que hay que capturar.
El Statement obtenido tiene un método executeQuery(). Este método sirve para realizar una consulta a base de datos.
•          El parámetro que se pasa en un String en el que está la consulta en lenguaje SQL. No hace falta terminarlo con punto y coma. En nuestro caso "select * from persona". siendo persona el nombre que hemos puesto a la tabla en la base de datos.
•          El resultado nos lo devuelve el método como un ResultSet. Este ResultSet no es más que una clase java similar a una lista en la que está el resultado de la consulta. Cada elemento de la lista es uno de los registros de la base de datos. En realidad, ResulSet no contiene todos los datos, sino que los va consiguiendo de la base de datos según se van pidiendo. Por ello, el método executeQuery() puede tardar poco, pero el recorrer los elementos del ResultSet no es tan rápido. De esta forma se evita que una consulta que dé muchos resultados tarde mucho tiempo y llene la memoria del programa java.
Leer los resultados
El ResultSet contiene dentro los registros leidos de la base de datos. Inicialmente, tal cual nos lo devuelve el Statement.executeQuery(), tiene internamente un "puntero" apuntando justo delante del primer registro. El método next() del ResultSet hace que dicho puntero avance al siguiente registro, en este caso, al primero. Si lo consigue, el método next() devuelve true. Si no lo consigue (no hay siguiente registro que leer), devuelve false.
Por tanto, una forma de ir leyendo los registros en meternos en un while. 
// Recorremos el resultado, mientras haya registros para leer, y escribimos el resultado en pantalla.
while (rs.next())
{
    System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getDate(3));
}
Una vez que el "puntero" está apuntando a un registro, los métodos getInt(), getString(), getDate(), etc nos van devolviendo los valores de los campos de dicho registro. Podemos pasar a estos métodos un índice (que comienza en 1) para indicar qué columna de la tabla de base de datos deseamos. También podemos usar un String con el nombre de la columna (tal cual está en la tabla de base de datos).
Es responsabilidad nuestra saber qué tipo de dato hay en cada columna, aunque si nos equivocamos y RecordSet es capaz de hacer la conversión, la hará por nosotros. Por ejemplo, en cualquiera de los campos anteriores podemos pedir un getString() y nos devolveran los números como String y la fecha como String.
También podemos usar getObject(), y el RecordSet nos devolverá el Object más adecuado para el tipo de campo que pedimos.
Cerrar la conexión
Una vez que terminamos de usar la conexión, se debería cerrar, o bien terminar el programa, con lo que se cierra automáticamente.
// Cerramos la conexion a la base de datos.
conexion.close();
 RESUMEN:
I.              JAVA CON BASE DE DATOS:

Definición:
JAVA CON BASE DE DATOS
Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos combinado con un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso
OBJETOS CONECTION, STATEMENT Y RESULTSET
OBJETO CONNECTION
Un objeto Connection se utiliza para representar enlaces de comunicación entre sistemas CICS( Customer Information Control System). Con el fin de direccionar el trabajo de un sistema CICS a otro, debe definirse un par de objetos Connection. Cada mitad del par Connection se asocia con un objeto SystemClone, que es el sistema CICS a partir del cual se define la conexión
OBJETOS STATEMENT
El objeto Statement (sentencia) sirve para procesar una sentencia SQL estática y obtener los resultados producidos por ella.
 RESULTSET
Las características de los ResultSets están asociadas con la sentencia que finalmente los crea. El método Connection.createStatement permite especificar estas características de ResultSet.

SUMMARY:
   I. JAVA WITH DATABASE:

Definition:
               DATABASE WITH JAVA
Java is a programming language generally concurrent purpose, object oriented combined with a set of data belonging to the same context and systematically stored for later use
OBJECTS CONECTION, STATEMENT AND RESULTSET
OBJECT CONNECTION
A Connection object is used to represent communication links between CICS systems (Customer Information Control System). In order to direct the work of a CICS to another system, you must define a pair of Connection objects. Each half of the couple Connection is associated with a SystemClone object, which is the CICS system from which the connection is defined
OBJECTS STATEMENT
The Statement object (judgment) is used to process a static SQL statement and obtaining the results produced by it.
 RESULTSET
The characteristics of the ResultSets are associated with the sentence that finally created. The Connection.createStatement method allows you to specify these features ResultSet.

RECOMENDACIONES:
Si una base de datos es demasiado grande, se debe hacer un rediseño de base de datos centralizada, para que esta sea una base de datos distribuida ya que se pueden almacenar los datos en localidades donde son utilizados con mayor frecuencia, de tal manera que la mayor parte de las operaciones sean sólo locales lo cual reduce el tráfico en la red.
CONCLUSIONES:
Java con base de datos es muy importante ya que con la combinación del programa java con la base de datos se puede almacenar datos que se requiere de mucho cuidado
APRECIACION DEL EQUIPO:
Nosotras como equipo, dirigimos nuestra apreciación respecto a toda la investigación que realizamos respecto al tema “Java con Base de Datos”, Podemos decir que, Java es uno de los lenguajes de programación más utilizado actualmente. Además de ser un lenguaje de programación muy bueno para hacer conexiones con diferentes tipos de Base de Datos, Donde se afirma que  esas Bases de Datos al final servirán para almacenar diferente tipo de  información de las empresas que las requieran; ya sea empresas públicas, privadas, institucionales, etc.

GLOSARIO DE TERMINOS:
ü  Parámetros: datos que se consideran como imprescindibles y orientativos para lograr evaluar o valorar una determinada situación.
ü  Objeto: entidad existente en la memoria del ordenador que tiene unas propiedades (atributos o datos sobre sí mismo almacenados por el objeto) y unas operaciones disponibles específicas (métodos).
 LINKOGRAFIA: