"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
CONNECTION
AUTORES
LUZ CLARITA PEREZ DIAZ
LUZ ISELA FLORES CHIGUEL
LUZ CLARITA CHILCON SANCHEZ
DOCENTE
ING.MARCO AURELIO PORRO CHULLI
BAGUA GRANDE-UTCUBAMBA
AMAZONAS
2017
Definición
más conocida por sus siglas JDBC,
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.
¿Qué es y que hace JDBC?
JDBC es una API de Java
para ejecutar sentencias SQL. (Como punto de interés, JDBC es nombre de una
marca registrada y no es un acrónimo, a pesar de todo, JDBC es a menudo
interpretado como “Java DataBase Connectivity”). Consta de un conjunto de
clases e interfaces escrito en lenguaje de programación Java.
Usando
JDBC es fácil enviar sentencias SQL a virtualmente cualquier base de datos
relacional. En otras palabras, con la API JDBC no es necesario escribir un
programa para acceder a una base de datos tipo Access, otro programa para
acceder a una base de datos tipo Oracle y así para cada tipo de base de datos.
Uno puede escribir un solo programa usando la API JDBC y el programa será capaz
de enviar sentencias SQL a la base de datos apropiada. Y, con una aplicación
escrita en Java, uno no tiene por qué preocuparse por escribir diferentes
programas para diferentes plataformas. La combinación de JDBC permite al
programador escribir una vez y ejecutar en cualquier sitio.
Java, siendo robusto,
seguro, fácil de usar, fácil de entender, y automáticamente descargable en una
red, es un excelente lenguaje base para aplicaciones con bases de datos. Lo que
es necesario es una forma para que las aplicaciones Java puedan entenderse con
bases de datos de diferentes tipos. JDBC es el mecanismo para hacer esto.
JDBC extiende lo que
puede hacerse con Java. Por ejemplo, con Java y la API de JDBC, es posible
publicar una página web que usa información obtenida de una base de datos
remota. O una compañía puede usar JDBC para conectar todos sus empleados
(incluso si estos están usando un conglomerado de máquinas Windows, Macintosh y
UNÍS) a una o más bases de datos internas vía una intranet.
De
una forma simple, JDBC posibilita hacer tres cosas:
• Establecer
una conexión con una base de datos
• Enviar
sentencias SQL
• Procesar
los resultados
.
Controladores JDBC
Tipos
de controladores (Drivers) de JDBC
Java puede acceder a la
base de datos mediante un driver o controlador JDBC apropiado que pueda
utilizar las clases que permiten el acceso a la base de datos. Existen diversos
tipos de drivers, que utilizan distintos protocolos. En particular, en esta
asignatura se utilizará el llamado Puente JDBC-ODBC, que se explicará más
adelante.
Cómo
obtener los Drivers de JDBC
Para conseguir la
información actualizada sobre drivers, acceder a la página web sobre drivers
para JDBC de Sun, donde se mantiene un registro actualizado de vendedores de
drivers:
JDBC-ODBC
Bridge
El Puente JDBC-ODBC es
un controlador JDBC que implementa operaciones JDBC traduciéndolas en
operaciones ODBC. Para ODBC aparece como una aplicación normal. El Puente
implementa JDBC para cualquier base de datos para la cual haya disponible un
driver ODBC.
El Puente está
implementado en Java y usa métodos nativos de Java para llamar a ODBC. Se
instala automáticamente con el Java Development Kit como el paquete sun.jdbc.odbc.
Si es posible, usar un
driver JDBC 100% Java en lugar de un Puente y un driver ODBC. Esto elimina
completamente la configuración en el cliente requerida por ODBC.
JDBC 3.0 API
La
JDBC 3.0 API comprende dos paquetes:
• El
paquete java.sql
• El
paquete javax.sql, que añade
capacidades de la parte servidor.
Los dos paquetes se
consiguen automáticamente cuando se baja la Java 2 Platform, Standard Edition,
Version 1.4 (J2SE) de la web de Sun.
Paquete java.sql
Provee
la API para acceso y procesamiento de datos guardados en una fuente de datos
(usualmente una base de datos relacional) usando el lenguaje de programación Java.
Esta API incluye un ámbito donde diferentes drivers pueden ser instalados
dinámicamente para acceder a diferentes fuentes de datos. Aunque la JDBC API
está preparada principalmente para pasar sentencias SQL a una base de datos,
permite leer y escribir datos desde cualquier fuente de datos con un formato
tabular.
Imágenes se muestra como agregar la librería
MySQL JDBC Driver a Netbeans.
Cuando
hayamos agregado las librerías podemos empezar a escribir el código de
conexión:
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/base_datos",
"usuario", "contrasenia");
Este
código establece la conexión localhost:3306 indica que
nos conectaremos al servidor local en el puerto 3306, este
es el puerto que es establece por defecto a la hora de la instalación de MySQL,
lo cambiamos si lo necesitamos.
base_datos es el nombre de
la base de datos a la deseamos conectarnos. También indicamos el usuario y
la contraseña.
statement = connection.createStatement();
resultSet = statement.executeQuery("select * from city");
Este
es el código para ejecutar una consulta a la base de datos MySQL, select
* from city es la consulta SQL que deseamos ejecutar, la
cambiamos para adaptarla a la base de datos de cada uno.
ResultSetMetaData metaData = resultSet.getMetaData();
int numberOfColumns = metaData.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
System.out.printf("%-8s\t", metaData.getColumnName( i ));
}
while (resultSet.next()) {
for (int i = 1; i <= numberOfColumns; i++) {
System.out.printf("%-8s\t", resultSet.getObject( i ));
}
System.out.println();
}
Para
finalizar queremos mostrar los datos obtenidos por la consulta, por lo que
primero obtenemos los nombres de la columnas y luego iteramos a través
del resultSet para mostrar los datos.
Propiedades
Propiedades
comunes de IBM Data Server Driver para JDBC y SQLJ para todos los productos de
base de datos permitidos
La
mayoría de las propiedades de IBM® Data Server Driver para JDBC y SQLJ son
aplicables a todos los productos de base de datos que son compatibles con el controlador.
A
menos que se indique otra cosa, todas las propiedades están contenidas en com.ibm.db2.jcc.DB2BaseDataSource.
Estas
propiedades son las siguientes:
AffinityFailbackInterval
Especifica
la longitud del intervalo, en segundos, que espera IBM Data Server Driver para
JDBC y SQLJ antes de intentar transferir una conexión existente al servidor
primario. Un valor igual o menor que 0 significa que la conexión no se
transfiere. El valor por omisión es DB2BaseDataSource.NOT_SET (0).
Los
intentos de restablecer las conexiones con el servidor primario se realizan en
los límites de transacción, después de haber transcurrido el intervalo
especificado.
affinityFailbackInterval se utiliza únicamente si los valores de las propiedades
enableSeamlessFailover y enableClientAffinitiesList son DB2BaseDataSource.YES
(1).
affinityFailbackInterval
se aplica únicamente a IBM Data Server Driver para JDBC y SQLJ con conectividad
de tipo 4.
allowNextOnExhaustedResultSet
Especifica
cómo IBM Data Server Driver para JDBC y SQLJ maneja una llamada de
ResultSet.next() a un cursor de solo avance que está posicionado después de la
última fila de ResultSet. El tipo de datos de esta propiedad es int.
Los
valores posibles son:
DB2BaseDataSource.NOT_SET
(0)
El
comportamiento es el mismo que para DB2BaseDataSource.NO.
DB2BaseDataSource.YES
(1)
IBM
Data Server Driver para JDBC y SQLJ devuelve nulo cuando se utiliza
Statement.executeQuery, PreparedStatement.executeQuery o
CallableStatement.executeQuery para ejecutar una sentencia CALL para un
procedimiento almacenado que no devuelve ningún conjunto de resultados. Este
comportamiento no cumple el estándar de JDBC.
DB2BaseDataSource.NO
(2)
IBM
Data Server Driver para JDBC y SQLJ emite una SQLException cuando se utiliza
Statement.executeQuery, PreparedStatement.executeQuery o
CallableStatement.executeQuery para ejecutar una sentencia CALL para un
procedimiento almacenado que no devuelve ningún conjunto de resultados. Este
comportamiento cumple el estándar de JDBC.
atomicMultiRowInsert
Especifica
si las operaciones de proceso por lotes que utilizan métodos PreparedStatement
para modificar una tabla son atómicas o no atómicas. El tipo de datos de esta
propiedad es int.
En
el caso de las conexiones con DB2 para z/OS, esta propiedad se aplica
únicamente a las operaciones INSERT de proceso por lotes.
En
el caso de las conexiones con DB2 para Linux, UNIX y Windows o IBM Informix,
esta propiedad se aplica únicamente a las operaciones INSERT, MERGE, UPDATE o
DELETE.
Especifica
un valor para el atributo de conexión CLIENT DEBUGINFO. Sirve para notificar al
servidor de datos que los procedimientos almacenados y funciones definidas por
el usuario que están haciendo uso de la conexión se están ejecutando en la
modalidad de depuración. El atributo CLIENT DEBUGINFO es utilizado por el depurador
unificado de DB2. El tipo de datos de esta propiedad es String. La longitud
máxima es de 254 bytes.
Esta
propiedad sólo se aplica a IBM Data Server Driver para JDBC y SQLJ con
conectividad de tipo 4.
clientRerouteAlternateServerName
Especifica
uno o más nombres de servidores para el redireccionamiento del cliente. El tipo
de datos de esta propiedad es String.
Cuando
se especifica enableClientAffinitiesList=DB2BaseDataSource.YES (1),
clientRerouteAlternateServerName debe contener el nombre del servidor primario
y los nombres de los servidores alternativos. El servidor identificado por
serverName y portNumber es el servidor primario. Ese nombre de servidor debe
aparecer al comienzo de la lista especificada por
clientRerouteAlternateServerName.
Si especifica
más de un nombre de servidor, delimite los nombres con comas (,) o espacios en
blanco. El número de valores especificados para
clientRerouteAlternateServerName debe coincidir con el número de valores
especificados para clientRerouteAlternatePortNumber.
clientRerouteAlternateServerName
es aplicable a IBM Data Server Driver para JDBC y SQLJ con conectividad de tipo
2 con DB2 para Linux, UNIX y Windows y IBM Data Server Driver para JDBC y SQLJ
con conectividad de tipo 4.
clientRerouteAlternatePortNumber
Especifica
uno o más números de puerto para el redireccionamiento del cliente. El tipo de
datos de esta propiedad es String.
Cuando
se especifica enableClientAffinitiesList=DB2BaseDataSource.YES (1),
clientRerouteAlternatePortNumber debe contener el número de puerto del servidor
primario y los números de puerto de los servidores alternativos. El servidor
identificado por serverName y portNumber es el servidor primario. Ese número de
puerto debe aparecer al comienzo de la lista especificada por clientRerouteAlternatePortNumber.
Si
especifica más de un número de puerto, delimite los números de puerto con comas
(,) o espacios en blanco. El número de valores especificados para
clientRerouteAlternatePortNumber debe coincidir con el número de valores especificados
para clientRerouteAlternateServerName.
clientRerouteAlternatePortNumber
es aplicable a IBM Data Server Driver para JDBC y SQLJ con conectividad de tipo
2 con DB2 para Linux, UNIX y Windows y IBM Data Server Driver para JDBC y SQLJ
con conectividad de tipo 4.
clientRerouteServerListJNDIName
Identifica
una referencia JNDI para una instancia de DB2ClientRerouteServerList en un
depósito JNDI de información del servidor de redireccionamiento. La propiedad
clientRerouteServerListJNDIName es aplicable solamente a IBM Data Server Driver
para JDBC y SQLJ con conectividad de tipo 4, y a las conexiones que se
establecen mediante la interfaz DataSource.
Si
el valor de clientRerouteServerListJNDIName no es nulo,
clientRerouteServerListJNDIName proporcionará las funciones siguientes:
Permite
conservar la información sobre servidores de redireccionamiento al pasar de una
JVM a otra
Proporciona
una ubicación de servidor alternativa si falla la primera conexión con la
fuente de datos
clientRerouteServerListJNDIContext
Especifica
el contexto de JNDI que se utiliza para la vinculación y la consulta de la
instancia de DB2ClientRerouteServerList. La propiedad
clientRerouteServerListJNDIContext es aplicable solamente a IBM Data Server
Driver para JDBC y SQLJ con conectividad de tipo 4, y a las conexiones que se
establecen mediante la interfaz DataSource.
Si
no se define clientRerouteServerListJNDIContext, IBM Data Server Driver para
JDBC y SQLJ creará un contexto inicial utilizando propiedades del sistema o el
archivo jndi.properties.
clientRerouteServerListJNDIContext
sólo se puede definir mediante el método siguiente:
public
void setClientRerouteServerListJNDIContext(javax.naming.Context registro)
commandTimeout
Especifica
el tiempo máximo en segundos que una aplicación que se ejecuta bajo IBM Data
Server Driver para JDBC y SQLJ espera para que se completen las operaciones de
SQL antes de que el controlador emita una SQLException. El tiempo de espera
incluye el tiempo para obtener un transporte, realizar la migración tras error
si es necesario, enviar la petición y esperar una respuesta. El tipo de datos
de este parámetro es int. El valor por omisión es 0, lo cual significa que no
hay tiempo de espera.
Si
se invoca el método java.sql.Statement.setQueryTimeout, el valor de tiempo de
espera de consulta que se establece a través de Statement.setQueryTimeout
altera temporalmente el valor commandTimeout.
commandTimeout aplica a la
ejecución de los métodos Statement, PreparedStatement y CallableStatement
execute, executeQuery y executeUpdate. commandTimeout también aplica al método
executeBatch si la propiedad queryTimeoutInterruptProcessingMode tiene el valor
INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET (2).
Ejemplos
Ejemplo básico de
MySQL con Java
Una vez instalado MySQL, descargado el driver para java de MySQL y con una base de datos
y una tabla creada en MySQL, vamos a hacer un pequeño programa
en java que nos permita conectarnos a la base de datos MySQL y consultar la
tabla que hemos creado.
Instalar el Driver
En nuestro programa java, todos los
import que necesitamos para manejar la base de datos están en java.sql.*.
Puesto que casi todas los métodos relativos a base de datos pueden lanzar la
excepción SQLException, meteremos todo nuestro programa en un try-catch.
Además, necesitamos la clase
org.gjt.mm.mysql.Driver que viene con el driver de MySQL. Por ello,
en nuestro CLASSPATH o incluido en nuestro proyecto con
nuestro IDE favorito, debemos incluir el jar que contiene el
driver MySQL (mysql-connector-java-3.1.7-bin.jar) o la
versión más moderna y compatible con la versión de nuestro servidor de MySQL.
Lo primero que tenemos que hacer es
asegurarnos que el Driver se inicializa y se registra, para ello
try
{
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e)
{
e.printStackTrace();
}
{
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e)
{
e.printStackTrace();
}
Establecer la
conexión con la base de datos
Debemos tener el servidor de MySQL arrancado.
Si hemos instalado y dejado esa opción como estaba, cada vez que encendamos el
ordenador, se arrancará el servidor de MySQL, por lo que no tenemos
que preocuparnos por ello.
El servidor de MySQL abre
por defecto el puerto 3306 para aceptar conexiones de posibles clientes, de
programas que quieran conectarse y acceder a la base de datos. Nuestro programa
java, si quiere consultar la tabla de base de datos que hemos creado, deberá
conectarse a este servidor.
Para establecer la conexion, la
clase DriverManager tiene métodos getConnection().
Usaremos uno de ellos
//
Establecemos la conexión con la base de datos.
Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/prueba","root", "la_clave");
Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/prueba","root", "la_clave");
El primer parámetro del método getConnection() es
un String que contiene la url de la base de datos:
- jdb:mysql porque estamos utilizando un driver jdbc
para MySQL, que es el que nos hemos bajado.
- localhost porque el servidor de base de datos, en
mi caso, está en el mismo ordenador en el que voy a correr el prorama
java. Aquí puede ponerse una IP o un nombre de máquina que esté en la red.
- prueba es el nombre de la base de datos que he
creado dentro de mysql. Se debe poner la base de datos dentro del servidor
de MySQL a la que se quiere uno conectar. Es el nombre
que pusimos cuando desde SQL hicimos create database prueba;
Los otros dos parámetros son dos String.
Corresponden al nombre de usuario y password para acceder a la base de datos.
Al instalar MySQL se crea el usuario root y se pide la
password para él. Como no hemos creado otros usuarios, usaremos este mismo.
Si todo va bien, en conexion tendremos
nuestra conexión a la base de datos.
Esta conexión es en realidad un socket entre java y la
base de datos, aunque para nosotros es transparente. Lo que sí es importante,
es saber que si varios hilos comparten esta conexión, deben usarla
sincronizadamente. Si no se hace así, los mensajes que van por el socket se
pueden entremezclar y los hilos pueden leer cachos de mensaje destinados al
otro hilo. Otra opción es que cada hilo cree su propia conexión. Finalmente, la
mejor opción de todas si nuestra aplicación va a tener varios hilos intentando
acceder a la base de datos, es usar un Pool de conexiones.
Realizar una consulta
Para realizar cualquier acción sobre la
base de datos (consulta, insertar nuevos registros, modificar los existentes o
borrar), necesitamos una clase Statement. Para obtenerla, se le
pide dicha clase a la conexión. La forma de hacerlo, para una consulta, es la
siguiente:
//
Preparamos la consulta
Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");
Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");
La parte de createStatement() no
tiene ningú secreto, salvo que puede lanzar una excepción que hay que capturar.
El Statement obtenido
tiene un método executeQuery(). Este método sirve para realizar una
consulta a base de datos.
- El parámetro que se pasa en un String en
el que está la consulta en lenguaje SQL. No hace falta terminarlo con
punto y coma. En nuestro caso "select * from persona".
siendo persona el nombre que hemos puesto a la tabla en
la base de datos.
- El resultado nos lo devuelve el método como
un ResultSet. Este ResultSet no es más que
una clase java similar a una lista en la que está el resultado de la
consulta. Cada elemento de la lista es uno de los registros de la base de
datos. En realidad, ResulSet no contiene todos los datos,
sino que los va consiguiendo de la base de datos según se van pidiendo. Por
ello, el método executeQuery() puede tardar poco, pero el
recorrer los elementos del ResultSet no es tan rápido. De
esta forma se evita que una consulta que dé muchos resultados tarde mucho
tiempo y llene la memoria del programa java.
Leer los resultados
El ResultSet contiene
dentro los registros leidos de la base de datos. Inicialmente, tal cual nos lo
devuelve el Statement.executeQuery(), tiene internamente un
"puntero" apuntando justo delante del primer registro. El
método next() del ResultSet hace que dicho
puntero avance al siguiente registro, en este caso, al primero. Si lo consigue,
el método next() devuelve true. Si no lo consigue
(no hay siguiente registro que leer), devuelve false.
Por tanto, una forma de ir leyendo los
registros en meternos en un while.
//
Recorremos el resultado, mientras haya registros para leer, y escribimos el
resultado en pantalla.
while (rs.next())
{
System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getDate(3));
}
while (rs.next())
{
System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getDate(3));
}
Una vez que el "puntero" está
apuntando a un registro, los métodos getInt(), getString(), getDate(),
etc nos van devolviendo los valores de los campos de dicho registro. Podemos
pasar a estos métodos un índice (que comienza en 1) para indicar qué columna de
la tabla de base de datos deseamos. También podemos usar un String con
el nombre de la columna (tal cual está en la tabla de base de datos).
Es responsabilidad nuestra saber qué
tipo de dato hay en cada columna, aunque si nos equivocamos y RecordSet es
capaz de hacer la conversión, la hará por nosotros. Por ejemplo, en cualquiera
de los campos anteriores podemos pedir un getString() y nos
devolveran los números como String y la fecha como String.
También podemos usar getObject(),
y el RecordSet nos devolverá el Object más
adecuado para el tipo de campo que pedimos.
Cerrar la conexión
Una vez que terminamos de usar la
conexión, se debería cerrar, o bien terminar el programa, con lo que se cierra
automáticamente.
//
Cerramos la conexion a la base de datos.
conexion.close();
Resumen
Open Database
Connectivity (ODBC) es una interface de aplicaciones (API) para acceder a datos
en sistemas gestores de bases de datos tanto relacionales como no relacionales,
utilizando para ello SQL (Lenguaje de Consulta Estructurado). Todas las
aplicaciones que soporten ODBC reconocerán una instrucción común de Lenguaje de
Consulta Estructurado (SQL). Las aplicaciones ODBC o aplicaciones cliente
envían peticiones a un servidor de bases de datos. El gestor del driver ODBC
determina qué fuente de datos usar y qué driver ODBC puede comunicar con esa
fuente de datos en particular. La petición se envía luego a través del driver
al servidor – normalmente una aplicación de base de datos. Esta base de datos
puede ser local, o en el mismo ordenador, o remota. Los datos solicitados se
devuelven a través del gestor del driver ODBC, entonces a la aplicación del
cliente. El lenguaje ODBC es una combinación de llamadas de función ODBC API y
lenguaje SQL. Antes de continuar, es útil conocer los siguientes términos: Sistema de Gestión de Bases de Datos (DBMS):
Aplicación que permite a los usuarios almacenar, procesar, y recuperar
información en una base de datos Fuente
de Datos (DSN): Los datos a los cuales quiere acceder (como a DBMS) e
información para localizar datos (como la ruta o dirección IP) Lenguaje de Consulta Estructurado (SQL): Un
lenguaje de programación estándar que controla e interactúa con una DBMS Aplicación Cliente: La aplicación que
solicita datos (mediante SQL) de una fuente de datos usando ODBC Query: Recuperación,
manipulación, o modificación de datos desde una fuente de datos enviando
instrucciones SQL Tabla: Recolección de
datos cuya estructura lógica es en forma de campos (atributos) y registros es
decir, columnas y filas. Driver o
controlador ODBC: Un fichero DLL, fichero conectado dinámicamente (Windows) que
envía una consulta SQL para acceder a datos almacenados en una base de datos y
entregar datos a la aplicación cliente
Summary
Open Database Connectivity (ODBC) is an application interface (API) for accessing data in both relational and non-relational database management systems using Structured Query Language (SQL). All applications that support ODBC will recognize a common Structured Query Language (SQL) statement. ODBC applications or client applications send requests to a database server. The ODBC driver determines which data source to use and which ODBC driver can communicate with that particular data source. The request is then sent via the driver to the server - usually a database application. This database can be local, or on the same computer, or remote. The requested data is returned through the ODBC driver manager, then to the client application. The ODBC language is a combination of ODBC API and SQL language function calls. Before proceeding, it is useful to know the following terms: Database Management System (DBMS): Application that allows users to store, process, and retrieve information in a database Data Source (DSN): Data to (such as DBMS) and information to locate data (such as the path or IP address) Structured Query Language (SQL): A standard programming language that controls and interacts with a DBMS Client Application: The application requesting data (using SQL) from a data source using ODBC Query: Retrieving, manipulating, or modifying data from a data source by sending SQL statements Table: Collecting data whose logical structure is in the form of fields (attributes) and records ie, columns and rows. Driver or ODBC driver: A DLL file, a dynamically connected file (Windows) that sends an SQL query to access data stored in a database and deliver data to the client application
Conclusiones
Una vez concluida la
implementación de la aplicación Bank, los problemas más
delicados estaban resueltos, pués se había conseguido, no sólo permitir la
comunicación entre procesos de diferentes grupos en un mismo canal, sino que
además, se había desarrollado un protocolo para transferencia cooperativa de
estado. Ahora el problema se reduce a aplicar técnicas de ingeniería del
software para obtener un modelo que, manteniendo la interfaz ofrecida por la
API JDBC, fuése capaz de dotar de replicación y tolerancia a fallos a
aplicaciones inicialmente no concebidas para soportar estas características.
Como resultado, se ha
desarrollado la API javagroups.sql, un nuevo conjunto de clases e interfaces que ofrecen al
usuario la posibilidad de convertir una aplicación centralizada de acceso a
bases de datos en una aplicación distribuida y tolerante a fallos. Dado que
esta nueva librería mantiene la interfaz ofrecida por la API JDBC (java.sql), el usuario podrá incorporar la nueva funcionalidad a sus
aplicaciones sin necesidad de realizar grandes modificaciones al código.
Aún no se ha mencionado
nada sobre la escalabilidad. Y es que el nuevo sistema permite aumentar el
número de servidores en activo sin necesidad de detener su funcionamiento, es
decir, continuará ofreciendo un servicio continuo incluso cuando se esté
transfiriendo el estado de la base de datos a una nueva réplica. Notar también
que la transferencia no se lleva a cabo desde un único servidor sino que
cooperan todos los servidores disponibles.
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.
Java con
Base Datos 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
Glosario de términos
Abstraction (abstracción)
|
Propiedad
y/o técnica de software que oculta los detalles de la implementación. Java
soporta abstracción de clases y abstracción de métodos. La abstracción de métodos se define
separando el uso de un método sin conocer como está implementado ese método.
Si decide combinar la implementación, el programa cliente será afectado. De
modo similar la abstracción de clases
oculta la implementación de la clase del cliente.
|
Acoplamiento (coupling)
|
Medida
del grado en el que un objeto o componente depende de otro. Bajo acoplamiento
minimiza las dependencias y es una indicación de un buen diseño
|
Agregación (aggregation)
|
Relación
en la que un objeto se compone o está construido de uno o más objetos, de
modo que la colección completa representa un todo. Las relaciones de
agregación se especifican entre clases y se reflejan en instancias de objetos
|
Algoritmo (algorithm)
|
Método
que describe cómo se resuelve un problema en término de las acciones que se
ejecutan y especifica el orden en que se ejecutan estas acciones. Los
algoritmos ayudan al programador a planificar un programa antes de su
escritura en un lenguaje de programación.
|
Ámbito de clase (scope
class)
|
Las
variables privadas definidas fuera
de los métodos internos a la clase
tienen ámbito de clase. Son accesibles desde todos los métodos del interior
de la clase, con independencia del rden en que están definidas. Los métodos
privados también tiene ámbito de clase.
|
Análisis (análysis)
|
Proceso
de identificación, modelado y descripción de lo que hace un sistema y de cómo
trabaja
|
Aplicación (application)
|
Programa
autónomo Java tal como cualquier programa escrito utilizando un lenguaje de
alto nivel. Las aplicaciones se pueden ejecutar desde cualquier computadora
con un interprete Java. Las aplicaciones no están sometidas a las
restricciones impuestas los applets de
|
Java.
Una clase aplicación debe contener un método main. Se utiliza como sinónimo de programa.
|
|
Applet
|
Tipo
especial de programa Java que se puede ejecutar (correr) directamente en un
navegador Web o en un visualizador applet.
A un applet se le imponen
diversas restricciones de seguridad. Por ejemplo, un applet no se puede ejecutar operaciones de entrada/salida en un
sistema de usuario y por consiguiente no puede leer o escribir archivos o
transmitir virus de computadora.
|
Argumento (argument)
|
Información
pasada a un método. Los argumentos se suelen llamar también parámetros.
Unmétodo que espera recibir argumentos debe contener una declaración de argumentos formales por cada argumento actual como parte de la cabecera
del mismo. Cuando se invoca a un método, los valores de los argumentos
actuales 8reales) se copia en los correspondientes argumentos formales. Vease parámetro actual (actual parameter).
|
Array (array,
vector, lista)
|
Objeto
contenedor que almacena una secuencia indexada de los mismos tipos de datos.
Normalmente los elementos individuales se referencian por el valor de un
índice. El índice es un valor entero que , suele comenzar, en 0 para el
primer elementos, 1 para el segundo y así sucesivamente.
|
Asignación (assignment)
|
Almacenamiento
de un valor en una variable. La sentencia de asignación es aquella que
implementa la asignación y utiliza un operador de asignación
|
Asociación (association)
|
Una
relación entre dos clases tales como una instancia de una clase referencia a
una instancia de otra clase.
|
Asociatividad (associativity)
|
Orden
en que se envalúan operadores de igual precedencia o prioridad dentro de una
expresión. La asociatividad por la izquierda produce una evaluación de
izquierda a derecha y la asociatividad por la derecha conduce a una
evaluación de derecha a izquierda.
|
AWT (ABSTRACT WINDOW TOOLKIT)
|
Colección
de clases (java.awt.*) que se utiliza para
implementar interfaces gráficas de usuario. Contiene componentes tales como
botones, etiquetas, campos de texto, áreas de texto, barras de
desplazamiento, cajas de verificación y menús. Las clases de AWT proporcionan
una interfaz independiente de la plataforma para desarrollo de programas
visuales e interfaces gráficas de usuario.
|
Biblioteca de clases (class library)
|
Colección
organizada de clases que proporciona un conjunto de componentes y
abstracciones reutilizables
|
Binario (binary)
|
Representación
numérica en base 2. En esta base sólo se utilizan los dígitos 0 y 1. Las
posiciones de los d´digitos representan potencias sucesivas de 2. Véase bit.
|
Binding (ligadura)
|
|
Bit
|
Dígito
binario que puede tomar dos valores posibles: 0 y 1. Los bits son elementos
básicos de construcción de programas y datos
|
Bloque (block)
|
Sentencias
y declaraciones encerradas entre una pareja de llaves (apertura y cierre, ´{´
y ´}´. Por ejemplo, un cuerpo
|
de una clase, es un bloque, al igual que el cuerpo de un método, Un bloque
delimita un nivel de ámbito.
|
|
Bolean (bolean,
lógico)
|
Tipos
primitivos de datos en Java. El tipo bolean puede tomar sólo dos valores: true (verdadero) y false (
falso ).
|
Bytecode (códigos
de byte)
|
Resultado
de la compilación del código fuente Java. La JVM (Java Virtual Machine)
interpreta los bytecodes con la
finalidad de ejecutar un programa Java. El bytecode es independiente de la máquina y se puede ejecutar en
cualquier máquina que tenga un entorno de ejecución. Los bytecodes se almacenan en archivos class
|
Cabecera de la clase
(class header)
|
Cabecera
de la definición de la clase. La cabecera proporciona un nombre a la clase y
define sus accesos. También describe si es una clase ampliada (extends) de una superclase o implementa
interfaces (
implements )
|
Clase (clase)
|
Colección
encapsulada de datos y operaciones que actúan sobre los datos. El concepto de
clase es fundamental en programación orientada a objetos. Una clase consta
demétodos y datos. Los métodos de una clase definen el conjunto de
operaciones permitidas sobre los datos de una clase (sus atributos). Una
clase puede tener muchas instancia de la clase u objetos.
|
bibliografia
https://es.wikipedia.org/wiki/Java_Database_Connectivity
http://www.chuidiang.org/java/mysql/EjemploJava.php
http://industry.java.sun.com/products/jdbc/drivers
acá les dejo un link de unas diapositivas de mi trabajo espero les guste.

No hay comentarios:
Publicar un comentario