miércoles, 20 de septiembre de 2017

JDBC


                                         "AÑO DEL BUEN SERVIDOR AL CIUDADANO"

                                      ESCUELA ACADÉMICA DE INGENIERÍA DE SISTEMAS Y TELEPÁTICA

                                                                                            ASIGNATURA
                                                                       LABORATORIO DE PROGRAMACIÓN II

                                                                                            TEMA
                                                                                             JDBC

                                                                                           AUTORES
                                                                                   LUZ CLARITA PEREZ DIAZ
                                                                                   LUZ ISELA FLORES CHIGUEL
                                                                                   LUZ CLARITA CHILCON SANCHEZ

                                                                                               DOCENTE
                                                                                    ING.MARCO AURELIO PORRO CHULLI


                                                                                    BAGUA GRANDE-UTCUBAMBA 
                                                                                                     AMAZONAS



                                                                                                   2017



1.       Contenido
  •  Capa de Acceso de datos, creación.
Una capa de acceso a datos o DAL (del inglés data access layer) en los programas informáticos, es una capa de un programa informático que proporciona acceso simplificado a los datos almacenados en el almacenamiento persistente de algún tipo, tal como una entidad-relación de base de datos. Este acrónimo se usa predominantemente en entornos Microsoft ASP.NET.
Por ejemplo, el DAL podría devolver una referencia al objeto (en términos de programación orientada a objetos) completo con sus atributos en lugar de un registro de campos de una tabla de la base de datos. Esto permite que los módulos del cliente (o usuario) se crearan con un mayor nivel de abstracción. Este tipo de modelo puede ser implementado mediante la creación de una clase de métodos de acceso a datos que hacen referencia directamente a un conjunto correspondiente de procedimientos almacenados de base de datos. Otra aplicación potencial podría recuperar o escribir registros hacia o desde un sistema de archivos. El DAL esconde esa complejidad del almacén de datos subyacente del mundo externo.
Por ejemplo, en lugar de utilizar comandos tales como insertareliminar y actualizar para acceder a una tabla específica en una base de datos, una clase y unos procedimientos almacenados se podrían crear en la base de datos. Los procedimientos se han llamado de un método dentro de la clase, lo que devolvería un objeto que contiene los valores solicitados. O bien los comandos inserción, eliminación y actualización podría ser ejecutado en funciones simples como registerUser o loginUser almacenada dentro de la capa de acceso a datos.




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

NetBeans 
es una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un Entorno integrado de desarrollo (IDE) desarrollado usando la Plataforma NetBeans.

Si eres un programador y desarrollas tus aplicaciones en Java seguramente necesitarás conectar una base de datos tipo MySQL a este entorno algún día, bueno, si lo necesitas ahora, he aquí una explicación paso a paso de cómo conectar ambas herramientas.

·        Primero que nada necesitas tener un servidor MySQL instalado en tu equipo o en su defecto en la máquina que actuará como servidor de bases de datos. Recuerda que MySQL es gratuito y puedes obtenerlo desde aquí.





·                    El proceso de instalación es algo en lo que no entraré en detalle, para cualquier duda puedes consultar la documentación oficial que se encuentra en su sitio web.

·        Asimismo, debes de tener el NetBeans instalado, de preferencia su última versión estable (al momento de esta publicación es la 5.5.1) que viene con el Java Development Kit (JDK) 1.6, lo anterior puedes obtenerlo desde aquí.

·                                             Una vez que tengas ambas herramientas instaladas necesitaras el driver o conector a la base de datos de MySQL que puedes obtener desde aquí.
Copiar lo necesario:


Una vez que tengas el NetBeans y el MySQL Server instalado lo que vas a necesitar es copiar el driver que descargaste, en mi caso el mysql-connector-java-3.1.11-bin.jar dentro de la carpeta del JDK, en mi caso es la siguiente ruta:

C:\Archivos de programa\Java\jdk1.6.0_01\jre\lib\ext



*NOTA: Debes tener el conector dentro de la carpeta anterior antes de ejecutar el NetBeans, en caso de que esté abierto ciérralo y vuélvelo a abrir.

Ya que lo hayas copiado ahora sí abre el NetBeans y espera a que cargue.

Configurar NetBeans::

Una vez que hayas abierto el NetBeans localiza la sección de Runtime Tiempo de ejecución que se localiza en el lado izquierdo de la pantalla, como se muestra a continuación:

Al expandir la sección de Databases Bases de datos debe de aparecer el MySQL (Connector/J driver), en caso contrario debes de agregarlo manualmente como se describe a continuación:
1. 
Da un clic derecho sobre Drivers y selecciona New Driver.





1.    En la ventana que aparece da clic en el botón de Add Agregar y busca el archivo .jar que descargaste anteriormente, el mismo que copiaste dentro de la carpeta del JDK.
2.    Una vez hecho lo anterior da clic en el botón de Ok Aceptar.
Cuando realices los pasos anteriores debe de aparecer un elemento nuevo en la sección de Drivers dentro de Databases de nombre MySQL (Connector/Jdriver).

Dentro de la sección de Runtime Tiempo de ejecución Databases Bases de datos Drivers da un clic derecho sobre MySQL (Connector/J driver) y selecciona Connect UsingConectar usando... para que aparezca la pantalla de configuración de la conexión como se muestra a continuación.


En la sección de Name Nombre selecciona MySQL (Connector/J driver), en la sección Database URL cambia la parte indicada por por la dirección del servidor de bases de datos, si es la misma computadora escribe localhost, en la parte de establece el puerto que definiste al instalar el servidor MySQL , por defecto es el 3306, en la sección de escribe el nombre de la base de datos a la cual te quieres conectar. Un ejemplo completo sería jdbc:mysql://localhost:3306/base_de_datos.


Ø 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 atrubuto 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”

Modelos de dos capas y tres capas


Conformación de SQL
El SQL es el idioma normal por acceder las bases de datos correlativas. Una dificultad es que aunque la mayoría del DBMSs (los Sistemas de Dirección de Base de datos) use un formulario normal de SQL para la funcionalidad básica, ellos no conforman la sintaxis de SQL normal más recientemente definida para la funcionalidad más avanzada. Por ejemplo no todas las BD soportar procedimientos almacenados.
Una manera que el API de JDBC trata de este problema es permitir cualquier sentencia sea pasada a un driver de DBMS subyacente.
Para las aplicaciones complejas, JDBC trata la conformación de SQL de otra manera. Proporciona la información descriptiva sobre el DBMS por medio del DatabaseMetaData para que las aplicaciones puedan adaptar a los requisitos y capacidades de cada DBMS.
El Armazón de JDBC
JavaSoft proporciona tres componentes JDBC como la parte de la JDK:
el JDBC driver manager,
la JDBC driver test suite
el puente JDBC-ODBC.
El JDBC driver manager es el espinazo de la arquitectura de JDBC. Realmente es bastante pequeño y simple; su función primaria es conectar las aplicaciones de Java al chófer de JDBC correcto y entonces salir de la manera.
La JDBC driver test suite proporciona un poco de confianza en que drivers de JDBC ejecutarán su programa. Pueden designarse sólo drivers que pasan la JDBC driver test suite
El Armazón de JDBC
El puente de JDBC-ODBC les permite a los drivers de ODBC ser usado como drivers de JDBC. Y a largo plazo proporcionará una manera de acceder alguno del DBMSs menos popular si no se crean los drivers de JDBC para ellos.




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". 


  
Tipos de controladores JDBC

Este tema define los tipos de controladores JDBC (Java Database Connectivity). Los tipos de controladores se definen en categorías según la tecnología utilizada para conectarse a la base de datos. Los proveedores de controladores JDBC utilizan estos tipos para describir cómo operan sus productos. Algunos tipos de controladores JDBC son más adecuados que otros para algunas aplicaciones.

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). La interfaz Java nativa (JNI) se utiliza para llamar a las 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 nativos Java para llamar a las funciones de la API que realizan las 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 un controlador JDBC 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
Un controlador de tipo 4 utiliza Java para implementar un protocolo de red de proveedor 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.
El controlador JDBC de IBM Toolbox para Java es un controlador JDBC de tipo 4, lo cual indica que la API es un controlador de protocolo de red Java puro.

                                   Aplicaciones
En esta sección se presentarán una serie de aplicaciones para ejemplificar las 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.
El driver Java-MySQL se puede descargar desde aquí
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 interpretes 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

Ø  Uso de JDBC en aplicaciones java

Java Database Connectivity, más conocida por sus siglas JDBC,12​ es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice.
El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de manejadores de conexión hacia cada modelo específico de base de datos. Un manejador de conexiones hacia un modelo de base de datos en particular es un conjunto de clases que implementan las interfaces Java y que utilizan los métodos de registro para declarar los tipos de localizadores a base de datos (URL) que pueden manejar. Para utilizar una base de datos particular, el usuario ejecuta su programa junto con la biblioteca de conexión apropiada al modelo de su base de datos, y accede a ella estableciendo una conexión; para ello provee el localizador a la base de datos y los parámetros de conexión específicos. A partir de allí puede realizar cualquier tipo de tarea con la base de datos a la que tenga permiso: consulta, actualización, creación, modificación y borrado de tablas, ejecución de procedimientos almacenados en la base de datos, etc.
JDBC ofrece el paquete java.sql, en el que existen clases muy útiles para trabajar con bases de datos.



Clase
Descripción
DriverManager
Para cargar un driver
Connection
Para establecer conexiones con las bases de datos
Statement
Para ejecutar sentencias SQL y enviarlas a las BBDD
PreparedStatement
La ruta de ejecución está predeterminada en el servidor de base de datos que le permite ser ejecutado varias veces
ResultSet
Para almacenar el resultado de la consulta


Ejemplos de JDBC

Nombre del programa de ejemplo
Descripción del programa
Ejemplos de aprendizaje - Programas que muestran cómo realizar operaciones básicas con bases de datos.
Cómo modificar datos de tablas.
Cómo leer tablas.
Nivel de imagen de instalación - Ejemplos referentes al nivel de imagen de instalación de DB2.
Cómo obtener y definir información a nivel de instalación.
Nivel de base de datos - Ejemplos referentes a objetos de bases de datos en DB2.
Cómo visualizar/otorgar/revocar autorizaciones a nivel de base de datos.
Cómo conectar y desconectar con respecto de una base de datos.
Cómo obtener y definir información a nivel de base de datos.
Cómo conectar y desconectar con respecto a varias bases de datos.
Cómo convertir una sentencia que contiene una cláusula de escape ODBC en un formato específico de la fuente de datos.
Cómo utilizar la posibilidad de contención del cursor del conjunto de resultados en los controladores JDBC Legacy de tipo 2 y JDBC universal. 4 Para compilar este ejemplo, necesita Java Developer Kit 1.4 o superior. Para ejecutar este ejemplo, necesita Java Runtime Environment 1.4 o superior. 3
Cómo crear, modificar y eliminar una secuencia en una base de datos.
Cómo utilizar objetos de base de datos.
Tabla 16. archivos de programas de ejemplo JDBC


2. RESUMEN

Java Database Connectivity (JDBC) es una interfase de acceso a bases de datos estándar SQL que proporciona un acceso uniforme a una gran variedad de bases de datos relacionales. JDBC también proporciona una base común para la construcción de herramientas y utilidades de alto nivel. El paquete actual de JDK incluye JDBC y el puente JDBC-ODBC. Estos paquetes son para su uso con JDK 1.0 Drivers JDBC Para usar JDBC con un sistema gestor de base de datos en particular, es necesario disponer del driver JDBC apropiado que haga de intermediario entre ésta y JDBC. Dependiendo de varios factores, este driver puede estar escrito en Java puro, o ser una mezcla de Java y métodos nativos JNI (Java Native Interface.

3.SUMMARY.

Java Database Connectivity (JDBC) is a database access interface
SQL standard that provides uniform access to a wide variety of databases
of relational data. JDBC also provides a common basis for the
construction of tools and utilities of high level.
The current JDK package includes JDBC and the JDBC-ODBC bridge. These packages
are for use with JDK 1.0
JDBC Drivers
To use JDBC with a particular database manager system, you need to
have the appropriate JDBC driver to act as intermediary between JDBC and JDBC.
Depending on several factors, this driver may be written in pure Java, or be
a mixture of Java and native JNI (Java Native Interface)

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 utilaza esta 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
· Se recomienda a poner en disposición de los alumnos de la Universidad la Aplicación de consulta de notas, dado que le ahorraría costo y tiempo para la obtención de las notas requeridas, desde el punto de consultas.
 · 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.

5.Conclusiones

· Los drivers JDBC y ODBC establecen la estructura para el diseño y generación de conexiones y accesos a Base de Datos remotas; por lo que facilita el desarrollo de nuevas aplicaciones que la Universidad desee implementar en un futuro, orientados con este fin.
 · La aplicación fue desarrollada de tal forma que sea amigable para el usuario; con solo el ingreso del número de carnet, se despliega las notas del ciclo vigente y existe la opción de ir y regresar a consultar el historial de notas y el CUM. Al ser desarrollado en Java existe la ventaja de que la aplicación pueda ejecutarse en cualquier Sistema Operativo; esto permite a que la aplicación se adapte a cualquier cambio de estructura que desee generar la Unidad de Informática de la Universidad.

6. Apreciación del Equipo

v  Para mí fue muy elemental investigar en sí la definición del JDBC, y porque se caracteriza por ser un lenguaje muy utilizado.
v  JDBC como sabemos es un lenguaje que fue creado; pero con una gran diferencia que este lenguaje nos ayuda a tener un mayor seguridad en el programa que se está ejecutando.
7. Glosario de Términos

rquitectura Java™ para enlaces XML (JAXB)
Tecnología de enlaces Java que soporta la transformación entre objetos de esquema y Java, así como entre documentos de instancia XML e instancias de objeto Java.
Java Database Connectivity (JDBC)
Estándar de la industria para conectividad independiente de la base de datos entre la plataforma Java y un amplio rango de bases de datos. La interfaz JDBC proporciona una API a nivel de llamada para acceso de base de datos basado en SQL y en XQuery. Vea también Open Database Connectivity.
Java EE
Arquitectura Java EE Connector (JCA)
Arquitectura estándar para conectar la plataforma J2EE a sistemas de información empresarial (EIS) heterogéneos.

Java Message Service (JMS)

Interfaz de programación de aplicaciones que proporciona funciones en lenguaje Java para gestionar mensajes. Vea también Interfaz de aplicaciones de mensajería (AMI) y Interfaz de Colas de Mensajes (MQI).

Java Platform, Enterprise Edition (Java EE)

Entorno para desarrollar y desplegar aplicaciones empresariales, definidas por Sun Microsystems Inc. La plataforma Java EE consiste en un conjunto de servicios, interfaces de programación de aplicaciones (API) y protocolos que ofrecen las funciones para desarrollar aplicaciones basadas en la web, de varios niveles. (Sun)

JVM (Java Virtual Machine)
Implementación de software de un procesador que ejecuta código Java compilado (applets y aplicaciones).

JavaScript Object Notation (JSON)
Formato ligero de intercambio de datos de fácil lectura y escritura. Las máquinas pueden analizar y generar JSON con facilidad. JSON se basa en un subconjunto del lenguaje de programación JavaScriptEstándar ECMA-262 3ª edición - diciembre de 1999 [PDF] . JSON es una representación textual independiente del lenguaje, pero que usa convenciones que resultan familiares a los programadores de los lenguajes de programación de la familia de C. JSON puede describirse mediante un esquema JSON.
JAXB
Consulte Arquitectura Java para enlaces XML (JAXB).
JCA
Consulte Arquitectura Java EE Connector.
JCL
JDBC
JMS

8.Bibliografía o Linkografia





















ahí le dejo algunas diapositivas  de JDBC

https://www.slideshare.net/LUZCLARITAPEREZDIAZ/jdbc-79998203