JDBC
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS Y TELEMÁTICA
|
ÍNDICE:
1
JDBC (JAVA DATABASE CONNECTIVITY)
1.1 CAPA
DE ACCESO DE DATOS:
1.1.1 Definició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 insertar, eliminar 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.
Además,
los métodos de la lógica de negocio de una aplicación se pueden asignar a la
capa de acceso a datos. Así, por ejemplo, en vez de hacer una consulta en una
base de datos en busca de todos los usuarios de varias tablas de la aplicación
puede llamar a un solo método de una DAL que abstrae las llamadas bases de
datos.
Las
aplicaciones que utilizan una capa de acceso a datos puede ser cualquiera de
los servidores de base de datos dependiente o independiente. Si la capa de
acceso a datos es compatible con varios tipos de bases de datos, la aplicación
se vuelve capaz de utilizar lo que las bases de datos de la CHA pueden hablar.
En cualquier circunstancia, que tiene una capa de acceso de datos proporciona
una ubicación centralizada para todas las llamadas en la base de datos, y por
lo tanto hace que sea más fácil de puerto de la aplicación a otros sistemas de
bases de datos (suponiendo que el 100% de la interacción de base de datos se
hace en la CHA para un dado aplicación).
Herramientas mapeo objeto-relacional proporcionan capas de
datos de esta manera, siguiendo el modelo registro activo. El
modelo ORM/active-record es popular entre los framework para aplicaciones web.
1.1.2 Componentes
de la capa de acceso a datos:
La capa de acceso a datos tiene dos tipos fundamentales de componentes:
- Componentes de lógica de acceso a datos. Estos
presentan una interfaz a la capa de negocio que abstrae de la forma en que
se acceden a los datos almacenados, haciendo a la aplicación más fácil de
configurar y mantener.
- Componentes utilitarios y auxiliares.
Consisten en librerías especializadas o APIs que permiten acceder,
manipular o transformar los datos dentro de los componentes de lógica de
acceso a datos. Por lo general son suministrados por el fabricante del
gestor de base de datos (Oracle, IBM, etc.)
1.1.3 Factores
a considerar al desarrollar la capa de acceso a datos:
- Cree un diseño general de su capa de acceso a
datos:
- Identifique los requerimientos de las fuentes
de datos (data sources).
- Determine el enfoque de acceso a los datos.
- Elija como mapear estructuras de datos a los
resultados de las fuentes de datos (data sources)
- Determine como conectarse a las fuentes de
datos.
- Elija la estrategia para tratar errores de
conexión con las fuentes de datos
- Diseñe sus componentes de acceso a datos:
- Enumere las fuentes de datos a las que va a
acceder.
- Decida el método de acceso para cada fuente
de datos.
- Determine que componentes auxiliares o
librerías son necesarios para facilitar el acceso a los datos, así como
las tareas de desarrollo y mantenimiento
- Estudie si puede aplicar patrones de diseño
en el acceso a los datos (Table Data Gateway, Query Object, Repository,
etc.)
- Diseñe sus componentes auxiliares
- Identifique que funcionalidades pueden
moverse fuera de los componentes de acceso a datos y crear un componente
auxiliar para su reutilización.
- Busque librerías de componentes auxiliares
disponibles.
- Considere componentes auxiliares para
solucionar problemas como conexiones, autenticación, monitorización o
tratamiento de excepciones.
- Considere añadir logging a sus componentes
auxiliares.
1.1.4 Consideraciones de diseño de la capa de acceso a datos:
- Seleccione la tecnología
adecuada de acceso a datos. La tecnología de acceso a datos depende del
tipo y volumen de los datos que necesitamos. Determinadas tecnologías son
mejores en determinados escenarios. Por ejemplo, la recuperación de miles
de registros por una única clave y si no hay necesidad de consultas
complejas, podría llevarnos a utilizar un gestor de base de datos NOSQL en
vez de un gestor SQL relacional clásico.
- Utilice la abstracción para
implementar componentes de acceso a datos débilmente acoplados al sistema
de gestión de base de datos. Esto nos permite no solo desarrollar
cómodamente y mantener nuestra capa de acceso a datos, sino incluso migrar
todos los datos de un gestor a otro con el mínimo o ningún impacto en
nuestra aplicación Web
- Considere la mapear los
datos obtenidos en objetos o estructuras de datos que son más simples de
procesar en la capa de negocio
- Encapsule todas las
funcionalidades de acceso a bases de datos dentro de la capa de acceso a
datos. Esta capa tiene que ocultar a la capa de negocio todo lo
relacionado con conexiones, mapeos y transformaciones básicas de datos,
generar consultas, etc.
- Decida cómo manejar las
conexiones. Como regla, la capa de acceso a datos tiene que manejar todas
las conexiones a todas las fuentes de datos requeridas por la aplicación.
Estudie como almacenar y proteger acorde a sus requerimientos de seguridad,
la información que describe a estas conexiones.
- Determine como tratar las
excepciones de datos. La capa de acceso a datos debe capturar todas las
excepciones relacionadas con las fuentes de datos y las operaciones CRUD
(Create, Read, Update Delete – Crear, Leer, Actualizar y Borrar)
relacionadas con la base de datos. Las excepciones producidas por los
datos solo deben pasarse a la capa de negocio si afectan la funcionalidad
o la respuesta de usuario de la aplicación
- Considere los riesgos de
seguridad. La capa de acceso a datos debe de protegerse contra mecanismos
de ataque que traten de borrar, corromper, alterar los datos o tomar
control de la fuente de datos.
- Reducir el tráfico de datos
siempre que sea posible.
- Considere el desempeño y la
escalabilidad de la base de datos. Estudie los límites de acceso a datos
de su aplicación. Realice pruebas de estrés y pruebas de carga que
permitan encontrar esos límites acordes a las capacidades del entorno de
Producción de su instalación. Recuerde que lo que en un entorno de test o
de desarrollo es factible en términos de concurrencia, volumen de datos o
respuesta de usuario no tiene nada que ver en un entorno de Internet con
diferentes conexiones a diferentes velocidades, cientos o miles de usuario
accediendo al mismo tiempo y miles de MB o GB transfiriéndose entre los
servidores y los clientes en navegador que ejecutan nuestra aplicación
1.1.5 Problemas
comunes en el diseño de la capa de acceso a datos:
Categoría
|
Problemas comunes
|
BLOB
|
|
Ejecución por lotes
|
|
Conexiones
|
|
Formato de datos
|
|
Tratamiento de
excepciones/ errores
|
|
Consultas
|
|
Procedimientos
almacenados
|
|
Transacciones
|
|
Validación
|
|
XML
|
|
1.2 CONFIGURACIÓN
DE CONEXIÓN BD CON NETBEANS:
Conectar tus aplicaciones
Java a un servidor
de bases de datos es imprescindible para la funcionalidad de una
solución de Software. Al igual que Sql server y C#, Mysql y Java necesitan de una interfaz
que proporcione las clases necesarias para gestionar una conexión.
Para comprender el funcionamiento de este enlace
comenzaremos explicando cómo adherir el API
de conexión a nuestros IDEs (en
este caso veremos cómo hacerlo con Netbeans y Eclipse), luego implementaremos
el código para abrir la conexión.
En seguida veremos cómo ejecutar
comandos y al finalizar estudiaremos la ejecución de procedimientos almacenados.
1.2.1 ¿Qué
es el API De Conexión?
Es
un conjunto de interfaces relacionadas que
permiten realizar una conexión de un servidor de bases de datos a una
aplicación Java. Normalmente se le
denomina JDBC (Java Database
Connectivity). La idea es usar un Driver que
gestione el acceso a un servidor Mysql,
y así abrir la conexión con la intención de ejecutar comandos en la base de
datos.
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.
- 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í.
1.2.2 Configurar NetBeans:
Una
vez que hayas abierto el NetBeans localiza la sección de Runtime o 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 o Bases de datos debe de aparecer el MySQL (Connector/J driver), en caso contrario debes de agregarlo manualmente como se describe a continuación:
Al expandir la sección de Databases o Bases de datos debe de aparecer el MySQL (Connector/J driver), en caso contrario debes de agregarlo manualmente como se describe a continuación:
- Da un clic derecho sobre Drivers y selecciona New Driver.
- En
la ventana que aparece da clic en el botón de Add o Agregar y
busca el archivo, dejar que descargaste anteriormente, el mismo que
copiaste dentro de la carpeta del JDK.
3.
Una vez hecho lo
anterior da clic en el botón de Ok o 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/J driver).
Dentro de la sección de Runtime o Tiempo de ejecución > Databases o Bases de datos >Drivers da un clic derecho sobre MySQL (Connector/J driver) y selecciona Connect Usingo Conectar 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 o 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. Posteriormente escribe el nombre de usuario para accesar a la base de
datos y la contraseña respectivamente.
Da un clic en el checkbox inferior para que NetBeans recuerde la contraseña durante la conexión.
Si todo se realizó correctamente podrás ver un nuevo elemento debajo del Driver con las especificaciones de la conexión actual, si das un clic en el símbolo '+' que aparece de lado izquierdo del mismo podrás ver las tablas de la base de datos y realizar consultas hacia la misma.
Da un clic en el checkbox inferior para que NetBeans recuerde la contraseña durante la conexión.
Si todo se realizó correctamente podrás ver un nuevo elemento debajo del Driver con las especificaciones de la conexión actual, si das un clic en el símbolo '+' que aparece de lado izquierdo del mismo podrás ver las tablas de la base de datos y realizar consultas hacia la misma.
Implementar el código:
Hasta aquí ya hemos establecido la conexión a la base de datos y probado su funcionamiento desde el NetBeans, sin embargo, nos hace falta implementar el código directamente en una aplicación. Para este ejemplo crearemos una clase de nombre Conexión que se podrá reutilizar las veces que sea necesario en cualquier tipo de aplicación Java que requiera conectarse y realizar consultas a una base de datos en MySQL.
Hasta aquí ya hemos establecido la conexión a la base de datos y probado su funcionamiento desde el NetBeans, sin embargo, nos hace falta implementar el código directamente en una aplicación. Para este ejemplo crearemos una clase de nombre Conexión que se podrá reutilizar las veces que sea necesario en cualquier tipo de aplicación Java que requiera conectarse y realizar consultas a una base de datos en MySQL.
- Da
un clic en el menú de File o Archivo que se localiza en
la esquina superior izquierda de la ventana de NetBeans.
- Selecciona
la opción de Nuevo
Proyecto o New
Project, posteriormente en la sección de Categories o Categorías selecciona General y en Projects o Proyectos seleccionaJava Application o Aplicación Java y da un clic
en Siguiente.
- Posteriormente
damos un nombre a la aplicación y definimos su ubicación, una vez hecho
esto damos clic en el botón de Finish o Finalizar.
- En este momento aparece del
lado izquierdo en la pestaña de Projects o Proyectos
una especie de árbol jerárquico en el cual tenemos 4 carpetas, al
dar clic en el símbolo '+' de la carpeta Source Packages o Paquetes Fuente nos desplegará el único paquete con el
cual cuenta nuestra aplicación hasta este punto, dentro de él se crea la
clase Main.
- Ahora debemos de dar un clic
derecho sobre Source
Packages o Paquetes
Fuente y dar un nombre al paquete, en mi caso es database. Este paquete
contendrá la clase desde la cual estaremos realizando todas las consultas
a la base de datos.
- Posteriormente damos un clic
derecho sobre el paquete recién creado y seleccionamos Nueva o New > Java Class. Posteriormente
le damos el nombre de Conexión y
damos clic en el botón de Finalizar o Finish.
- Dentro de la clase Conexión importamos algunas
librerías.
- Finalmente compilamos el
archivo localizándolo en el árbol jerárquico del lado izquierdo dando un
clic derecho sobre él y seleccionando la opción de Compilar o Compile. Podrás utilizar la
clase en cualquier parte de tu proyecto creando una instancia de la misma
en el momento que sea necesario.
*TIP: Crea únicamente una vez la conexión con el método crearConexion() desde la clase Main y pasa tu conexión como parámetro a todas las ventanas y módulos de la aplicación que la utilicen.
Una vez realizado
lo anterior estarás listo para conectarte a bases de datos en MySQL desde
NetBeans, la clase Conexión y el driver para MySQL puedes descargarlos este vínculo en
un archivo comprimido tipo rar, este manual se encuentra en formato PDF
desde este
vínculo.
Si te gustó el
artículo y te fue de utilidad te invito a que lo compartas con tus amigos desde
los botones sociales (Twitter, Facebook, Google+). Puedes leer más Sobre el
Autor o ponerte encontacto conmigo si así lo necesitas.
1.3 JAVA
DATABASE CONNECTIVITY(JDBC):
1.3.1 Definición:
Java Database Connectivity, más
conocida por sus siglas JDBC, es una API (Interfaz de programación de
aplicaciones) 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.
JDBC es un API (Application programming
interface) que describe o define una librería estándar para acceso a fuentes de datos,
principalmente orientado a Bases de Datos relacionales que usan SQL (Structured
Query Language). JDBC no sólo provee un interfaz para acceso a motores de bases
de datos, sino que también define una arquitectura estándar, para
que los fabricantes puedan crear los drivers que permitan a las aplicaciones
java el acceso a los datos.
Sun define JDBC como:
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.
Un
controlador o driver JDBC es un componente de software que permite a las aplicaciones escritas en Java interactuar con una base de
datos.
Para conectar con bases de datos individuales, JDBC requiere controladores para cada base de datos. El controlador JDBC ofrece la conexión a la base de datos e implementa el protocolo para la transferencia de las consultas y resultados entre el cliente (aplicación) y la base de datos.
Para conectar con bases de datos individuales, JDBC requiere controladores para cada base de datos. El controlador JDBC ofrece la conexión a la base de datos e implementa el protocolo para la transferencia de las consultas y resultados entre el cliente (aplicación) y la base de datos.
1.3.2 Tipos
de JDBC:
Los drivers JDBC (equivalentes a ODBC)
permiten efectuar conexiones con bases de datos.
Existen 4 tipos de driver JDBC que se detallan
a continuación.
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.3.3 Aplicaciones
JDBC:
La escritura de
una aplicación JDBC tiene mucho en común con la escritura de una aplicación SQL
en cualquier otro lenguaje.
En general, es
necesario que realice las acciones siguientes:
- Acceda a los paquetes de
Java™ donde residen los métodos JDBC.
- Declare variables para
enviar datos a tablas de DB2 o recuperar datos de ellas.
- Conecte con una fuente de
datos.
- Ejecute sentencias de SQL.
- Trate los errores y avisos
de SQL.
- Desconecte de la fuente de
datos.
Aunque las tareas
que necesita realizar son similares a las que se ejecutan en otros lenguajes,
la forma de ejecutarlas es algo diferente.
- Ejemplo
de una aplicación JDBC simple
Aplicación JDBC simple que muestra los elementos básicos que es necesario incluir en una aplicación JDBC. - Conexión
de las aplicaciones JDBC a una fuente de datos
Para poder ejecutar sentencias de SQL en un programa SQL cualquiera, debe estar conectado con una fuente de datos. - Paquetes
Java para el soporte JDBC
Para invocar métodos de JDBC necesita poder acceder a todos los paquetes Java (o parte de ellos) donde residen estos métodos. - Obtención
de información acerca de una fuente de datos mediante métodos
DatabaseMetaData
La interfaz DatabaseMetaData contiene métodos para recuperar información sobre una fuente de datos. Estos métodos son útiles cuando escribe aplicaciones genéricas que pueden acceder a diversas fuentes de datos. - Variables
en aplicaciones JDBC
Al igual que en cualquier otra aplicación Java, cuando escribe aplicaciones JDBC, debe declarar variables. En las aplicaciones Java, esas variables se conocen como identificadores Java. - Comentarios
en una aplicación JDBC
Para documentar su programa JDBC, es necesario que incluya comentarios. Puede utilizar comentarios Java fuera de los métodos JDBC y comentarios Java o SQL en series de sentencia de SQL. - Interfaces
JDBC para ejecutar SQL
Puede ejecutar sentencias de SQL dentro de un programa de SQL estándar para actualizar datos de tablas, recuperar datos de tablas o invocar procedimientos almacenados. Para ejecutar las mismas funciones en un programa JDBC, debe invocar métodos. - Información
sobre parámetros ampliados con IBM Data Server Driver para JDBC y SQLJ
Los métodos y constantes específicos de IBM Data Server Driver para JDBC y SQLJ le permiten asignar el valor por omisión o ningún valor a las columnas de tabla o las columnas ResultSet. - Bloqueo
optimista en aplicaciones JDBC
Puede escribir aplicaciones JDBC para sacar provecho del bloqueo optimista sobre una fuente de datos. - SQL
compuesto en aplicaciones Java
Las cláusulas de las sentencias SQLJ en las aplicaciones SQLJ o las sentencias de SQL en las aplicaciones JDBC incluyen sentencias compuestas. - Datos
XML en aplicaciones JDBC
En las aplicaciones JDBC, puede almacenar en columnas XML y recuperar datos de columnas XML. - Control
de transacciones en aplicaciones JDBC
En las aplicaciones JDBC, al igual que en otros tipos de aplicaciones SQL, el control de transacciones supone la confirmación y retrotracción explícita o implícita de transacciones, y definir el nivel de aislamiento de las transacciones. - Excepciones
y avisos cuando se utiliza IBM Data Server Driver para JDBC y SQLJ
En las aplicaciones JDBC, los errores de SQL emiten excepciones, que el usuario trata mediante bloques try/catch. Los avisos de SQL no emiten excepciones, por lo que después de ejecutar sentencias de SQL es necesario invocar métodos para determinar si se han producido avisos. - Desconexión
respecto de fuentes de datos en aplicaciones JDBC
Una vez finalizada una conexión con una fuente de datos, es esencial que cierre la conexión con la fuente de datos. De esta manera se libera inmediatamente la base de datos y los recursos JDBC del objeto Connection.
1.4 USO
DEL JDBC EN APLICACIONES JAVA:
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.
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"); }
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 APIS 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 enC.
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”.
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”.
Cargar
un driver de base de datos y abrir conexiones:
La interfaz java.sql.Connection representa una conexión con
una base de datos. Es una interfaz porque la implementación de una conexión
depende de la red, del protocolo y del vendedor. El API JDBC ofrece dos vías
diferentes para obtener conexiones. La primera utiliza la clase java.sql.DriverManager y es adecuada para acceder a bases de datos desde programas
cliente escritos en Java. El segundo enfoque se basa en el acceso a bases de
datos desde aplicaciones J2EE (Java 2 Enterprise Edition).
Consideremos cómo se obtienen las conexiones utilizando la clase
java.sql.DriverManager. En una aplicación, podemos obtener una o más conexiones para una o más bases de datos utilizando drivers JDBC. Cada driver implementa la interfaz java.sql.Driver. Uno de los métodos que define esta interfaz es el método connect(), que permite establecer una conexión con la base de datos y obtener un objeto Connection.
java.sql.DriverManager. En una aplicación, podemos obtener una o más conexiones para una o más bases de datos utilizando drivers JDBC. Cada driver implementa la interfaz java.sql.Driver. Uno de los métodos que define esta interfaz es el método connect(), que permite establecer una conexión con la base de datos y obtener un objeto Connection.
En lugar de acceder directamente a clases que implementan la
interfaz
java.sql.Driver, el enfoque estándar para obtener conexiones es registrar cada driver con java.sql.DriverManager y utilizar los métodos proporcionados en esta clase para obtener conexiones. java.sql.DriverManager puede gestionar múltiples drivers. Antes de entrar en los detalles de este enfoque, es preciso entender cómo JDBC representa la URL de una base de datos.
java.sql.Driver, el enfoque estándar para obtener conexiones es registrar cada driver con java.sql.DriverManager y utilizar los métodos proporcionados en esta clase para obtener conexiones. java.sql.DriverManager puede gestionar múltiples drivers. Antes de entrar en los detalles de este enfoque, es preciso entender cómo JDBC representa la URL de una base de datos.
La noción de un URL en JDBC es muy similar al modo típico de
utilizar los URL. Los URL de JDBC proporcionan un modo de identificar un driver
de base de datos. Un URL de JDBC representa un driver y la información
adicional necesaria para localizar una base de datos y conectar a ella. Su
sintaxis es la siguiente:
jdbc:<subprotocol>:<subname>
Existen tres partes separadas por dos puntos:
- Protocolo: En la sintaxis anterior, jdbc es el protocolo. Éste es el único
protocolo permitido en JDBC.
- Subprotocolo: Utilizado para identificar
el driver que utiliza la API JDBC para acceder al servidor de bases de
datos. Este nombre depende de cada fabricante.
- Subnombre: La sintaxis del subnombre es
específica del driver.
Por ejemplo, para una base de datos MySQL llamada ``Bank'', el URL
al que debe conectar es:
jdbc:mysql:Bank
Alternativamente, si estuviéramos utilizando Oracle mediante el
puente JDBC-ODBC, nuestro URL sería:
jdbc:odbc:Bank
Como puede ver, los URL de JDBC son lo suficientemente flexibles
como para especificar información específica del driver en el subnombre.
Clase DriverManager:
El propósito de la clase java.sql.DriverManager (gestor de drivers) es proporcionar una capa de acceso común
encima de diferentes drivers de base de datos utilizados en una aplicación. En
este enfoque, en lugar de utilizar clases de implementación Driverdirectamente, las
aplicaciones utilizan la clase DriverManager para obtener conexiones.
Esta clase ofrece tres métodos estáticos para obtener conexiones.
Sin embargo, DriverManager requiere que cada driver que
necesite la aplicación sea registrado antes de su uso, de modo que el DriverManager sepa que está ahí.
1.5 Ejemplos JDBC:
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".
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".
En este ejemplo se
crea la conexión y los prepareStatements en el constructor por lo que luego
podemos usarlo sin tener que crear una nueva conexión para insertar un nuevo
dato, pero no cerramos nunca la conexión porque si la cerrásemos como se está
creando en el constructor ya no se podría volver a usar.
Ejemplo 1:
Conexión a una base
de datos MySQL y consulta de una tabla.
import java.sql.*;
public class EjemploAccesoBD1 {
public static void main(String[] args) {
Connection conexion =
null;
try {
//
Cargar el driver
Class.forName("com.mysql.jdbc.Driver");
//
Se obtiene una conexión con la base de datos.
//
En este caso nos conectamos a la base de datos prueba
//
con el usuario root y contraseña 1daw
conexion
= DriverManager.getConnection("jdbc:mysql://localhost/prueba",
"root", "1daw");
//
Se crea un Statement, para realizar la consulta
Statement
s = conexion.createStatement();
//
Se realiza la consulta. Los resultados se guardan en el ResultSet rs
ResultSet rs
= s.executeQuery("select * from persona");
//
Se recorre el ResultSet, mostrando por pantalla los resultados.
while
(rs.next()) {
System.out.println(rs.getInt("Id")
+ " " + rs.getString(2) + " " + rs.getDate(3));
}
} catch (SQLException e)
{
System.out.println(e.getMessage());
} catch
(ClassNotFoundException e) {
System.out.println(e.getMessage());
} finally { // Se cierra la conexión con la base de
datos.
try {
if
(conexion != null) {
conexion.close();
}
}
catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
}
Ejemplo 2: Crear una tabla e insertar
datos.
Crearemos
la tabla contactos dentro de la base de datos prueba.
import java.sql.*;
public class EjemploAccesoBD2 {
public static void
main(String[] args) {
Connection
conexion = null;
try
{
//
Cargar el driver
Class.forName("com.mysql.jdbc.Driver");
// Se obtiene una conexión con la base
de datos.
conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba",
"root", "1daw");
//
Se crea un Statement, para realizar el query
Statement
s = conexion.createStatement();
//se crea una tabla nueva
s.executeUpdate("CREATE
TABLE contacto (id INT AUTO_INCREMENT,
PRIMARY
KEY(id), nombre VARCHAR(20),
apellidos
VARCHAR(20), telefono VARCHAR(20))");
//Los
datos que vamos a insertar los tenemos en 3 arrays
String
nombres[] = {"Juan", "Pedro", "Antonio"};
String
apellidos[] = {"Gomez", "Lopez", "Alvarez"};
String
telefonos[] = {"987452154", "989654125",
"985321478"};
//se
insertan datos en la tabla
for (int i =
0; i < nombres.length; i++) {
s.executeUpdate("INSERT
INTO contacto (nombre, apellidos, telefono)
VALUES
('" + nombres[i] + "','" + apellidos[i] + "','" +
telefonos[i] + "' )");
}
//
Se realiza una consulta sobre la tabla contacto.
ResultSet rs
= s.executeQuery("select * from contacto");
// Se recorre el ResultSet, mostrando
por pantalla los resultados.
while
(rs.next()) {
System.out.println(rs.getInt(1)
+ " " + rs.getString(2) + " " +
rs.getString(3)
+ " " + rs.getString(4));
}
}
catch (SQLException e) {
System.out.println(e.getMessage());
}
catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
} finally { // Se cierra la conexión
con la base de datos.
try {
if
(conexion != null) {
conexion.close();
}
}
catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
}
Ejemplo 3: Modificar el
teléfono del primer contacto de la tabla persona con nombre Juan.
import java.sql.*;
public class EjemploAccesoBD3 {
public static void main(String[] args) {
Connection conexion =
null;
int id;
try {
// Cargar el driver
Class.forName("com.mysql.jdbc.Driver");
//
Se obtiene una conexión con la base de datos.
conexion =
DriverManager.getConnection("jdbc:mysql://localhost/prueba",
"root", "1daw");
//
Se crea un Statement, para realizar el query
Statement
s = conexion.createStatement();
// Se realiza la consulta
//
Queremos obtener el id del primer contacto con nombre Juan
ResultSet rs
= s.executeQuery("SELECT id FROM contacto WHERE nombre='Juan'");
if(rs.next()){ //Si rs.next() devuelve true significa
que al menos hay un registro
id
= rs.getInt("id"); //se
obtienen su id
//se
actualiza el registro
s.executeUpdate("UPDATE
contacto SET telefono='987654321' WHERE id="+id);
}
}
catch (SQLException e) {
System.out.println(e.getMessage());
} catch
(ClassNotFoundException e) {
System.out.println(e.getMessage());
} finally { // Se cierra la conexión
con la base de datos.
try {
if
(conexion != null) {
conexion.close();
}
}
catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
}
2
RESUMEN:
JDBC es el API para la ejecución
de sentencias SQL. (Como punto de interés JDBC) es una marca registrada
y no un acrónimo, no obstante a menudo es conocido
como “Java Database Connectivity”).
Consiste en un conjunto de clases e interfaces escritas en el lenguaje de programación Java. JDBC suministra un API estándar para los desarrolladores y hace posible
escribir aplicaciones de base de
datos usando un API puro Java.
Usando JDBC es fácil enviar sentencias SQL virtualmente a cualquier sistema
de base de datos. En otras palabras, con el
API JDBC, no es necesario
escribir un programa que
acceda a una base de datos Sybase, otro para acceder a Oracle y otro
para acceder a Informix. Un único programa escrito
usando el API JDBC y el
programa será capaz de enviar sentencias
SQL a la base de datos apropiada. Y, con una aplicación
escrita en el lenguaje de programación Java, tampoco es necesario escribir diferentes aplicaciones para ejecutar en diferentes plataformas. La combinación de Java y JDBC permite
al programador escribir una sola vez
y ejecutarlo en cualquier
entorno. Java, siendo robusto, seguro, fácil de usar, fácil de entender, y descargable
automáticamente desde la red, es un lenguaje
base excelente para aplicaciones de base de datos. JDBC expande
las posibilidades de Java. Por
ejemplo, con Java y JDBC API, es posible publicar una página web que contenga
un applet que usa información obtenida de una base de datos
remota. O una empresa puede usar JDBC
para conectar a todos sus empleados (incluso
si usan un conglomerado de máquinas
Windows, Macintosh y UNIX) a una base de datos interna vía intranet. Con cada
vez más y más programadores desarrollando en lenguaje Java, la necesidad
de acceso fácil a base de datos desde Java continúa creciendo.
3
SUMMARY:
JDBC is the
API for executing SQL statements. (As a point of interest JDBC) is a registered
trademark and not an acronym, however it is often known as "Java Database
Connectivity"). It consists of a set of classes and interfaces written in
the Java programming language. JDBC provides a standard API for developers and
makes it possible to write database applications using a pure Java API.
Using JDBC
is easy to send SQL statements to virtually any database system. In other
words, with the JDBC API, you need not write a program to access a Sybase
database, another to access Oracle and another to access Informix. A unique
program written using the JDBC API and the program will be able to send SQL
statements to the appropriate database. And a written in the Java programming
language application, it is not necessary to write different applications to
run on different platforms. The combination of Java and JDBC allows the
programmer write once and run in any environment. Java, being robust, secure,
easy to use, easy to understand, and automatically downloadable from the
network, it is an excellent language basis for database applications. JDBC Java
expands the possibilities. For example, Java and JDBC API, you can publish a
Web page that contains an applet that uses information obtained from a remote
database. Or a company can use JDBC to connect to all employees (even if using
a conglomeration of Windows, Macintosh and UNIX machines) to an internal
database via intranet. With more and more programmers developing in Java, the
need for easy access to database from Java continues to grow.
4
Recomendaciones para un mejor uso y manejo de
JDBC:
El
controlador JDBC nativo se ha diseñado para ser una interfaz Java™ de alto
rendimiento que permita trabajar con la base de datos. Sin embargo, para
obtener el mejor rendimiento posible, es necesario crear las aplicaciones de
manera que aprovechen el potencial que puede ofrecer el controlador JDBC
nativo. Los siguientes consejos pretenden llevar a la práctica las mejores
técnicas de programación JDBC. La mayoría de ellos no son específicos del
controlador JDBC nativo. Por tanto, las aplicaciones que se escriban de acuerdo
con estas directrices también tendrán un buen rendimiento si se emplean con
controladores JDBC distintos del nativo.
ü Evitar consultas SQL SELECT *
SELECT * FROM... es una forma muy habitual de establecer una consulta en
SQL. Sin embargo, muchas veces no es necesario consultar todos los campos. Para
cada columna que hay que devolver, el controlador JDBC tiene que hacer el
trabajo adicional de enlazar y devolver la fila. Aún en el caso de que la
aplicación no llegue a utilizar nunca una columna concreta, el controlador JDBC
debe tenerla presente y reservar espacio por si se utiliza. Esta cuestión no
supone una actividad general significativa si son pocas las columnas que no se
utilizan de las tablas. Sin embargo, si son numerosas las columnas no
utilizadas, la actividad general puede llegar a ser significativa. En tal caso,
sería mejor listar individualmente las columnas que a la aplicación le interesa
consultar, como en este ejemplo: SELECT COL1, COL2, COL3 FROM...
ü Evitar llamadas a DatabaseMetaData:
Conviene tener en cuenta que algunas de las llamadas a databasemetadata
pueden ser costosas. En particular, los métodos getbestrowidentifier,
getcrossreference, getexportedkeys y getimportedkeys pueden resultar costosos.
Algunas llamadas a databasemetadata implican complejas condiciones de unión
sobre tablas a nivel del sistema. Únicamente se deben emplear cuando se
necesita la información que proporcionan, no porque resulte más práctico.
5
CONCLUCIONES:
La conectividad de base
de datos de Java, conocida por sus siglas JDBC, es un API (Interfaz de programación de
aplicaciones) 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.
JDBC es un API (Application programming
interface) que describe o define una librería estándar para acceso a fuentes de datos,
principalmente orientado a Bases de Datos relacionales que usan SQL (Structured
Query Language). JDBC no sólo provee un interfaz para acceso a motores de bases
de datos, sino que también define una arquitectura estándar, para
que los fabricantes puedan crear los drivers que permitan a las aplicaciones
java el acceso a los datos.
ü El API de 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 controlador o driver JDBC es un componente
de software que permite a las
aplicaciones escritas en Java interactuar con una base de datos.
ü
El controlador JDBC ofrece la conexión a la
base de datos e implementa el protocolo para la transferencia de las consultas
y resultados entre el cliente (aplicación) y la base de datos.
6
APRECIACIONES DEL EQUIPO:
JDBC es
un Interfaz de programación de aplicaciones 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.
Además,
podemos decir que JDBC es
usado para enviar comandos SQL hacia una base de datos relacional, que puede
ser Oracle, Infomix, SyBase, etc.
7
GLOSARIO
DE TÉRMINOS:
ü Abstraer:
Separar por medio de una
operación intelectual una cualidad de la cosa en la que existe y considerarla
aisladamente de esta cosa.
ü Utilitarios: Es un término por el cual se
identifica a un vehículo automotor de carga
ü Data sources: Fuente de datos.
ü Table Data Gateway:
Tabla de puerta de enlace de datos.
ü Query Object: Objetos de consulta.
ü Repository: Repositorio.
ü Migrar: Dejar lugar de residencia
para establecerse temporal o definitivamente en otro país o región.
ü CRUD: Crear, Leer, Actualizar, Borrar.
ü Escalabilidad: Es un término usado en
tecnología para referirse a la propiedad de aumentar la capacidad de trabajo o
de tamaño de un sistema sin comprometer el funcionamiento y calidad normales
del mismo.
ü Convencional: Significa reunir las características de lo que es habitual o
tradicional.
ü Suministrar:
Proporcionar o poner al
alcance de una persona o cosa algo que necesita.
8
LINKOGRAFÍA:
ü
http://www.iuma.ulpgc.es/users/lhdez/inves/pfcs/memoria-ivan/node8.html
ü http://puntocomnoesunlenguaje.blogspot.pe/2013/12/java-jdbc-conectar-base-de-datos.htmlhttp://www.lsi.us.es/docencia/get.php?id=2145
ü http://monillo007.blogspot.com/2007/11/conectar-una-base-de-datos-en-mysql-con.html
http://es.slideshare.net/LisbethOcaaBueno/jdbc-66113833
Bien elaborada la PRESENTACION. Defina claramente las CONCLUSIONES y RECOMENDACIONES. Detalle la APRECIACION con sus propias palabras. Trabajo bien desarrollado y explicado. Proponga un foro de discusión sobre el tema Gracias por su investigación.Saludos
ResponderBorrar