Ud8 Programacion
Ud8 Programacion
RELACIONALES
2
RESUMEN INTRODUCTORIO
INTRODUCCIÓN
CASO INTRODUCTORIO
3
- Será capaz de realizar la conexión con distintos tipos de bases de
datos gracias a la API JDBC.
- Conocerá los tipos de drivers JDBC existentes.
- Realizará consultas y modificaciones sobre bases de datos utilizando
la API JDBC.
4
1. INTRODUCCIÓN
5
ENLACE DE INTERÉS
6
2. CONEXIÓN CON BASES DE DATOS
RELACIONALES. CARACTERÍSTICAS, TIPOS Y
MÉTODOS DE ACCESO
7
Entender cómo se construyen los drivers y cuáles son sus limitaciones, nos
ayudará a decidir qué driver es el más apropiado para cada aplicación.
8
2.1.1 Ventajas
Por supuesto, puede ser el único modo de acceder a algunas bases de datos
de escritorio, como MS Access, dBase y Paradox.
2.1.2 Desventajas
9
utilización de applets en un entorno de Intranet se pierde, debido a
los problemas de despliegue que conllevan las aplicaciones
tradicionales.
- La mayoría de los navegadores no tienen soporte nativo del puente.
Como el puente es un componente opcional del Java SDK Standard
Edition, no se ofrece con el navegador. Incluso si fuese ofrecido, sólo
los applets de confianza (aquellos que permiten escribir en archivos)
serán capaces de utilizar el puente. Esto es necesario para preservar
la seguridad de los applet. Para terminar, incluso si el applet es de
confianza, ODBC debe ser configurado en cada máquina cliente.
10
2.2.1 Ventajas
ENLACE DE INTERÉS
• DriversJDBC
2.2.2 Desventajas
VIDEO DE INTERÉS
11
2.3 Tipo 3: driver protocolo de red/todo Java
12
ENLACE DE INTERÉS
2.3.1 Ventajas
Los drivers de tipo 3 son los que mejor funcionan en redes basadas en
Internet o Intranet, aplicaciones intensivas de datos, en las que un gran
número de operaciones concurrentes como consultas, búsquedas, etc., son
previsibles y escalables y su rendimiento es su principal factor. Hay muchas
oportunidades de optimizar la portabilidad, el rendimiento y la escalabilidad.
El protocolo de red puede estar diseñado para hacer el driver JDBC cliente
muy pequeño y rápido de iniciar, lo que es perfecto para el despliegue
de aplicaciones de Internet.
2.3.2 Inconvenientes
13
2.4 Tipo 4: driver protocolo nativo/todo Java
ARTÍCULO DE INTERÉS
2.4.1 Ventajas
Como los drivers JDBC de tipo 4 no tienen que traducir las solicitudes de
ODBC o de una interfaz de conectividad nativa, o pasar la solicitud a otro
servidor, el rendimiento es bastante bueno. Además, el driver protocolo
nativo/todo Java da lugar a un mejor rendimiento que los de tipo 1 y 2.
14
2.4.2 Desventajas
Con los drivers de tipo 4, el usuario necesita un driver distinto para cada
base de datos.
ENLACE DE INTERÉS
15
3. ESTABLECIMIENTO DE CONEXIONES.
COMPONENTES DE ACCESO A DATOS
La noción de una URL en JDBC es muy similar al modo típico de utilizar las
URL. Las 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>
16
• 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
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.
ENLACE DE INTERÉS
• Aplicación de ejemplo
17
El enfoque JDBC para el registro de un driver de base de datos puede
parecer oscuro al principio. Fíjese en el siguiente fragmento de código que
carga el driver de base de datos de MySQL:
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// Driver no encontrado
}
ENLACE DE INTERÉS
• Class DriverManager
18
Exista o no una conexión física, el objeto de conexión es el único objeto que
utiliza una conexión para comunicar con la base de datos. Toda
comunicación debe tener lugar dentro del contexto de una o más
conexiones.
La tercera variante toma como argumentos además del URL, el nombre del
usuario y la contraseña.
19
EJEMPLO PRÁCTICO
Observe que todos estos métodos están sincronizados, lo que supone que
sólo puede haber un hilo accediendo a los mismos en cada momento. Estos
métodos lanzan una excepción SQLException si el driver no consigue
obtener una conexión.
20
4. RECUPERACIÓN DE INFORMACIÓN.
SELECCIÓN DE REGISTROS. USO DE
PARÁMETROS
- getBoolean()
- getInt()
- getShort()
- getByte()
- getDate()
- getDouble()
- getfloat()
Para los ejemplos que se van a ver a partir de este punto, se va a usar la
tabla bank. La estructura de la tabla se puede ver en la siguiente imagen:
21
En la clase CreateTableBank, se crea un nuevo método queryAll() que
recupere todos los datos de la tabla bank.
EJEMPLO PRÁCTICO
- getTableName()
- getColumnCount()
- getColumnName()
- getColumnType()
22
Conocido el número de columnas, se puede obtener la información de tipo
asociada a cada una de ellas.
ENLACE DE INTERÉS
• ResultSet
EJEMPLO PRÁCTICO
23
5. MANIPULACIÓN DE LA INFORMACIÓN.
ALTAS, BAJAS Y MODIFICACIONES.
EJECUCIÓN DE CONSULTAS SOBRE LA BASE DE
DATOS
Antes de poder ejecutar una sentencia SQL, es necesario obtener un objeto
de tipo Statement. Una vez creado dicho objeto, podrá ser utilizado para
ejecutar cualquier operación contra la base de datos.
ENLACE DE INTERÉS
• Interface Statement
Para crear la tabla bank, hay que ilustrar el API JDBC y así se considerará la
clase CreateTableBank. Esta clase ofrece los métodos initialize() y
close() para establecer y liberar una conexión con la base de datos.
24
El método createTableBank crea la tabla bank, utilizando para ello un objeto
de tipo Statement. Sin embargo, dado que el método executeUpdate()
ejecuta una sentencia SQL de tipo CREATE TABLE, ésta no actualiza ningún
registro de la base de datos y por ello este método devuelve cero. En caso
de ejecutar una sentencia de tipo INSERT, UPDATE o DELETE, el método
devolvería el número de filas que resultasen afectadas por el cambio.
EJEMPLO PRÁCTICO
Clase CreateTableBank
25
Una vez creada la tabla bank, el siguiente paso podría ser la introducción en
la misma de los datos de los clientes. Si dichos datos están disponibles en
un fichero, el código para leerlos e introducirlos en la base de datos sería
como uno de los ejemplos prácticos.
EJEMPLO PRÁCTICO
Método insertData():
El formato del archivo de entrada es: nombre del cliente, clave de acceso y
saldo, introducidos en líneas separadas, y seguidos de una línea separatoria
como se muestra a continuación:
Root
1000000
--------------------------
26
En el código anterior, la única sentencia relevante es el método
statement.executeUpdate(), invocado para insertar datos en la tabla bank
(dicho método devuelve el número de registros insertados).
27
RESUMEN FINAL
28