jueves, 15 de septiembre de 2016

CONEXIÓN A BASE DE DATOS CON JAVA

“AÑO DE CANSOLIDACIÓN DEL MAR DE GRAU” 


(JAVA DATABASE CONNECTIVITY), CONECTIVIDAD DE BASES DE DATOS JAVA.

ESCUELA PROFESIONAL DE:

INGENIERÍA DE SISTEMA Y TELEMÁTICA
·         JAVA

DOCENTE: MARCO AURELIO PORRO CHULLI.

ASISGNATURA: DESARROLLO DE SOFTWARE

NOMBRE DEL GRUPO: “JAVA”

INTEGRANTES:
 PÉREZ SAUCEDO YORDIN ALBERTO
·         MALDONADO IDROGO BETZABETH YAMELI
CICLO: V

GRUPO: “B”

AÑO: 2016


                         BAGUA GRANDE-UTCUBAMBA





JDBC
1         1.    Contenido:
1.1.        Capa de Acceso de Datos, creación.
El API JDBC soporta dos modelos diferentes de acceso a bases de datos, modelos de dos y tres capas.
MODELO DE DOS CAPAS

Esto significa que el driver JDBC específico para conectarse con la base de datos, debe residir en el sistema local. La base de datos puede estar en cualquier otra máquina y se accede a ella mediante la red. Ésta es la configuración típica Cliente/Servidor: El programa cliente envía instrucciones SQL  a la base de datos, ésta los procesa y envía los resultados de vuelta a la aplicación.
MODELO DE TRES CAPAS
En este modelo de acceso a las bases de datos, las instrucciones son enviadas a una capa intermedia entre el cliente y el Servidor, que es la que se encarga de enviar las sentencias SQL a la base de datos y recoger el resultado desde la base de datos. En este caso el usuario no tiene contacto directo, ni a través de la red, con la máquina donde reside la base de datos.













Este modelo se basa en que la conexión entre la aplicación Java o el Applet que se ejecuta en el navegador, se conectan directamente a la Base de Datos.





1.2.        Configuración de conexión BD con NetBeans



Le asignamos un nombre al proyecto y damos click en “next” nuevamente. 











           Seleccionamos el servidor GlassFish Server 3.1 y damos click en “next”


















En la siguiente ventana solo damos clik en "finish"


      Abrimos del proyecto creado el archivo index.jsp en donde le cambiaremos en la etiqueta <title> por nuestro titulo, en este caso IFPWAFCAD pagina de inicio


  














         Al archivo index.jsp le agregamos el siguiente código. En donde se especifica el archivo response.jsp el cual se creara en el proyecto. 






















           Podemos correr el archivo que llevamos hasta ahora corriéndolo, dándole click derecho donde está el nombre del proyecto y después en “run”, donde se visualizara lo siguiente 





Ahora procedemos a crear el archivo response.jsp, para ello damos click derecho en el nombre del proyecto -> new -> JSP 



El archivo response.jsp se encontrara en el mismo directorio que el archivo index.jsp, como se muestra en la siguiente imagen.


Se abre el archivo response.jsp y se le cambia la etiqueta <title> por  IFPWAFCAD - {placeholder} y a la etiqueta <body> se le agrega el siguiente código:



Ahora visualizaremos la página en nuestro navegador, dando click derecho al archivo response.jsp y en “Run” y se vera de la siguiente forma:





           Creación de la hoja de estilo

         Para la creación de la hoja de estilo agregamos un nuevo archivo al proyecto. Click derecho en el nombre del proyecto -> new -> Cascada Style Sheet (si no se encuentra ahí, se sigue la siguiente forma:  Click derecho en el nombre del proyecto -> new -> other -> Web -> Casacading Style Sheet) le asignamos el nombre style. El archivo se creara en el mismo directorio que index.jsp y response.jsp 


A continuación se le agregan los estilos de la siguiente forma:



      Se procede a ligar la hoja de estilos style.css a las páginas index.jsp y response.jsp colocando la siguiente línea de código entre la etiqueta <head>
      <link rel="stylesheet" type="text/css" href="style.css">

         CONFIGURAR MySQL

         Para configurar el MySQL en Netbeans nos vamos a Services -> DataBases -> Drivers 


Damos click derecho a MySQL (Connector/J driver) -> Connect using
Y se abrirá la siguiente ventana:


Después se selecciona el connector previamente descargado (ANEXO 1.2) 
En el campo Host ingresamos localhost y en Port 3306, en Database mysql. En User Name root y tecleamos la clave en el campo Password. Damos click en Next.

Se visualizará lo siguiente: 



                     Ahora procedemos a conectar el servidor MySQL dando click derecho -> connect


Ahora expandimos el servidor MySQL y vemos las bases de datos disponibles


Ahora podemos crear bases de datos usando el editor SQL. Nuestra base de datos se llamara MiPrimeraBaseDatos  

En la ventana de servicios, se da click derecho en el servidor MySQL -> Create Database


Ahora expandimos la conexión  de nuestra Base de Datos, donde hay tres subcarpetas: Tables, Views y Procedures.

 1.3.        Definición de JDBC. Tipos. Aplicaciones
           JDBC es usado para enviar comandos SQL hacia una base de datos relacional, que puede ser Oracle, Infomix, SyBase, etc.
Qué hace JDBC?
           - Establece una conexión con una BD
           - Envía sentencias SQL
            -Procesa los resultados

Connection con = DriverManager.getConnection ( "jdbc:odbc:wombat", "login", "password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) { int x = rs.getInt("a"); String s = rs.getString("b"); float f = rs.getFloat("c"); }



JDBC es una API de bajo nivel para API´s de alto nivel
             Una integración de SQL hacia Java, es decir que las sentencias SQL se puedan mezclar con Java, por ejemplo, que una variable de Java pueda ser usada en una sentencia SQL para recibir o dar valores.
          Un mapeo directo de las tablas de la BD hacia las clases de Java, donde cala fila de la tabla se convierte en una instancia de la clase, y donde cada columna se corresponde a un atributo de esa instancia.
JDBC v/s ODBC y otras API´s
          ODBC no es apropiado para usar directamente con Java por que usa una interfaz en C.
          Una traducción literal de la API ODBC en C, no es deseable. Por ejemplo Java no tiene punteros y la ODBC hace gran uso de ellos.
        ODBC es muy difícil de aprender, hace una mezcla de acciones simples y avanzadas.
      Una API como JDBC es necesario para poder desarrollar una solución “puramente de Java”

APLICACIÓN
        En esta sección se presentarán una serie de aplicaciones para ejemplificar los conceptos vistos en el presente trabajo.
       La base de datos con la cual se va a trabajar se llama arg_musiteca y se encuentra en el servidor Aragorn (aragorn.elo.utfsm.cl). La base de datos se encuentra alojada en un servidor MySQL.
          Para poder usar el driver se debe configurar la variable de entorno CLASSPATH de la siguiente forma export CLASSPATH=$HOME/directorio/mysql-connector-java.jar

      TestConnection.java: Aplicación que permite comprobar si se puede establecer una conexión exitosa con la base de datos.

      Appl_01.java: Aplicación que permite visualizar las tablas     existentes dentro de la base de datos.

             Appl_02.java: Aplicación que visualiza los discos e intérpretes      dentro de la base de datos.

           Appl_03.java: Aplicación que permite crear una tabla con tres     campos en la base de datos.

            Appl_04.java: Aplicación que permite agregar nuevo registro a     la nueva tabla creada anteriormente con Appl_03.java

TIPO DE CONTROLADORES JDBC
Tipo 1
        Los controladores de tipo 1 son controladores "puente". Utilizan otra tecnología, como por ejemplo, ODBC (Open Database Connectivity), para comunicarse con la base de datos. Esto representa una ventaja, ya que existen controladores ODBC para muchas plataformas RDBMS (sistemas de gestión de bases de datos relacionales). Se emplea la interfaz Java nativa (JNI) para llamar a funciones ODBC desde el controlador JDBC.
         Un controlador de tipo 1 debe tener el controlador puente instalado y configurado para poder utilizar JDBC con él. Esto puede representar un grave inconveniente para una aplicación de producción. Los controladores de tipo 1 no pueden utilizarse en un applet, ya que los applets no pueden cargar código nativo.
Tipo 2
      Los controladores de tipo 2 utilizan una API nativa para comunicarse con un sistema de base de datos. Se utilizan métodos Java nativos para invocar las funciones de API que realizan operaciones de base de datos. Los controladores de tipo 2 son generalmente más rápidos que los controladores de tipo 1.
         Los controladores de tipo 2 necesitan tener instalado y configurado código binario nativo para funcionar. Un controlador de tipo 2 siempre utiliza JNI. Los controladores de tipo 2 no pueden utilizarse en un applet, ya que los applets no pueden cargar código nativo. Un controlador JDBC de tipo 2 puede requerir la instalación de algún software de red DBMS (sistema de gestión de bases de datos).
           El controlador JDBC de Developer Kit para Java es de tipo 2.
Tipo 3
         Estos controladores utilizan un protocolo de red y middleware para comunicarse con un servidor. A continuación, el servidor convierte el protocolo a llamadas de función DBMS específicas de DBMS.
          Los controladores de tipo 3 son la solución JDBC más flexible, ya que no requieren ningún código binario nativo en el cliente. Un controlador de tipo 3 no necesita ninguna instalación de cliente.
Tipo 4
          El controlador de tipo 4 utiliza Java para implementar un protocolo de red de proveedores de DBMS. Puesto que los protocolos son generalmente de propiedad, los proveedores DBMS son generalmente las únicas empresas que suministran un controlador JDBC de tipo 4.
        Los controladores de tipo 4 son todos ellos controladores Java. Esto significa que no existe ninguna instalación ni configuración de cliente. Sin embargo, un controlador de tipo 4 puede no ser adecuado para algunas aplicaciones si el protocolo subyacente no maneja adecuadamente cuestiones tales como la seguridad y la conectividad de red.

1.4.        Uso de JDBC en aplicaciones Java:
        JDBC (Java Database Connectivity) es un API de Java que nos permite conectarnos con bases de datos y realizar operaciones sobre ellas utilizando instrucciones SQL desde una aplicación Java. Con
        JDBC tenemos una interfaz para conectarnos con una base de datos sin tener que preocuparnos de si es una base de datos MySQl, Oracle, SQLServer o cualquier otro tipo de base de datos. El único cambio que habría que hacer para cambiar el tipo de base de datos de una aplicación sería cambiar el driver específico de la base de datos en cuestión.
           Para usar JDBC hay que seguir los siguientes pasos:

1.    Incluir el jar con el Driver de la base de datos: El primer paso es obtener el driver de la base de datos que vamos a utilizar, buscamos en google “MySQL jdbc driver”, “Oracle jdbc driver” o el que queramos y descargamos el jar y lo incluimos es nuestro proyecto. Para este ejemplo voy a usar MySQL.

2.    Cargar el driver: Ya tenemos el jar con el driver, pero hay que cargarlo para que se pueda hacer uso de el en nuestra aplicación. En nuestro caso como vamos a usar MySQL la instrucción es la siguiente y como puede lanzar una excepción pues se mete dentro de un try-catch.
     
3.   Establecer una conexión con la base de datos: El siguiente paso es establecer una conexión con la base de datos. Hay dos opciones para obtener una conexión la primera es crear una nueva conexión con la base de datos que será la que veremos en este ejemplo y la otra es obtener la conexión de un pool de conexiones creado previamente que es una opción más eficiente porque no hace falta estar abriendo y cerrando conexiones continuamente ya que simplemente se cogen las conexiones de pool cuando se necesitan y se dejan en el pool cuando ya no se necesitan para que puedan volver a usarse.

4.  Realizar una consulta: Una vez obtenida la conexión ya podemos hacer consultas a la base de datos. Hay tres métodos para ejecutar una consulta de tipo Statement que es una consulta normal, PreparedStatement con la que se puede crear una consulta que se precompila en la base de datos y como es de esperar se pueden establecer los distintos datos porque aunque la estructura de la consulta será la misma lo lógico es que los datos de la consulta sean distintos y finalmente están las CallableStatements que sirven para ejecutar procedimientos almacenados.
         Como se puede ver el primer paso es crear un statement sobre el que luego podemos hacer las consultas que queramos, una vez creado para hacer nuestra consulta tenemos los métodos execute (para hacer cualquier consulta, pero su valor de devolución es boolean y devuelve true si lo que devuelve es un resulset y falso en caso contrario), exeteQuery (para hacer select) y executeUpdate (para hacer insert, update y delate). Y finalmente si se ejecuta una query podemos obtener el resultado mediante ResultSet, para obtener los valores de las columnas resulset tiene un get para cada tipo de datos que se puede llamar pasándole como parámetro el nombre de la columna de base de datos o el número de la columna según se prefiera.

         Como se puede ver el código para hacer una consulta no es muy complicado pero es muy propenso a errores porque hay que estar creando cadenas de texto concatenadas con variables java y hay que recordar que si el dato es de tipo texto hay que anidar comillas y entre unas cosas y otras es fácil cometer algún error. Para facilitar el trabajo con bases de datos hay alternativas a trabajar directamente con JDBC como JPA o Hibernate, pero estamos hablando de JDBC…

     Si usamos PreparedStatement además de que son más eficientes nos facilitan la tarea de escribir las consultas SQL porque en lugar de tener que estar concatenando las distintas variables con el código SQL, lo que se hace es sustituir en este las variables por ? y posteriormente se introducen los datos concretos mediante setters. En el siguiente código puedes ver como se crean unas PreparedStatement.

5.    Cerrar la conexión: Después de hacer las consultas que se necesite se debe de cerrar la conexión para liberar los recursos, también se pueden cerrar el resulset y el statement de forma manual pero cerrando la conexión se cierran los otros dos porque están creados a partir de la conexión, del mismo modo al cerrar el statement también se liberan los recursos del resulset.

 1.5.        Ejemplos
          Ejemplos JDBC ( Lado Cliente ) 

Se asume que se tiene instalado una DBMS Oracle 8i (versión 8.1.6) y que se puede conectar usando el driver de JDBC.
Brevemente estos ejemplos muestran cómo conectarse a la Base de Datos y usar sentencias SQL simples como "select", "insert", "update" y "delete".

Algunos ejemplos simples:

driver_ver.java Despliega la versión del driver.
driver_check.java Chequea si corren los drivers correctamente.
tab_sel.java Select a una tabla.
tab_upd.java Modifica registros en una tabla.
tab_del.java Borra registros de una tabla.
tab_ins.java Inserta registros hacia una tabla.
tabprep_upd.java Como usar una sentencia de preparación con un "update". 


                            Otros ejemplos:

                            call_sp.java Llamado a un procedimiento de Oracle.
                            call_sf.java Llama a una función de Oracle.
                            excep_1.java Manejo de excepciones (1).
                            excep_2.java Manejo de excepciones (2).
                            meta_data1.java Meta-datos. Cómo manejar un "select *".
                            meta_data2.java Más métodos con meta-datos, cómo                                       obtener los nombres de los campos.
                            meta_data3.java Más métodos con meta-datos (*).
                            meta_data4.java Detalles sobre las palabras claves no                                       estándares de la BD.
                            meta_data5.java Cómo encontrar el largo máximo de un                                   nombre de un campo.
                            meta_data6.java Tipos de tablas permitidos.
                            tab_preupdtran.java Cómo setear una transacción.
                            tab_preupdrb.java Cómo ejecutar un "rollback"


2.    Resumen
          Definición de JDBC.
          JDBC es usado para enviar comandos SQL hacia una base de datos relacional, que puede ser Oracle, Infomix, SyBase, etc.
           ¿Qué hace JDBC?
             -        Establece una conexión con una BD
             -        Envía sentencias SQL
             -        Procesa los resultados
           JDBC es una API de bajo nivel para API´s de alto nivel
           Una integración de SQL hacia Java, es decir que las sentencias SQL se puedan mezclar con Java, por ejemplo, que una variable de Java pueda ser usada en una sentencia SQL para recibir o dar valores.

          JDBC v/s ODBC y otras API´s
          ODBC no es apropiado para usar directamente con Java por que usa una interfaz en C.
           Una traducción literal de la API ODBC en C, no es deseable. Por ejemplo Java no tiene punteros y la ODBC hace gran uso de ellos.
           ODBC es muy difícil de aprender, hace una mezcla de acciones simples y avanzadas.
           Una API como JDBC es necesario para poder desarrollar una solución “puramente de Java”

APLICACIÓN
           La base de datos con la cual se va a trabajar se llama arg_musiteca y se encuentra en el servidor Aragorn (aragorn.elo.utfsm.cl). La base de datos se encuentra alojada en un servidor MySQL.

TIPO DE CONTROLADORES JDBC
Tipo 1
           Los controladores de tipo 1 son controladores "puente". Utilizan otra tecnología, como por ejemplo, ODBC (Open Database Connectivity), para comunicarse con la base de datos.
Tipo 2
           Los controladores de tipo 2 utilizan una API nativa para comunicarse con un sistema de base de datos. Se utilizan métodos Java nativos para invocar las funciones de API que realizan operaciones de base de datos
 Tipo 3
           Estos controladores utilizan un protocolo de red y middleware para comunicarse con un servidor. A continuación, el servidor convierte el protocolo a llamadas de función DBMS específicas de DBMS.
           Los controladores de tipo 3 son la solución JDBC más flexible, ya que no requieren ningún código binario nativo en el clientede tipo 2 son generalmente más rápidos que los controladores de tipo 1.
Tipo 4
           El controlador de tipo 4 utiliza Java para implementar un protocolo de red de proveedores de DBMS. Puesto que los protocolos son generalmente de propiedad, los proveedores DBMS son generalmente las únicas empresas que suministran un controlador JDBC de tipo 4

3.    Summary
           Defining JDBC.
           JDBC is used to send commands to a SQL relational database, which can be Oracle, Informix, Sybase, etc.
           What makes JDBC?
§  Establishes a connection to a DB.
§  Send SQL statements.
§  Process the results
JDBC is a low-level API for high-level APIs
Integration of SQL to Java, meaning that SQL statements can be mixed with Java, for example, a Java variable can be used in an SQL statement to receive or give values.

JDBC v / s ODBC and other APIs
ODBC is not suitable for use directly by using a Java interface C.
A literal translation of the ODBC API in C, is not desirable. For example Java has no pointers, and ODBC makes great use of them.
ODBC is hard to learn, makes a mixture of simple and advanced actions.
An API like JDBC is needed to develop a solution "pure Java"

APPLICATION
The database which is going to work is called arg_musiteca and is on the server Aragorn (aragorn.elo.utfsm.cl). The database is hosted on a MySQL server.

DRIVER TYPE JDBC
Type 1
           Type 1 drivers are "bridge" drivers. They use other technology, such as ODBC (Open Database Connectivity), to communicate with the database.
Type 2
           Type 2 drivers use a native API to communicate with a database system. Java native methods are used to invoke the API functions that perform database operations
 Type 3
           These controllers use a network protocol and middleware to communicate with a server. Then, the server converts the protocol calls DBMS DBMS specific function.
           Type 3 drivers are the most flexible JDBC solution because they do not require any native binary code in type 2 clientede are generally faster than Type 1 drivers.
Type 4
           The type 4 driver uses Java to implement a network protocol DBMS providers. Since protocols are generally property, DBMS providers are generally the only companies that provide a JDBC type 4 driver

4.    Recomendaciones
  •             El diseño y desarrollo de las nuevas aplicaciones conduce a la minimización del ingreso de datos por parte del usuario; además el lenguaje de desarrollo que se utiliza está orientado a facilitar la ejecución en cualquier Sistema Operativo, ya que se ajusta a los estándares reconocidos, que permite la flexibilidad de los cambios.
  •            Para que exista un enlace remoto con la Base de Datos, la aplicación no debe de conectarse directamente a la Base de Datos, sino que mediante los drivers JDBC - ODBC.
  •          La cuenta de Sitio Web, facilita el desarrollo de nuevas aplicaciones; por lo que los códigos fuentes de él, deberían estar al alcance de los alumnos, para motivar el desarrollo de nuevas Aplicaciones Webs. Con este fin, se mantiene un patrón establecido, tal como mantener un solo tipo de fondo (background), para evitar que exista demasiadas diferencias en cada aplicación.

5.    Conclusiones
           En este capítulo se menciona las apreciaciones más importantes de esta investigación de manera general, así como referencias únicamente a la configuración y conexión de una base de datos. También mostramos algunos ejemplos para facilitar su trabajo.


6.    Apreciación del Equipo
                       JDBC es un texto diseñado para adiestrar en el desarrollo de                           aplicaciones escritas en lenguaje Java y accedan a base a bases de                 datos a través de JDBC 2.0, así como dar a conocer todos los                           aspectos sintácticos del API JDBC 2.0.
7.    Glosario de Términos
- API: La interfaz de programación de aplicaciones, abreviada como API (del inglés: Application Programming Interface), es el conjunto de subrutinas, funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
-APPLET: Un applet Java es un applet escrito en el lenguaje de programación Java. Losapplets de Java pueden ejecutarse en un navegador web utilizando la Java Virtual Machine (JVM), o en el AppletViewer de Sun.

- ODBC: Open DataBase Connectivity (ODBC) es un estándar de acceso a las bases de datos desarrollado por SQL Access Group (SAG) en 1992. El objetivo de ODBC es hacer posible el acceder a cualquier dato desde cualquier aplicación, sin importar qué sistema de gestión de bases de datos (DBMS) almacene los datos.

- RDBMS: Un RDBMS es un Sistema Gestor de Bases de Datos Relacionales. Se trata de software capaz de producir, manipular y gestionar bases de datos de tipo relacional.

- JNI: Java Native Interface (JNI) es un framework de programación que permite que un programa escrito en Java ejecutado en la máquina virtual java (JVM) pueda interactuar con programas escritos en otros lenguajes como C, C++ y ensamblador.

- MIDDLEWARE: Es un software de computadora que conecta componentes de software o aplicaciones para que puedan intercambiar datos entre éstas. Es utilizado a menudo para soportar aplicaciones distribuidas. Esto incluye servidores web, servidores de aplicaciones, sistemas de gestión de contenido y herramientas similares.


8.    Linkografía
https://webap.wikispaces.com/file/view/reporte_Tutorial.pdf



DIAPOSITIVAS: http://es.slideshare.net/YordinAlbertoPrezSau/jdbc-66102101

VIDEO: JDBC









































































2 comentarios:

  1. Presentacion bien desarrollada.Trabajo bien elaborado.Ilustrar el trabajo. Proponga un foro de discusión sobre el tema.Defina bien las recomendaciones y conclusiones. Muchas gracias por su investigación. Gracias. Saludos

    ResponderEliminar
  2. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar