Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Las aplicaciones requieren datos persistentes
Internet y tecnologías web
Acceso a Bases de Datos con Java
Fernando Alonso Blázquez Servlets con acceso a Bases de Datos 29 de Abril de 2004.
SQL Y BASES DE DATOS A TRAVÉS DE LA WEB
integridad referencial
Procedimientos de Almacenado
Carlos Rojas Kramer Universidad Cristóbal Colón
Acceso a Datos avanzado
Conexión a Base de Datos con NetBeans
JDBC Acceso a B.B.D.D. con Java.
Programador en Plataforma Java y XML
RMI Remote Method Invocation
UNIVERSIDAD LATINA (UNILA) VI.- ARCHIVOS Y BASES DE DATOS
Francisco Moreno Bases de Datos II Universidad Nacional
JAVA Persistence API (JPA)
ODBC - JDBC Gabriel Vásquez Dpto. Electrónica, Instrumentación y Control.
M.I. María Luisa González Ramírez Servlets y JSP.
Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912.
Clase 9 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
Persistencia de Objetos. Definicion Persistencia : El la capacidad de un objecto to continuar existiendo despues que su creador (programa que crea este)
Bases de Datos Relacionales
ARCHIVOS Y CONEXIÓN A BASE DE DATOS. FileInputStream: Clase que representa ficheros de texto accedidos en orden secuencial, byte a byte. FileWriter: Clase.
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Componentes sintácticos
UNIVERSIDAD LATINA BASES DE DATOS.
Sistema de Gestión de Información Desarrollado por: Solange Ahumada K Bernardo Malet
UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO MODULO IV ADMINISTRACIÓN DE BASES DE DATOS Administración del DBMS E.I. L.E. Prof. Ramón Castro Liceaga SEMINARIO.
Manejo de Base de Datos en Java Ing. Esp. Ricardo Cujar.
Fernando Alonso Nicolás Serrano Acceso a Bases de Datos con Java JDBC 01 de Abril de 2008.
Programación Orientada a Objetos II
Programación Orientada a Objetos Modulo 7 JDBC Universidad de Chile Departamento de Ciencias de la Computación.
Fernando Alonso Nicolás Serrano Servlets con acceso a Bases de Datos 21 de Abril de 2008.
1 TEMA 8. Acceso a bases de datos Arquitectura de una aplicación que accede a una BD Arquitectura de una aplicación que accede a una BD Establecer la conexión.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
JDBC Java Database Connectivity CC52N - Computación para el trabajo grupal Profesor: Nélson Baloian Por: Edgard Pineda.
DESARROLLO DE APLICACIONES INALAMBRICAS USANDO JAVA Presentado por : Karlens Berra B. Francys J. Zambrano Ch. UCV.Facultad de Ciencias.Escuela de Computación.
1 Programación Interactiva JDBC Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle.
INSTRUCCIONES Elaboración de la Presentación:
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Java Data Base Connectivity
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Structured Query Language (Lenguaje Estructurado de Consultas)
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
PROCEDIMIENTOS ALMACENADOS Es una consulta almacenada en la base de datos en un servidor. Los P.A. Mejoran el Rendimiento Disminuyen el tráfico. Los P.A.
EQUIPO:#3 GRUPO:304 NOMBRES: Lizbeth Nava Barón y Erick Ali Mejía.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
SQL Lenguaje Estructurado de Consulta MATERIA: diseñar sistemas de información ALUMNO: sarmiento flores Liliana Guadalupe GRUPO: 4° “A” TURNO: matutino.
Bases de Datos y Conectores
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
Persistencia de Objetos. Definicion Persistencia : El la capacidad de un objecto to continuar existiendo despues que su creador (programa que crea este)
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
API JDBC Java Database Connectivity. Conceptos básicos API de Conectividad a Bases de Datos Emplea SQL Standard Ventaja: los programas desarrollados en.
SQL es un estándar internacional para trabajar con bases de datos, que consta de dos partes: una parte para manipular datos y una parte para definir tipos.
JDBC. Definición Java Database Conectivity El acceso a bases de datos JDBC implica abrir una conexión ejecutar comandos SQL en un sentencia procesar los.
INTEGRANTE: FLORES GODOY JUAN E. Grupo:308. Una tabla es una colección de datos sobre un tema específico, como productos o proveedores. Al usar una tabla.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
Crear Aplicación Cliente para Conectarse a una Base de Datos.
Conferencia 9. ODBC, OLE DB y JDBC.
Programación Orientada a Objetos
Java Database Connectivity JDBC
JDBC: comunicación Java-Base de Datos
Transcripción de la presentación:

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores Java Database Connectivity JDBC  JDBC es una API, formada por conjunto de clases e interfaces en el lenguaje de programación Java, para ejecutar sentencias SQL sobre una base de datos (externa).  Ofrece un estándar de conexión a cualquier base de datos disponible en el mercado.  Permite obtener los datos en forma fácil y cómoda en ambientes cliente-servidor a través de Internet/Intranet.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores ¿Qué hace JDBC?  Permite establecer una conexión a una base de datos.  Permite enviar sentencias SQL.  Permite procesar los resultados de estas sentencias.  Las clases que permiten esto están en el paquete java.sql (hay que importarlo)

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 3 Modelos de acceso a BD  De 2 capas  La aplicación “habla” directamente con la base de datos.  Controlador JDBC se comunica con el sistema específico que maneja la base de datos.  La base de datos puede estar en otra máquina, con lo que el cliente se comunica por red. Esta es la configuración llamada cliente/servidor. Aplicación Java JDBC DBMS Cliente Servidor BD Protocolo BD

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 4 Modelos de acceso a BD  De 3 capas  Los comandos son enviados a la capa intermedia de servicios, la cual envía sentencias SQL a la base de datos. Ésta las procesa y envía los resultados de vuelta a la capa intermedia, para luego ser enviados al cliente.  Permite un control de acceso y de actualización.  Provee ventajas de performance. Aplicación Java JDBC DBMS Applet en Java o Navegador HTML Cliente (GUI) Llamadas HTTP, RMI,CORBA Servidor BD Servlets JSP EJB Protocolo BD

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 5 Arquitectura JDBC  Hay 4 formas distintas de establecer una conexión entre un programa java y una base de datos  Usando la ODBC (creado por microsoft para brindar una API estándar para comunicarse con bases de datos en una plataforma windows)  Usando un driver JDBC que se comunica con un driver desarrollado por la compañía que desarrollo el DBMS (que puede estar en cualquier lenguaje)  Lo mismo, pero con el driver desarrollado por la compañía en java  Lo mismo, pero el driver desarrollado por la compañía se comunica con uno “nativo” y este con la base de datos

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 6 Arquitectura JDBC Programa Java API JDBC Driver JDBC Driver Servidor JDBC Punete JDBC- ODBC Api del proveedor Base de Datos En el cliente En elservidor

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 7 Categorías de los controladores JDBC  Puente JDBC-ODBC.  Parte API Nativa-Parte Java. Se convierte las llamadas JDBC al sistema de la Base de datos.  JDBC-Red. Es sólo Java. Las llamadas JDBC son convertidas a un protocolo de red independiente del sistema de la base de datos. Este protocolo es convertido en un servidor  Protocolo Nativo. Es sólo Java. Se usa un protocolo de red con la BD.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 8 Cargando el Driver  Es necesario primero cargar una clase con el driver de la base de datos (esto lo provee el vendedor de la DBMS)  Ejemplo: Class c = Class.forName(“com.informix.jdbc.IfxDriver"); Calss.forName(“com.novell.sql.LDAPDriver”); Class.forName("com.mysql.jdbc.Driver");  Esto es particular según la base de datos que se usa  Luego hay que crear una instancia de la clase c.newInstance();

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 9 Estableciendo la Conexión  En los ejemplos omitiremos login y password  Un objeto “Connection” representa una conexión a una base de datos.  La clase “DriverManager” intenta ubicar el controlador que pueda conectarse a la base de datos representada en la URL. Connection con = DriverManager.getConnection ( url,"login", "password");

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 10 Conexión  Ejemplos de URL:  jdbc:mysql://localhost/test (para ejemplos)  jdbc:oracle://oraserver  jdbc:odbc:mydatabase  jdbc:informix- sqli://hostname:port/dbname:INFORMIXSER VER=serverName jdbc:ldap://server;baseDN=baseDN;useClearte xt=true

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 11...Conexión  Sintáxis de una URL JDBC:  jdbc: :  es el nombre del controlador o del mecanismo de conexión. Ejemplo: odbc.  es la identificación de la base de datos. El formato varia según el controlador especificado. Ejemplo: //servidor:puerto/bd y parámetros

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 12 Enviando sentencias SQL  JDBC permite enviar cualquier tipo de sentencia SQL. Aunque ésta fuera dependiente de la base de datos sólo se correría el riesgo de incompatibilidad al cambiar de base de datos.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 13...Enviando sentencias SQL  JDBC provee 3 clases:  “Statement”: Este objeto es usado para enviar sentecias SQL simples. Es creado por el método “createStatement”.  “PreparedStatement”: Este objeto es usado para sentencias que requieren uno o más parámetros. La sentencia es precompilada y guardada para uso futuro.  “CallableStatement”: Es usado para ejecutar procedimientos almacenados en la base de datos.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 14 La clase Statement  Statement stmt = con.createStatement();  En este momento la statement existe pero no tiene una sentencia SQL para ejecutar. Esta se puede pasar con los métodos  executeUpdate(String), usada para crear/modificar tablas (no hay resultados), típicamente para create, update, delete...  executeQuery(String) para hacer consultas, retornan resultados en un objeto de la clase ResultSet, típicamente para select

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 15 Ejemplos de excuteUpdate  stmt.executeUpdate(“create table alumno (nombre varchar(32), matricula integer, direccion varchar(40), añonac integer,...);  stmt.executeUpdate(“insert into alumnos (‘Valeria Valencia ’, , ‘Calle bonita 223 Vitacura Stgo’, 1974,...);  stmt.executeUpdate(“update alumnos set direccion = ‘?????’ where nombre = ‘Valeria Valencia’ ”);

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 16 Retorno de excuteUpdate El método excuteUpdate retorna un valor entero correspondiente al número de filas que la sentencia SQL modificó Si se trataba de una creación de tablas el valor de retorno es 0 Si se trata de insertar una fila el valor es 1 El resultado es interesante cuando se usa en una sentencia SQL con la instrucción “update tabla set campo = where

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 17 Ejemplos de excuteQuery  stmt.executeQuery(“select * from alumnos “ + “where añonac = 1974”);  Los resultados de una consulta se reciben en un objeto de la clase ResultSet  ResultSet rs = stmt.executeQuery(....);  Un ResultSet se puede ver como una enumeración de filas que representan el resultado  Existen métodos adecuados para recorrer los elementos de esta enumeración y recuperar los valores de las columnas (campos)

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 18 El ResultSet ResultSet rs = stmt.executeQuery(“select nombre where direccion like Santiago”); while (rs.next()) { String s = rs.getString(“nombre”); int y = rs.getInt(“año”); System.out.println(s+” “+y); }  ResultSet rs contiene una colección de filas con los resultados de la pregunta. La instrucción next avanza un puntero que indica en qué fila estamos actualmente. Al principio está antes de la primera fila, por lo cual se hace necesario ejecutar un next() para situarse en la primera

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 19 La instrucción getXXX  Se puede usar con 2 tipos de parámetros:  getXXX(“nombre de columna en la tabla”) ej getString(“nombre”)  getXXX(número de columna en la tabla) ej getString(1)  getXXX trata de leer lo que hay en la columna y convertirlo al tipo Java especificado en XXX

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 20 La instrucción getXXX  Hay veces en que si bien, el tipo SQL no es el mismo que el tipo XXX una conversión es posible sin problemas (por ejemplo, con getString y getObject se puede recuperar sin problemas cualquier cosa)  Otras, en que la conversión es posible pero con pérdida de información o con posible problema de formateo (ej getByte para un numeric o un longvarchar  Otras, es simplemente imposible (un getLong para Time)

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 21 Prepared Statements  Donde se ha usado Satement es generalmente posible usar PreparedStatement para hacer más eficientes las consultas  Una instrucción con PreparedStatement va a ser, en la mayoría de los casos, traducida a una consulta SQL nativa de la base de datos en tiempo de compilación  La otra ventaja es que es posible usar parámetros dentro de ella, pudiendo hacer más flexibles las consultas o hacer varias consultas distintas dentro de un ciclo cambiando el valor de algunas variables  PreparedStatement us = con.prepareSatatement(“update alumnos set comuna = ? where direccion like = ?);  us.setString(1,’Vitacura’) us.setString(2,’Hualtatas’);

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 22 Prepared Statements: Ejemplo PreparedStatement updateSales; String updateString = "update COFFEES " + "set SALES = ? where COF_NAME like ?"; updateSales = con.prepareStatement(updateString); int [] salesForWeek = {175, 150, 60, 155, 90}; String [] coffees = {"Colombian", "French_Roast", "Espresso", "Colombian_Decaf", "French_Roast_Decaf"}; int len = coffees.length; for(int i = 0; i < len; i++) { updateSales.setInt(1, salesForWeek[i]); updateSales.setString(2, coffees[i]); updateSales.executeUpdate(); }

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 23 Transacciones  Una transacción consiste en una o más sentencias que han sido ejecutadas y luego confirmadas (commit) o deshechas (rolled back)  Auto-commit está preseteado.  Si Auto-commit está desactivado se debe usar los métodos “commit” o “rollback” explícitamente.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 24 Transacciones  Para hacer uso de transacciones debe primero dessetearse elauto-commit  con.setAutoCommit(false)  PreparedStatement ps =..... ....  ps.executeUpdate()....  ps.excecuteUpdate()...  con.commit(); TransactionPairs.java

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 25 Stored Procedures  Es un grupo de sentencias SQL que se agrupan lógicamente en una unidad para efectuar una determinada tarea  Existen en la mayoría de los DBMS pero son dependientes de estas (no es muy estándar la forma cómo se escriben/ejecutan)  Generalmente reciben parámetros  Se “escriben” con un Update y se ejecutan con un Query

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 26 Un ejemplo Para crear el Stored Procedure String crearSP = “create prodcedure SHOW_SUPPLIERS”+ “ as ”+ “select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME”+ “from SUPPLIERS, COFFEES ”+ “where SUPPLIERS.SUP_ID = COFFEES.SUP_ID” Statement stmt = con.CreateStatement(); stmt.executeQuery(createSP); Para llamar el Stored Procedure CallableStatement cs; cs = con.prepareCall(“{call SHOW_SUPPLIERS}”); ResultSet rs = cs.executeQuery();

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 27 Usando los metadatos  Los metadatos son la información acerca de la estructura de una Base de Datos o un ResultSet  Se obtiene con el método getMetaData() stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount(); int rowCount = 1; while (rs.next()) { System.out.println("Row " + rowCount + ": "); for (int i = 1; i <= numberOfColumns; i++) { System.out.print(" Column " + i + ": "); System.out.println(rs.getString(i)); } System.out.println(""); rowCount++; }

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 28 Usando los metadatos  Ejemplo para conocer las tablas de una Base de Datos DatabaseMetaData dbmd = con.getMetaData(); String dbmsName = dbmd.getDatabaseProductName(); ResultSet rs = dbmd.getTableTypes(); System.out.print("The following types of tables are "); System.out.println("available in " + dbmsName + ": "); while (rs.next()) { String tableType = rs.getString("TABLE_TYPE"); System.out.println(" " + tableType); }