SlideShare una empresa de Scribd logo
1 de 58
Descargar para leer sin conexión
Bases de Datos en JAVA
    Introducción a JDBC




               Carlos Hernando Carasol
                   chernando@acm.org
                    10 de Mayo de 2011
Índice de contenidos
 Motivación del uso de Bases de Datos
 Introducción a JDBC
 Conexiones
 Ejecución de sentencias SQL
 Secuencias especiales
 Transacciones
Motivación para usar BBDD
Enterprise Edition
 Tratamiento de mayor cantidad de datos
   Optimización para almacenamiento
   Optimización para recuperación
   Optimización para manipulación
 Arquitectura Cliente / Servidor
   Concentrar la lógica de negocio
 Data independence
Introducción JDBC
Motivación JDBC
 Unif car el acceso a las Bases De datos
    i
 Similar a ODBC
Tipos de Drivers JDBC
 Type 1: JDBC-ODBC Bridge driver
 (Bridge)
 Type 2: Native-API/partly Java driver
 (Native)
 Type 3: AllJava/Net-protocol driver
 (Middleware)
 Type 4: All Java/Native-protocol driver
 (Pure)
Necesidades
 1 servidor
 1 base de datos
 1 usuario
 1 conector o driver
 1 API
Estableciendo conexión
Cargando el Driver a mano
 Necesario en versiones antiguas
 Hay que cargar el driver a mano:
   Class.forName(“nombre del driver”)
DriverManager
This fully implemented class connects an
application to a data source, which is
specif ed by a database URL. When this
      i
class f rst attempts to establish a
        i
connection, it automatically loads any JDBC
4.0 drivers found within the class path. Note
that your application must manually load any
JDBC drivers prior to version 4.0.
Ejemplo de DriverManager
Connection conn = null;
conn = DriverManager.getConnection(
  "jdbc:mysql://localhost:3306/test",
   “usuario”, “contraseña”);
Definición de origen de datos
jdbc:mysql://localhost:3306/test?opcion=1
  jdbc:
  mysql: dialecto
  localhost: dirección o IP del servidor
  test: nombre de la base de datos
  opicion=1: opciones adicionales
DataSource
This interface is preferred over
DriverManager because it allows details
about the underlying data source to be
transparent to your application. A
DataSource object's properties are set so
that it represents a particular data source.
Ejemplo de DataSource
ctx = new InitialContext();
DataSource ds =
(DataSource)ctx.lookup("jdbc/fastCoffeeDB"
);
Connection con = ds.getConnection(
                  "myLogin",
                  "myPassword");
Ejemplo de DriverManager
Connection conn = null;
conn = DriverManager.getConnection(
  "jdbc:mysql://localhost:3306/test",
   “usuario”, “contraseña”);
Ejercicio
 Establecer conexión con la base de datos
 Probar los diferentes errores
   Usuario/contraseña incorrecto
   Base de datos incorrecto
   Servidor/puerto incorrecto
   Sin el driver disponible
   …
Ejecución de secuencias SQL
Ejecución de secuencias
 Clase Statement
 Se obtiene a partir de Connection
Tipos de Statement
 Para consultas: executeQuery
 Para modif caciones: executeUpdate
          i
 Para ambos: execute
 Especiales
  Llamadas a procedimientos almacenados
  Prepared statement
  Batch
Tipos de Statement
ExecuteQuery
  Ejecuta SQL que devuelve resultados
  Devuelve un ResulSet
Ejemplo
ResultSet rs =
stmt.executeQuery(“Consulta”);
while (rs.next()) {
…
}
stmt.close();
Ejercicio
 Conectarse a la base de datos de sakila
 Seleccionar todos los paises de la tabla
 country
 Por cada f la devuelta imprimir por salida
          i
 estándar números consecutivos
ResultSet
 Devuelve todas las f las seleccionadas
                     i
 Desconoce el número de columnas y
 contenido hasta la ejecución
ResultSet MetaData
    ResulSetMetaData
ResultSetMetaData rsm = rs.getMetaData();
for (int i = 1; i < rsm.getColumnCount() +
1; i++) {
System.out.println(rsm.getColumnName(i));
System.out.println(rsm.getColumnTypeName(i
));
}
Ejercicio
 Mostrar qué tipo de datos hay en la tabla
 “customer”
Obtener campos
 Normalmente sabremos los datos que
 queremos obtener de la base de datos
 Utilizamos:
  GetTipo(nombre)
  GetTipo(posicion)
  Tipo es en tipo Java.
Ejercicio
 Mostrar todas las f las con el formato:
                   i
   ID: valor
   Atributo1: valor1; Atributo2: valor2...
 de la tabla “actor”
Tipos de datos
CHAR String                    BINARY byte[]
VARCHAR String                 VARBINARY byte[]
LONGVARCHAR String             LONGVARBINARY byte[]
NUMERIC java.math.BigDecimal   DATE java.sql.Date
DECIMAL java.math.BigDecimal   TIME java.sql.Time
BIT boolean                    TIMESTAMP java.sql.Timestamp
                               CLOB Clob
BOOLEAN boolean
                               BLOB Blob
TINYINT byte
                               ARRAY Array
SMALLINT short
                               DISTINCT mapping of underlying type
INTEGER int
                               STRUCT Struct
BIGINT long
                               REF Ref
REAL f oat
      l                        DATALINK java.net.URL
FLOAT double                   JAVA_OBJECT underlying Java class
DOUBLE double
Tipos de Statement
ExecuteUpdate
  Ejecuta modif caciones
              i
  Devuelve número de elementos afectados
Ejemplo Crear tablas
String createString = "create table prueba...";
  Statement stmt = null;
  try {
    stmt = con.createStatement();
    stmt.executeUpdate(createString);
  } catch (SQLException e) {
    // TODO!
  } f nally {
    i
    if (stmt != null) { stmt.close(); }
  }
Insertar contenidos
Statement stmt = null;
  try {
    stmt = con.createStatement();
    stmt.executeUpdate("insert into prueba …");
  } catch (SQLException e) {
   // TODO!
  } f nally {
    i
    if (stmt != null) { stmt.close(); }
  }
Ejercicio
 Insertar un actor
 Elegir un país de country
   Cambiar todas las ciudades de city que referencien
   al pais elegido por otro
   Eliminar el país de country
 En todas las operaciones mostrar el
 número de i las afectadas
            f
Tipos de Statement
Execute
  Mezcla de los anteriores
  Utilizado para consultas en tiempo de
  ejecución
  Devuelve un boolean
    GetResultSet()
    GetUpdateCount()
Ejercicio
 Preparar una método ejecutarQuery
   Si hay resultados mostrar los campos y valores
   Si hay modif caciones mostrar su número
               i
 Ejecutar el método con
   Una consulta tipo SELECT
   Una tipo UPDATE
   (podéis pedir la consulta por entrada estándar)
Prepared Statements
 Se utilizan cuando vamos a ejecutar la
 misma consulta varias veces
 Queremos que la base de datos se
 prepare y optimice la consulta
Ejemplo de Prepared Statements
PreparedStatement updateSales =
con.prepareStatement("update " + dbName
+ ".COFFEES " + "set TOTAL = TOTAL + ?
where COF_NAME = ?");
Lanzando un Prepared Statements
// Fijo los parámetros
updateSales.setInt(1, 100);
updateSales.setString(2, “Franpuchino”);
// Lanzo la consulta
updateSales.executeUpdate();
Ejercicio
 Preparar una consulta (puede ser update)
 Ejecutarla dos veces con parámetros
 diferentes
Stored Procedures
cs = this.con.prepareCall("{call
RAISE_PRICE(?,?,?)}");
// Fijamos parámetros
cs.setString(1, coffeeNameArg);
cs.setFloat(2, maximumPercentageArg);
…
// Llamamos al procedimiento
cs.execute();
Batch
 Realizamos varias sentencias SQL
 … esperamos al f nal para procesarlas.
                 i
 Devuelve un array de modif cados
                           i
Ejemplo de Batch
this.con.setAutoCommit(false);
stmt.addBatch("INSERT INTO COFFEES " +
           "VALUES('Amaretto', 49, 9.99, 0, 0)");
stmt.addBatch("INSERT INTO COFFEES " +
           "VALUES('Hazelnut', 49, 9.99, 0, 0)");
this.con.setAutoCommit(true);
int [] updateCounts = stmt.executeBatch();
Ampliando funcionalidad del ResultSet
Tipos de ResultSet
 TYPE_FORWARD_ONLY
 TYPE_SCROLL_INSENSITIVE
 TYPE_SCROLL_SENSITIVE
 CONCUR_READ_ONLY
 CONCUR_UPDATABLE
 HOLD_CURSORS_OVER_COMMIT
 CLOSE_CURSORS_AT_COMMIT
Cursores
 Next
 Previous
 First
 Last
 BeforeFirst
 AfterLast
 relative(int rows)
 absolute(int row)
Actualizando ResulSet
 UpdateTIPO(columna, valor)
 UpdateRow()
Insertando Rows
uprs.moveToInsertRow();
uprs.updateString("COF_NAME", coffeeName);
uprs.updateInt("SUP_ID", supplierID);
uprs.updateFloat("PRICE", price);
uprs.updateInt("SALES", sales);
uprs.updateInt("TOTAL", total);
uprs.insertRow();
uprs.beforeFirst();
Ejercicio
 Obtener un listado de actores
 Modif car uno de ellos
     i
Tipos de RowSet
 Connected RowSet Objects
  JdbcRowSet
 Disconnected RowSet Objects
  CachedRowSet
  WebRowSet
  JoinRowSet
  FilteredRowSet
RowSet
 Propiedades
 JavaBeans notif caciones
               i
 Scroll
 Actualización




    http://download.oracle.com/javase/6/docs/api/javax/sql/RowSet.html
Transacciones
Transacciones
 con.setAutoCommit(false);
 con.commit();
 con.setAutoCommit(true);
SavePoint y RollBack
Savepoint save1 = con.setSavepoint();
...
con.rollback(save1);
…
con.commit();
Eliminar un Savepoint
Connection.releaseSavepoint
Caso práctico
Diseño orientativo
Ejercicio
 Utilizar el código del otro caso como base
 Proporcionar para las entidades:
   Listado
   Creación y actualización de registros
   Eliminar un registro
 Listado de las vistas
 Llamada al procedimiento
 “tarea_notif cada”
            i
Ejercicio cont.
 Crear un Prepared Statement para una de
 las vistas
 Insertar múltiples tareas de una vez
 Fijar la fecha de las tareas un día tras otro
 por persona
 Cambiar la ejecución de una tarea,
 reasignarla a otra persona y si esa
 persona ya tiene otra tarea para la misma
 fecha límite cancelar toda la operación.

Más contenido relacionado

La actualidad más candente (20)

Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Java y Base de Datos
Java y Base de DatosJava y Base de Datos
Java y Base de Datos
 
Jdbc
JdbcJdbc
Jdbc
 
Java.sql.*
Java.sql.*Java.sql.*
Java.sql.*
 
JDBC MONOGRAFIA
JDBC MONOGRAFIAJDBC MONOGRAFIA
JDBC MONOGRAFIA
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en Java
 
Jdbc
JdbcJdbc
Jdbc
 
MyBatis como alternativa a Hibernate
MyBatis como alternativa a HibernateMyBatis como alternativa a Hibernate
MyBatis como alternativa a Hibernate
 
Hibernate 3.2 short manual
Hibernate 3.2 short manualHibernate 3.2 short manual
Hibernate 3.2 short manual
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
JDBC
JDBCJDBC
JDBC
 
Jdbc
JdbcJdbc
Jdbc
 
JDBC
JDBCJDBC
JDBC
 
Jsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD ConexiónJsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD Conexión
 
Conexion a bases de datos
Conexion a bases de datosConexion a bases de datos
Conexion a bases de datos
 
Java persitence api
Java persitence apiJava persitence api
Java persitence api
 
T2 - JDBC
T2 - JDBCT2 - JDBC
T2 - JDBC
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Coneccion
ConeccionConeccion
Coneccion
 

Destacado

Bases De Datos Mysql Con Java
Bases De Datos Mysql Con JavaBases De Datos Mysql Con Java
Bases De Datos Mysql Con JavaYoni Villegas
 
Clase n°2 3-4 java
Clase n°2 3-4 javaClase n°2 3-4 java
Clase n°2 3-4 javajbersosa
 
Gestiondered 100222091702-phpapp01
Gestiondered 100222091702-phpapp01Gestiondered 100222091702-phpapp01
Gestiondered 100222091702-phpapp01Prof. Javier Troya
 
Pasos para Instalar MySQL server
Pasos para Instalar MySQL server Pasos para Instalar MySQL server
Pasos para Instalar MySQL server PEPE QH
 
Introducción práctica a JPA2
Introducción práctica a JPA2Introducción práctica a JPA2
Introducción práctica a JPA2jion1987
 
Bases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateBases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateCarlos Hernando
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCIgnacio Aular Reyes
 
Crear conexion a servidor en MySQL Workbench
Crear conexion a servidor en  MySQL WorkbenchCrear conexion a servidor en  MySQL Workbench
Crear conexion a servidor en MySQL WorkbenchJair Ospino Ardila
 
SO - Administración de Memoria
SO - Administración de MemoriaSO - Administración de Memoria
SO - Administración de MemoriaLuis Eraso
 
Crear y Eliminar Bases de datos en MySQL Workbench
Crear y Eliminar  Bases de datos en MySQL WorkbenchCrear y Eliminar  Bases de datos en MySQL Workbench
Crear y Eliminar Bases de datos en MySQL WorkbenchJair Ospino Ardila
 
Instalacion de MySQL Workbench
Instalacion de MySQL  WorkbenchInstalacion de MySQL  Workbench
Instalacion de MySQL WorkbenchJair Ospino Ardila
 

Destacado (20)

Bases De Datos Mysql Con Java
Bases De Datos Mysql Con JavaBases De Datos Mysql Con Java
Bases De Datos Mysql Con Java
 
Bbdd en java
Bbdd en javaBbdd en java
Bbdd en java
 
Clase n°2 3-4 java
Clase n°2 3-4 javaClase n°2 3-4 java
Clase n°2 3-4 java
 
Gestiondered 100222091702-phpapp01
Gestiondered 100222091702-phpapp01Gestiondered 100222091702-phpapp01
Gestiondered 100222091702-phpapp01
 
Clase No.2 Preparando el Ambiente de Java
Clase No.2 Preparando el Ambiente de Java Clase No.2 Preparando el Ambiente de Java
Clase No.2 Preparando el Ambiente de Java
 
Jdb ccompleto
Jdb ccompletoJdb ccompleto
Jdb ccompleto
 
Java con bd
Java con bdJava con bd
Java con bd
 
Pasos para Instalar MySQL server
Pasos para Instalar MySQL server Pasos para Instalar MySQL server
Pasos para Instalar MySQL server
 
Introducción práctica a JPA2
Introducción práctica a JPA2Introducción práctica a JPA2
Introducción práctica a JPA2
 
Conexión de Base de Datos
Conexión de Base de DatosConexión de Base de Datos
Conexión de Base de Datos
 
Bases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateBases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a Hibernate
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVC
 
Crear conexion a servidor en MySQL Workbench
Crear conexion a servidor en  MySQL WorkbenchCrear conexion a servidor en  MySQL Workbench
Crear conexion a servidor en MySQL Workbench
 
SO - Administración de Memoria
SO - Administración de MemoriaSO - Administración de Memoria
SO - Administración de Memoria
 
Curso basico de base de datos con java
Curso basico de base de datos con javaCurso basico de base de datos con java
Curso basico de base de datos con java
 
Video 5 base de datos
Video 5  base de datosVideo 5  base de datos
Video 5 base de datos
 
Modelos (UML)
Modelos (UML)Modelos (UML)
Modelos (UML)
 
Crear y Eliminar Bases de datos en MySQL Workbench
Crear y Eliminar  Bases de datos en MySQL WorkbenchCrear y Eliminar  Bases de datos en MySQL Workbench
Crear y Eliminar Bases de datos en MySQL Workbench
 
Administración de Memoria
Administración de MemoriaAdministración de Memoria
Administración de Memoria
 
Instalacion de MySQL Workbench
Instalacion de MySQL  WorkbenchInstalacion de MySQL  Workbench
Instalacion de MySQL Workbench
 

Similar a Bases de Datos en Java - Intro a JDBC

Explicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdfExplicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdfGregorioSnchez7
 
Lpiii tema5 - jdbc
Lpiii tema5 - jdbcLpiii tema5 - jdbc
Lpiii tema5 - jdbckjrojas
 
LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.SILVA19_PAMELA
 
Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasJose Bustamante Romero
 
Conexion bd en java y api necesaria
Conexion bd en java y api necesariaConexion bd en java y api necesaria
Conexion bd en java y api necesariaBoris Salleg
 
Entrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NETEntrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NETHaaron Gonzalez
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desdejbersosa
 
CSA - Web Parts en SharePoint 2010
CSA - Web Parts en SharePoint 2010CSA - Web Parts en SharePoint 2010
CSA - Web Parts en SharePoint 2010Comunidad SharePoint
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gioRobert Wolf
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gioRobert Wolf
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datosALYTS
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbcjbersosa
 

Similar a Bases de Datos en Java - Intro a JDBC (20)

Explicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdfExplicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdf
 
Lpiii tema5 - jdbc
Lpiii tema5 - jdbcLpiii tema5 - jdbc
Lpiii tema5 - jdbc
 
Connection Java
Connection JavaConnection Java
Connection Java
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Connection en Java
Connection en JavaConnection en Java
Connection en Java
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Guia7 java
Guia7 javaGuia7 java
Guia7 java
 
Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de Sistemas
 
Conexion bd en java y api necesaria
Conexion bd en java y api necesariaConexion bd en java y api necesaria
Conexion bd en java y api necesaria
 
Entrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NETEntrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NET
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
P2C2 Introducción a JEE5
P2C2 Introducción a JEE5P2C2 Introducción a JEE5
P2C2 Introducción a JEE5
 
CSA - Web Parts en SharePoint 2010
CSA - Web Parts en SharePoint 2010CSA - Web Parts en SharePoint 2010
CSA - Web Parts en SharePoint 2010
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Preparestatement
PreparestatementPreparestatement
Preparestatement
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gio
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbc
 

Más de Carlos Hernando

Introduciendo Serverless en Proyectos Python
Introduciendo Serverless en Proyectos PythonIntroduciendo Serverless en Proyectos Python
Introduciendo Serverless en Proyectos PythonCarlos Hernando
 
Microservicos: Cuándo y Cómo
Microservicos: Cuándo y CómoMicroservicos: Cuándo y Cómo
Microservicos: Cuándo y CómoCarlos Hernando
 
Introducción rápida a SQL
Introducción rápida a SQLIntroducción rápida a SQL
Introducción rápida a SQLCarlos Hernando
 
Persistencia en Java - Serialización
Persistencia en Java - SerializaciónPersistencia en Java - Serialización
Persistencia en Java - SerializaciónCarlos Hernando
 

Más de Carlos Hernando (7)

Introduciendo Serverless en Proyectos Python
Introduciendo Serverless en Proyectos PythonIntroduciendo Serverless en Proyectos Python
Introduciendo Serverless en Proyectos Python
 
Microservicos: Cuándo y Cómo
Microservicos: Cuándo y CómoMicroservicos: Cuándo y Cómo
Microservicos: Cuándo y Cómo
 
Try AngularJS
Try AngularJSTry AngularJS
Try AngularJS
 
Django tricks (2)
Django tricks (2)Django tricks (2)
Django tricks (2)
 
Metodologías Ágiles
Metodologías ÁgilesMetodologías Ágiles
Metodologías Ágiles
 
Introducción rápida a SQL
Introducción rápida a SQLIntroducción rápida a SQL
Introducción rápida a SQL
 
Persistencia en Java - Serialización
Persistencia en Java - SerializaciónPersistencia en Java - Serialización
Persistencia en Java - Serialización
 

Último

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 

Último (15)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 

Bases de Datos en Java - Intro a JDBC

  • 1. Bases de Datos en JAVA Introducción a JDBC Carlos Hernando Carasol chernando@acm.org 10 de Mayo de 2011
  • 2. Índice de contenidos Motivación del uso de Bases de Datos Introducción a JDBC Conexiones Ejecución de sentencias SQL Secuencias especiales Transacciones
  • 4. Enterprise Edition Tratamiento de mayor cantidad de datos Optimización para almacenamiento Optimización para recuperación Optimización para manipulación Arquitectura Cliente / Servidor Concentrar la lógica de negocio Data independence
  • 6. Motivación JDBC Unif car el acceso a las Bases De datos i Similar a ODBC
  • 7. Tipos de Drivers JDBC Type 1: JDBC-ODBC Bridge driver (Bridge) Type 2: Native-API/partly Java driver (Native) Type 3: AllJava/Net-protocol driver (Middleware) Type 4: All Java/Native-protocol driver (Pure)
  • 8. Necesidades 1 servidor 1 base de datos 1 usuario 1 conector o driver 1 API
  • 10. Cargando el Driver a mano Necesario en versiones antiguas Hay que cargar el driver a mano: Class.forName(“nombre del driver”)
  • 11. DriverManager This fully implemented class connects an application to a data source, which is specif ed by a database URL. When this i class f rst attempts to establish a i connection, it automatically loads any JDBC 4.0 drivers found within the class path. Note that your application must manually load any JDBC drivers prior to version 4.0.
  • 12. Ejemplo de DriverManager Connection conn = null; conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test", “usuario”, “contraseña”);
  • 13. Definición de origen de datos jdbc:mysql://localhost:3306/test?opcion=1 jdbc: mysql: dialecto localhost: dirección o IP del servidor test: nombre de la base de datos opicion=1: opciones adicionales
  • 14. DataSource This interface is preferred over DriverManager because it allows details about the underlying data source to be transparent to your application. A DataSource object's properties are set so that it represents a particular data source.
  • 15. Ejemplo de DataSource ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/fastCoffeeDB" ); Connection con = ds.getConnection( "myLogin", "myPassword");
  • 16. Ejemplo de DriverManager Connection conn = null; conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test", “usuario”, “contraseña”);
  • 17. Ejercicio Establecer conexión con la base de datos Probar los diferentes errores Usuario/contraseña incorrecto Base de datos incorrecto Servidor/puerto incorrecto Sin el driver disponible …
  • 19. Ejecución de secuencias Clase Statement Se obtiene a partir de Connection
  • 20. Tipos de Statement Para consultas: executeQuery Para modif caciones: executeUpdate i Para ambos: execute Especiales Llamadas a procedimientos almacenados Prepared statement Batch
  • 21. Tipos de Statement ExecuteQuery Ejecuta SQL que devuelve resultados Devuelve un ResulSet
  • 23. Ejercicio Conectarse a la base de datos de sakila Seleccionar todos los paises de la tabla country Por cada f la devuelta imprimir por salida i estándar números consecutivos
  • 24. ResultSet Devuelve todas las f las seleccionadas i Desconoce el número de columnas y contenido hasta la ejecución
  • 25. ResultSet MetaData ResulSetMetaData ResultSetMetaData rsm = rs.getMetaData(); for (int i = 1; i < rsm.getColumnCount() + 1; i++) { System.out.println(rsm.getColumnName(i)); System.out.println(rsm.getColumnTypeName(i )); }
  • 26. Ejercicio Mostrar qué tipo de datos hay en la tabla “customer”
  • 27. Obtener campos Normalmente sabremos los datos que queremos obtener de la base de datos Utilizamos: GetTipo(nombre) GetTipo(posicion) Tipo es en tipo Java.
  • 28. Ejercicio Mostrar todas las f las con el formato: i ID: valor Atributo1: valor1; Atributo2: valor2... de la tabla “actor”
  • 29. Tipos de datos CHAR String BINARY byte[] VARCHAR String VARBINARY byte[] LONGVARCHAR String LONGVARBINARY byte[] NUMERIC java.math.BigDecimal DATE java.sql.Date DECIMAL java.math.BigDecimal TIME java.sql.Time BIT boolean TIMESTAMP java.sql.Timestamp CLOB Clob BOOLEAN boolean BLOB Blob TINYINT byte ARRAY Array SMALLINT short DISTINCT mapping of underlying type INTEGER int STRUCT Struct BIGINT long REF Ref REAL f oat l DATALINK java.net.URL FLOAT double JAVA_OBJECT underlying Java class DOUBLE double
  • 30. Tipos de Statement ExecuteUpdate Ejecuta modif caciones i Devuelve número de elementos afectados
  • 31. Ejemplo Crear tablas String createString = "create table prueba..."; Statement stmt = null; try { stmt = con.createStatement(); stmt.executeUpdate(createString); } catch (SQLException e) { // TODO! } f nally { i if (stmt != null) { stmt.close(); } }
  • 32. Insertar contenidos Statement stmt = null; try { stmt = con.createStatement(); stmt.executeUpdate("insert into prueba …"); } catch (SQLException e) { // TODO! } f nally { i if (stmt != null) { stmt.close(); } }
  • 33. Ejercicio Insertar un actor Elegir un país de country Cambiar todas las ciudades de city que referencien al pais elegido por otro Eliminar el país de country En todas las operaciones mostrar el número de i las afectadas f
  • 34. Tipos de Statement Execute Mezcla de los anteriores Utilizado para consultas en tiempo de ejecución Devuelve un boolean GetResultSet() GetUpdateCount()
  • 35. Ejercicio Preparar una método ejecutarQuery Si hay resultados mostrar los campos y valores Si hay modif caciones mostrar su número i Ejecutar el método con Una consulta tipo SELECT Una tipo UPDATE (podéis pedir la consulta por entrada estándar)
  • 36. Prepared Statements Se utilizan cuando vamos a ejecutar la misma consulta varias veces Queremos que la base de datos se prepare y optimice la consulta
  • 37. Ejemplo de Prepared Statements PreparedStatement updateSales = con.prepareStatement("update " + dbName + ".COFFEES " + "set TOTAL = TOTAL + ? where COF_NAME = ?");
  • 38. Lanzando un Prepared Statements // Fijo los parámetros updateSales.setInt(1, 100); updateSales.setString(2, “Franpuchino”); // Lanzo la consulta updateSales.executeUpdate();
  • 39. Ejercicio Preparar una consulta (puede ser update) Ejecutarla dos veces con parámetros diferentes
  • 40. Stored Procedures cs = this.con.prepareCall("{call RAISE_PRICE(?,?,?)}"); // Fijamos parámetros cs.setString(1, coffeeNameArg); cs.setFloat(2, maximumPercentageArg); … // Llamamos al procedimiento cs.execute();
  • 41. Batch Realizamos varias sentencias SQL … esperamos al f nal para procesarlas. i Devuelve un array de modif cados i
  • 42. Ejemplo de Batch this.con.setAutoCommit(false); stmt.addBatch("INSERT INTO COFFEES " + "VALUES('Amaretto', 49, 9.99, 0, 0)"); stmt.addBatch("INSERT INTO COFFEES " + "VALUES('Hazelnut', 49, 9.99, 0, 0)"); this.con.setAutoCommit(true); int [] updateCounts = stmt.executeBatch();
  • 44. Tipos de ResultSet TYPE_FORWARD_ONLY TYPE_SCROLL_INSENSITIVE TYPE_SCROLL_SENSITIVE CONCUR_READ_ONLY CONCUR_UPDATABLE HOLD_CURSORS_OVER_COMMIT CLOSE_CURSORS_AT_COMMIT
  • 45. Cursores Next Previous First Last BeforeFirst AfterLast relative(int rows) absolute(int row)
  • 47. Insertando Rows uprs.moveToInsertRow(); uprs.updateString("COF_NAME", coffeeName); uprs.updateInt("SUP_ID", supplierID); uprs.updateFloat("PRICE", price); uprs.updateInt("SALES", sales); uprs.updateInt("TOTAL", total); uprs.insertRow(); uprs.beforeFirst();
  • 48. Ejercicio Obtener un listado de actores Modif car uno de ellos i
  • 49. Tipos de RowSet Connected RowSet Objects JdbcRowSet Disconnected RowSet Objects CachedRowSet WebRowSet JoinRowSet FilteredRowSet
  • 50. RowSet Propiedades JavaBeans notif caciones i Scroll Actualización http://download.oracle.com/javase/6/docs/api/javax/sql/RowSet.html
  • 53. SavePoint y RollBack Savepoint save1 = con.setSavepoint(); ... con.rollback(save1); … con.commit();
  • 57. Ejercicio Utilizar el código del otro caso como base Proporcionar para las entidades: Listado Creación y actualización de registros Eliminar un registro Listado de las vistas Llamada al procedimiento “tarea_notif cada” i
  • 58. Ejercicio cont. Crear un Prepared Statement para una de las vistas Insertar múltiples tareas de una vez Fijar la fecha de las tareas un día tras otro por persona Cambiar la ejecución de una tarea, reasignarla a otra persona y si esa persona ya tiene otra tarea para la misma fecha límite cancelar toda la operación.