Bases de datos y JDBC



Documentos relacionados
Programación Orientada a Objetos II. La Plataforma JDBC

10. JDBC. 10. JDBC Introducción. java.sql

NORMAS PARA LA ENTREGA DE LOS LABORATORIOS

Acceso a BD desde Java. JDBC

Acceso a BDs en Java: JDBC

JDBC: Java DataBase Conectivity

Universidad Don Bosco. Materia: Programación Orientada a Objetos Contenido: Modificadores de Acceso y JDBC

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS

JDBC. Una mini-introducci. introducción

Java y MySQL. Ciclo de ejecución

Desarrollo de Software con

Base de Datos JDBC. Unidad: 1 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

JDBC. Francisco Javier Solans Benedí Software Developper

Practica 11: Conexión de Java con Bases de datos Access

Taller de Programación II J2EE

Acceso a bases de datos MySQL con PHP

Base de Datos JDBC. Unidad: 1 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Bases de Datos Introducción a la Conectividad de

Guía práctica de introducción básica a JDBC

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

Arquitectura J2EE para aplicaciones web. Aplicaciones web con JSP. Arquitectura J2EE: Capa de Acceso Web. Arquitectura J2EE: Capa Cliente

JDBC: EL PUENTE ENTRE JAVA Y LAS BASES DE DATOS. En este articulo se expone la API JDBC (Java DataBase Connetivity), la cual permite el

MySQL y Sesiones en PHP. Área de Ingeniería Telemática

JDBC. Aplicaciones Distribuidas

Laboratorios de BASES DE DATOS. (I.T. Informática)

APÉNDICE SQL (Structures Query Language)

Bases de Datos: Structured Query Language (SQL)

SQL (Structured Query Language)

Base de datos relacional

Referencia SQL en la versión de HUGOSQL White Paper por: HUGOSQL 2012

Federico Peinado

Programación Orientada a Objetos Analista Programador Universitario Plan 2008 Año 2010

Práctica 2 ACCESO A BASES DE DATOS CON JDBC. 1. Creación de una base de datos en MySQL...1

Bases de Datos usando Java : JDBC. Ing. César Julio Bustacara Medina

Establecer una conexión con una base de datos o acceder a cualquier fuente de datos tabular Enviar enunciados SQL. Procesar los resultados

[CASI v.0110] Pág. 1

ADMINISTRACIÓN DE BASE DE DATOS

A.1. Definiciones de datos en SQL

Introducción a los Sistemas de Gestión de Bases de Datos

APÉNDICE A: ACCESO A UNA BASE DE DATOS CON JDBC

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

MySQL con Java en MS Windows

Bases de Datos 2. Teórico

JDBC Julio Introducción JDBC Arquitecturas típicas con JDBC... 3

INTRODUCCIÓN. El objetivo de este manual es la identificación de los procesos técnicos más

DEPARTAMENTO: Computación y diseño NOMBRE DEL CURSO: Base de datos I CLAVE: ACADEMIA A LA QUE PERTENECE: Base de datos I

m046a Curso Consultando SQL Server 2005/2008 con Transact-SQL, 15 h

Introducción a las bases de datos.

Tópicos Avanzados de Programación (TAP3501)

SERVICIO NACIONAL DE APRENDIZAJE SENA

Universidad Nacional de Luján Departamento de Ciencias Básicas Programación III

T12 Vistas y tablas temporales

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

MANUALITO MS-SQL SERVER

Base de datos Lenguaje SQL

PROGRAMACIÓN CON ACCESO A DATOS

Formato para prácticas de laboratorio

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

Laboratorio de Programación III

BASE DE DATOS RELACIONALES

Notas técnicas de JAVA - Tip en detalle Nro. 2

UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERIA DEPARTAMENTO DE COMPUTACIÓN DESARROLLO DE SOFTWARE PARA CONTROL DE INVENTARIO

Conceptos Avanzados de Bases de datos

MSSQL Server Java

Asignaturas, profesores, alumnos. Profesores, grupos, asignaturas, aulas

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

Repaso de Conceptos Básicos de Bases de Datos

INSTITUCIÓN EDUCATIVA GABRIEL GARCIA MÁRQUEZ BASE DE DATOS. DESARROLLO DE SOFTWARE Página 1 de 28 SQL SQL

Software de Comunicaciones (2) Manual de Usuario Consola

Patrones para persistencia (I) Ingeniería del Software II

Ingeniería del Software II. Curso 2003/2004. Enunciado de la práctica del Segundo parcial.

Acceso a bases de datos desde Java: JDBC

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Oracle 12c DISEÑO Y PROGRAMACIÓN

Tema 2 Modelos de Base de Datos. Profesor Luis Gmo. Zúñiga Mendoza UMCA

Tema: MAPEO OBJETO RELACIONAL (ORM) - ADODB

Práctica sobre compartición de instancias remotas.

Registro y Comunicación Automatizada a Bases de Datos

DESCRIPCIÓN ESPECÍFICA NÚCLEO: Núcleo Sector Comercio y Servicios.

Introducción a JDBC - Base de datos con Java

GUÍA DE TRABAJO GRADO 11. Articulación SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

%& %)& '$!%*+ $, %%%&$ %%

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

8283: Administración y programación en Microsoft SQL Server 2012

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Bases de Datos. Sistemas de Gestión de Bases de Datos

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

Guía práctica de SQL

Acceso a bases de datos desde Java: JDBC

UNIVERSIDAD DISTRITAL FRANCSICO JOSE DE CALDAS FACULTAD DE INGENIERIA INGENIERIA DE SISTEMAS PROGRAMACION AVANZADA TALLER DE CONEXIÓN A BASES DE DATOS

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Bases de Datos 3º Informática de Sistemas

IWG-101: Introducción a la Ingeniería. Departamento de Informática, UTFSM 1

Bases de datos relacionales y el modelo entidad-relación

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO ESCUELA DE INGENIERIA EN SISTEMAS

Técnicas de Programación

Transcripción:

Bases de datos y JDBC Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es

Bases de datos Una base de datos (DB) es una colección de datos interrelacionados, pertenecientes a un mismo contexto, y almacenados sistemáticamente para su posterior uso. Un sistema gestor de bases de datos (DBMS) es un programa que almacena y accede a la información contenida en las bases de datos. Una base de datos modela la información sobre ciertas entidades, y sobre relaciones entre las mismas. 2

Contenidos Bases de datos relacionales Sistemas gestores de bases de datos Acceso a bases de datos Consultas SQL Acceso a bases de datos con JDBC 3

Entidades Estudiante Asignatura 4

Entidades Nombre Apellidos DNI Atributos Estudiante Teléfonos Fecha Nacimiento Código Nombre Asignatura Grupos Créditos 5

Relaciones Nombre Apellidos DNI Estudiante Matriculado Teléfonos Fecha Nacimiento Código Nombre Asignatura Grupos Créditos 6

Relaciones Nombre Apellidos DNI Grupo Estudiante Matriculado Teléfonos Fecha Nacimiento Código Nombre Asignatura Grupos Créditos 7

Relaciones Nombre Apellidos DNI Grupo Estudiante 0..* Matriculado Teléfonos Fecha Nacimiento Código 0..* Nombre Relaciones: Uno a uno Uno a varios Varios a varios. Grupos Asignatura Créditos 8

Bases de datos relacionales Modelos de bases de datos: Relacionales. Jerárquicos. Orientado a objetos. etc. El modelo relacional de base de datos es el más usado en la actualidad. Se basa en la idea de relación, considerada como un conjunto de tuplas. Cada relación es una tabla con filas (registros) y columnas (atributos) 9

Bases de datos relacionales Estudiante DNI Nombre Apellidos Fecha Nac. Teléfonos 12345673V Ricardo Fernández Aguinaga 20/04/1980 912421124 617293744 82122314X Luis Díaz Castro 25/04/1978 913111564............... Asignatura Código Nombre Créditos Grupos 101 Álgebra 15 A,B,C 102 Funciones de una variable 12 A,B,C............ 10

Bases de datos relacionales Matriculado DNI Estudiante Cod. Asignatura Grupo 12345673V 101 A 12345673V 102 A 82122314X 101 B......... 11

Atomicidad Las columnas sólo pueden tener valores atómicos. En particular: No podemos tener una lista de números de teléfono dentro de una celda de la tabla de estudiantes. No podemos tener una lista de grupos dentro de una celda de la tabla de asignaturas. Estas restricciones pueden solventarse mediante la creación de relaciones adicionales. 12

Atomicidad DNI Nombre Apellidos Fecha Nac. Teléfonos 12345673V Ricardo Fernández Aguinaga 20/04/1980 912421124 617293744 82122314X Luis Díaz Castro 25/04/1978 913111564............... DNI Nombre Apellidos Fecha Nac. Teléfonos 12345673V Ricardo Fernández Aguinaga 20/04/1980 912421124 12345673V Ricardo Fernández Aguinaga 20/04/1980 617293744 82122314X Luis Díaz Castro 25/04/1978 913111564............... Redundancia 13

Atomicidad DNI Nombre Apellidos Fecha Nac. Teléfonos 12345673V Ricardo Fernández Aguinaga 20/04/1980 912421124 617293744 82122314X Luis Díaz Castro 25/04/1978 913111564............... DNI Nombre Apellidos Fecha Nac. 12345673V Ricardo Fernández Aguinaga 20/04/1980 82122314X Luis Díaz Castro 25/04/1978............ DNI Teléfono 12345673V 912421124 12345673V 617293744 82122314X 913111564...... 14

Atomicidad Código Nombre Créditos Grupos 101 Álgebra 15 A,B,C 102 Funciones de una variable 12 A,B,C............ Código Nombre Créditos 101 Álgebra 15 102 Funciones de una variable 12......... Código Grupo 101 A 101 B 101 C 102 A 102 B 102 C...... 15

Bases de datos relacionales El modelo relacional de nuestra base de datos quedaría: Estudiante(DNI, Nombre, Apellido, FechaNac) Asignatura(Codigo, Nombre, NumCreditos) Matriculado(DNIEstud, CodigoAsig, Grupo) TieneTlf(DNIEstud, Telefono) TieneGrupo(CodigoAsig, Grupo) 16

Claves Las claves de una tabla es el conjunto de campos que identifican unívocamente a cada registro de la tabla. Debe tener siempre un valor en cada registro. El valor debe permanecer inalterable. No pueden existir dos registros dentro de la misma tabla con la misma clave. 17

Claves Las claves de cada tabla se representan mediante el subrayado en el modelo relacional. Estudiante(DNI, Nombre, Apellido, FechaNac) Asignatura(Codigo, Nombre, NumCreditos) Matriculado(DNIEstud, CodigoAsig, Grupo) TieneTlf(DNIEstud, Telefono) TieneGrupo(CodigoAsig, Grupo) 18

Claves Una clave externa es la representación de la clave de una tabla en otra. Estudiante(DNI, Nombre, Apellido, FechaNac) Asignatura(Codigo, Nombre, NumCreditos) Matriculado(DNIEstud, CodigoAsig, Grupo) TieneTlf(DNIEstud, Telefono) TieneGrupo(CodigoAsig, Grupo) 19

Contenidos Bases de datos relacionales Sistemas gestores de bases de datos Acceso a bases de datos Consultas SQL Acceso a bases de datos con JDBC 20

Gestores de bases de datos Existe una gran cantidad de gestores de bases de datos relacionales. Oracle Microsoft SQL Server Microsoft Access MySQL PostgreSQL 21

Gestores de bases de datos Aplicación Consultas Modificaciones DBMS Datos Lenguaje SQL Programador 22

Lenguaje SQL SQL (Structured Query Language) Es un lenguaje declarativo de acceso a bases de datos relacionales. DDL (Data definition language) Modificación de la estructura de la base de datos. Creación de tablas. DML (Data manipulation language) Consulta, inserción, y eliminación de registros dentro de una tabla. 23

Contenidos Bases de datos relacionales Sistemas gestores de bases de datos Acceso a bases de datos Consultas SQL Acceso a bases de datos con JDBC 24

Acceso a bases de datos Desde Java: JDBC + driver MySQL Aplicación Programador Consola de MySQL. Herramienta gráfica (phpmyadmin) 25

Herramienta phpmyadmin Interfaz web para MySQL. Situada en http://dalila.sip.ucm.es/phpmyadmin Nombre de usuario y contraseña: Pregunta al profesor! 26

Herramienta phpmyadmin Lista de bases de datos 27

Crear tablas 28

Tipos de datos CHAR(Longitud) BIGINT VARCHAR(Longitud) FLOAT TINYTEXT DOUBLE TEXT DECIMAL MEDIUMTEXT DATE TINYINT DATETIME SMALLINT TIMESTAMP MEDIUMINT TIME INT ENUM 29

Insertar registros en una tabla 30

Contenidos Bases de datos relacionales Sistemas gestores de bases de datos Acceso a bases de datos Consultas SQL Acceso a bases de datos con JDBC 31

Consultas en SQL Obtener todas las filas y columnas de una tabla. SELECT * FROM Estudiantes DNI Nombre Apellidos FechaNac 12345673V Ricardo Fernández Aguinaga 1980-04-25 82122314X Luis Díaz Castro 1978-04-15 20358182T Marta Domínguez Iborra 1975-12-21 29377172M Roberto Blanco Rodrigo 1981-12-22 45219913T Marta Díaz Agrela 1983-01-20 40231491M Martín Montes Di Cesare 1979-03-15 23195991S Sandra González de Castro 1982-11-21 29918481X Francisca Montes Trujillo 1907-10-19 32

Consultas en SQL Obtener ciertas columnas de una tabla SELECT DNI, Nombre FROM Estudiantes DNI 12345673V 82122314X 20358182T 29377172M 45219913T 40231491M 23195991S 29918481X Nombre Ricardo Luis Marta Roberto Laura Martín Sandra Francisca 33

Consultas en SQL Imponer condiciones a las filas resultado. SELECT DNI, Nombre, Apellidos FROM Estudiantes WHERE Nombre = 'Marta' DNI Nombre Apellidos 20358182T Marta Domínguez Iborra 45219913T Marta Díaz Agrela 34

Consultas en SQL Imponer condiciones a las filas resultado. SELECT DNI, Nombre, Apellidos FROM Estudiantes WHERE FechaNac >= '1980-01-01' AND FechaNac < '1990-01-01' DNI Nombre Apellidos 12345673V Ricardo Fernández Aguinaga 29377172M Roberto Blanco Rodrigo 45219913T Marta Díaz Agrela 23195991S Sandra González de Castro 35

Consultas en SQL Imponer condiciones a las filas resultado. SELECT DNI, Nombre, Apellidos FROM Estudiantes WHERE FechaNac BETWEEN '1980-01-01' AND '1990-01-01' DNI Nombre Apellidos 12345673V Ricardo Fernández Aguinaga 29377172M Roberto Blanco Rodrigo 45219913T Marta Díaz Agrela 23195991S Sandra González de Castro 36

Consultas en SQL Imponer condiciones a las filas resultado. SELECT DNI, Nombre, Apellidos FROM Estudiantes WHERE Apellidos LIKE 'D%' DNI Nombre Apellidos FechaNac 82122314X Luis Díaz Castro 1978-04-15 20358182T Marta Domínguez Iborra 1975-12-21 45219913T Marta Díaz Agrela 1983-01-20 37

Consultas en SQL Imponer condiciones a las filas resultado. SELECT DNI, Nombre, Apellidos FROM Estudiantes WHERE Apellidos LIKE 'D%' DNI Nombre Apellidos FechaNac 82122314X Luis Díaz Castro 1978-04-15 20358182T Marta Domínguez Iborra 1975-12-21 45219913T Marta Díaz Agrela 1983-01-20 38

Consultas en SQL Producto cartesiano SELECT DNI, Apellidos, DNIEstud, CodigoAsig FROM Estudiantes, Matriculado DNI Apellidos DNIEstud CodigoAsig 12345673V Fernández Aguinaga 12345673V 803261 12345673V Fernández Aguinaga 12345673V 803265 12345673V Fernández Aguinaga 12345673V 803262 12345673V Fernández Aguinaga 29377172M 803265 12345673V Fernández Aguinaga 29377172M 803261 12345673V Fernández Aguinaga 23195991S 803261 82122314X Díaz Castro 12345673V 803261 82122314X Díaz Castro 12345673V 803265 39

Consultas en SQL Producto cartesiano SELECT DNI, Apellidos, DNIEstud, CodigoAsig FROM Estudiantes, Matriculado WHERE DNI = DNIEstud DNI Apellidos DNIEstud CodigoAsig 12345673V Fernández Aguinaga 12345673V 803261 12345673V Fernández Aguinaga 12345673V 803265 12345673V Fernández Aguinaga 12345673V 803262 29377172M Blanco Rodrigo 29377172M 803265 29377172M Blanco Rodrigo 29377172M 803265 23195991S González de Castro 23195991S 803261 40

Consultas en SQL Producto cartesiano SELECT Estudiantes.DNI, Estudiantes.Apellidos, Matriculado.CodigoAsig FROM Estudiantes, Matriculado WHERE Estudiantes.DNI = Matriculado.DNIEstud DNI Apellidos CodigoAsig 12345673V Fernández Aguinaga 803261 12345673V Fernández Aguinaga 803265 12345673V Fernández Aguinaga 803262 29377172M Blanco Rodrigo 803265 29377172M Blanco Rodrigo 803265 23195991S González de Castro 803261 41

Consultas en SQL Uso de funciones SELECT Estudiantes.DNI, Estudiantes.Apellidos, LENGTH(Asignaturas.Nombre) FROM Estudiantes, Matriculado, Asignaturas WHERE Estudiantes.DNI = Matriculado.DNIEstud AND Asignaturas.Codigo = Matriculado.CodigoAsig DNI Apellidos LENGTH(Nombre) 12345673V Fernández Aguinaga 41 12345673V Fernández Aguinaga 36 12345673V Fernández Aguinaga 27 29377172M Blanco Rodrigo 41 29377172M Blanco Rodrigo 27 23195991S González de Castro 41 42

Consultas en SQL Renombramientos de columnas SELECT Estudiantes.DNI, Estudiantes.Apellidos, LENGTH(Asignaturas.Nombre) AS Longitud FROM Estudiantes, Matriculado, Asignaturas WHERE Estudiantes.DNI = Matriculado.DNIEstud AND Asignaturas.Codigo = Matriculado.CodigoAsig DNI Apellidos Longitud 12345673V Fernández Aguinaga 41 12345673V Fernández Aguinaga 36 12345673V Fernández Aguinaga 27 29377172M Blanco Rodrigo 41 29377172M Blanco Rodrigo 27 23195991S González de Castro 41 43

Funciones de SQL Cadenas Fechas/Horas LENGTH(col) HOUR(col) LEFT(col,n) MINUTE(col) RIGHT(col,n) SECOND(col) TRIM(col) DAYNAME(col) UPPER(col) CURDATE() LOWER(col) NOW() SUBSTRING(col,ini,fin) 44

Consultas en SQL Agrupamientos SELECT DNIEstud, CodigoAsig FROM Matriculado DNIEstud CodigoAsig 12345673V 803261 12345673V 803265 12345673V 803262 29377172M 803265 29377172M 803261 23195991S 803261 45

Consultas en SQL Agrupamientos SELECT COUNT(*) AS NumAls, CodigoAsig FROM Matriculado GROUP BY DNIEstud NumAls CodigoAsig 3 803261 2 803265 1 803262 46

Funciones de agrupamiento MIN(col) MAX(col) SUM(col) COUNT(col) AVG(col) 47

Consultas en SQL Agrupamientos + Condiciones SELECT COUNT(*) AS NumAls, CodigoAsig FROM Matriculado GROUP BY DNIEstud HAVING COUNT(*) >= 3 NumAls CodigoAsig 3 803261 48

Inserciones en SQL INSERT INTO Estudiantes (DNI, Nombre, Apellidos, FechaNac) VALUES ('12314561F', 'Carolina', 'Rodriguez Yagüe', '1983-05-20') DNI Nombre Apellidos FechaNac 12345673V Ricardo Fernández Aguinaga 1980-04-25 82122314X Luis Díaz Castro 1978-04-15 20358182T Marta Domínguez Iborra 1975-12-21 29377172M Roberto Blanco Rodrigo 1981-12-22 45219913T Marta Díaz Agrela 1983-01-20 40231491M Martín Montes Di Cesare 1979-03-15 23195991S Sandra González de Castro 1982-11-21 29918481X Francisca Montes Trujillo 1907-10-19 12314561F Carolina Rodríguez Yagüe 1983-05-20 49

Actualizaciones en SQL UPDATE Estudiantes SET Nombre='Javier' WHERE DNI='82122314X' Si no se especifica cláusula WHERE, se actualizarán todas las filas. DNI Nombre Apellidos FechaNac 12345673V Ricardo Fernández Aguinaga 1980-04-25 82122314X Javier Díaz Castro 1978-04-15 20358182T Marta Domínguez Iborra 1975-12-21 29377172M Roberto Blanco Rodrigo 1981-12-22 45219913T Marta Díaz Agrela 1983-01-20 40231491M Martín Montes Di Cesare 1979-03-15 23195991S Sandra González de Castro 1982-11-21 29918481X Francisca Montes Trujillo 1907-10-19 12314561F Carolina Rodríguez Yagüe 1983-05-20 50

Borrar registros en SQL DELETE FROM Estudiantes WHERE FechaNac BETWEEN '1980-01-01' AND '1990-01-01' Si no se especifica cláusula WHERE, se borrarán todas las filas. DNI Nombre Apellidos FechaNac 12345673V Ricardo Fernández Aguinaga 1980-04-25 82122314X Javier Díaz Castro 1978-04-15 20358182T Marta Domínguez Iborra 1975-12-21 29377172M Roberto Blanco Rodrigo 1981-12-22 45219913T Marta Díaz Agrela 1983-01-20 40231491M Martín Montes Di Cesare 1979-03-15 23195991S Sandra González de Castro 1982-11-21 29918481X Francisca Montes Trujillo 1907-10-19 12314561F Carolina Rodríguez Yagüe 1983-05-20 51

Contenidos Bases de datos relacionales Sistemas gestores de bases de datos Acceso a bases de datos Consultas SQL Acceso a bases de datos con JDBC 52

JDBC JDBC: Java Database Connectivity Paquete java.sql API de acceso a bases de datos desde Java. Interfaz independiente del sistema gestor de base de datos (DBMS) que se utilice. Cada DBMS con soporte para JDBC proporciona un driver que implementa esa interfaz. MySQL http://dev.mysql.com/downloads/connector/j/ 53

Instalación Extraer mysql-connector-java-5.1.20-bin.jar Desde BlueJ: Tools Preferences Pestaña Libraries Botón Add Seleccionar el archivo.jar Requiere reiniciar la JVM Tools Reset Java Virtual Machine 54

URL de una base de datos Se utiliza para especificar a qué base de datos acceder, qué driver utilizar, y en qué servidor se encuentra el gestor de bases de datos. Subprotocolo BD jdbc:mysql://dalila.sip.ucm.es/alumnojsw1 Protocolo Servidor jdbc:mysql://localhost/alumnojsw1 55

La clase Connection Sus instancias representan conexiones a una base de datos. Se construye mediante el método estático getconnection de la clase DriverManager. static Connection getconnection(string url, String nombre, String passwd) 56

Ejemplo public class ConsultaSQL { static final String DATABASE_URL = "jdbc:mysql://dalila.sip.ucm.es/alumnojsw1"; static final String USER = "AlumnoJSW1"; static final String PASSWORD = "jsw1"; } public static void main(string[] args) { } Connection con = null; try { con = DriverManager.getConnection(DATABASE_URL, USER, PASSWORD); System.out.println( Conexión creada correctamente ); } catch(sqlexception e) { e.printstacktrace(); } finally { try { con.close(); } catch (Exception e) { e.printstacktrace(); } } 57

La clase Statement Los objetos de la clase Connection pueden crear objetos de la clase Statement. Statement createstatement() Los objetos Statement también han de cerrarse mediante su método close() Statement st = null; try { con = DriverManager.getConnection(DATABASE_URL, USER, PASSWORD); st = con.createstatement(); } catch(sqlexception e) { } finally { try { st.close(); con.close(); } catch (Exception e) { e.printstacktrace(); } } 58

Ejecutar consultas Las consultas a la base de datos se realizan mediante el método executequery de la clase Statement. ResultSet executequery(string sql) Devuelve un objeto de la clase ResultSet, que permite iterar sobre los resultados de la consulta. boolean next() int getint(int indicecol) int getint(string nombrecol) String getstring(int indicecol) String getstring(string nombrecol) Date getdate(int indicecol) Date getdate(string nombrecol) void close() 59

Ejemplo public class ConsultaSQL { static final String DATABASE_URL = "jdbc:mysql://dalila.sip.ucm.es/alumnojsw1"; static final String USER = "AlumnoJSW1"; static final String PASSWORD = "jsw1"; public static void main(string[] args) { Connection con = null; Statement st = null; ResultSet rs = null; try { con = DriverManager.getConnection(DATABASE_URL, USER, PASSWORD); st = con.createstatement(); rs = st.executequery( "SELECT DNI, Nombre, Apellidos, FechaNac FROM Estudiantes"); while (rs.next()) { System.out.println("DNI: " + rs.getint(1)); System.out.println("Nombre: " + rs.getstring(2)); System.out.println("Apellidos: " + rs.getstring(3)); System.out.println("FechaNac: " + rs.getdate(4)); System.out.println("-----------------------------------------"); } 60

Ejemplo } } } catch(sqlexception e) { e.printstacktrace(); } finally { try { rs.close(); st.close(); con.close(); } catch (Exception e) { e.printstacktrace(); } } 61

Actualizar una BD Para realizar modificaciones a una tabla de la base de datos (INSERT, UPDATE o DELETE), se utiliza el método executeupdate de la clase Statement. int executeupdate(string sql) 62

Ejemplo try { con = DriverManager.getConnection(DATABASE_URL, USER, PASSWORD); st = con.createstatement(); st.executeupdate("insert INTO Estudiantes (DNI, Nombre, Apellidos, FechaNac)" + "VALUES (\'99999999X\', \'Nueva\', \'Persona\', \'20100910\')"); } catch(sqlexception e) { e.printstacktrace(); } finally { try { st.close(); con.close(); } catch (Exception e) { e.printstacktrace(); } INSERT INTO Estudiantes (DNI, Nombre, Apellidos, FechaNac) VALUES ('99999999X', 'Nueva', 'Persona', '20100910') 63

Consultas paramétricas Son consultas con marcadores (placeholders), donde se pueden colocar elementos en tiempo de ejecución. SELECT Dni, Nombre, Apellidos, FechaNac FROM Estudiantes WHERE DNI =? Se manejan con los métodos de la clase PreparedStatement 64

Ejemplo Connection con = null; PreparedStatement pst = null; ResultSet rs = null; Scanner sc = new Scanner(System.in); System.out.print("Dime el número de DNI: "); int dni = sc.nextint(); try { con = DriverManager.getConnection(DATABASE_URL, USER, PASSWORD); pst = con.preparestatement( "SELECT DNI, Nombre, Apellidos, FechaNac FROM Estudiantes WHERE DNI =?" ); pst.setint(1, dni); rs = pst.executequery(); if (rs.next()) { System.out.println("DNI: " + rs.getint(1)); System.out.println("Nombre: " + rs.getstring(2)); System.out.println("Apellidos: " + rs.getstring(3)); System.out.println("FechaNac: " + rs.getdate(4)); } else { System.out.println("No se han encontrado entradas"); } } catch ( ) { } 65

Referencias L. Ullman MySQL. Guía de Aprendizaje. Prentice Hall A. Silberschatz, H. F. Korth, S. Sudarshan Fundamentos de Bases de Datos (5ª Edición) McGraw Hill P. Deitel, H. Deitel Java. How to Program (9th Edition) Cap. 28 66