Programación Orientada a Objetos

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Acceso a Bases de Datos con Java
Fernando Alonso Blázquez Servlets con acceso a Bases de Datos 29 de Abril de 2004.
ACCESO A BASES DE DATOS ORACLE CON PHP
Programador en Plataforma Java y XML
Oracle y Java Continuación *
UNIVERSIDAD LATINA (UNILA) VI.- ARCHIVOS Y BASES DE DATOS
Francisco Moreno Bases de Datos II Universidad Nacional
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.
SQL Lenguaje de consulta estructurado
ARCHIVOS Y CONEXIÓN A BASE DE DATOS. FileInputStream: Clase que representa ficheros de texto accedidos en orden secuencial, byte a byte. FileWriter: Clase.
Componentes sintácticos
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.
JDBC Java Database Connectivity CC52N - Computación para el trabajo grupal Profesor: Nélson Baloian Por: Edgard Pineda.
1 Programación Interactiva JDBC Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle.
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.
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.
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.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
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.
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
Crear Aplicación Cliente para Conectarse a una Base de Datos.
COMANDOS SQL. ¿QUÉ ES SQL? El lenguaje de consulta estructurado es un lenguaje declarativo que permite la creación, acceso e interacción de bases de datos.
Saregune CC 2009 SQL Introducción. base de datos Una estructura ordenada de información.
Administración de Sistemas Gestores de Bases de Datos.
Francisco Moreno Bases de Datos II Universidad Nacional
Conferencia 9. ODBC, OLE DB y JDBC.
CC Bases de Datos Otoño Clase 8: SQL (IV) Acceso programático
SQL: Structured Query Language
Conexiones a Bases de Datos Utilizando la clase Conexión
Acceso a Bases de datos con ADO.NET
Lenguaje de manipulación de datos
MYSQL SQL: Lenguaje de consulta estructurado. Es un lenguaje de programación para trabajar con BD relacionadas, entre las cuales tenemos MYSQL, ORACLE,
SEGURIDAD SQL Usuarios, privilegios y perfiles.
Tipos de datos en MYSQL YEAR: Año. “YYYY” o “YY”
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
Arquitectura de una Base de Datos
Stored Procedures Firebird.
SQL Prof. Martín Contreras.
Conexiones a Bases de Datos Utilizando la clase Conexión
SQL 2: Structured Query Language
Conectividad de Bases de Datos
Lenguajes de programación
UN DISPARADOR O TRIGGER es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Es una rutina autónoma.
Arquitectura de una Base de Datos
5. SQL Procedural.
Lenguaje de Manipulación de Datos
Programación Orientada a Objetos
Orígenes Funciones Condicionales
UN EJEMPLO DE LECTURA CONSISTENTE EN INNODB
Lenguaje SQL Contenidos Que es SQL ? Estructura de SQL
Universidad Alonso de Ojeda Facultad de Ingeniería
Java DataBase Connectivity (JDBC)
El Leguaje Orientación al objeto.
Java Database Connectivity JDBC
Capítulo 7 USO DE BASES DE DATOS OBJETO- RELACIONALES.
TRIGGERS VISTAS Y PROCESOS Ing. Fabiola Nilda Perez Oliver
JDBC: comunicación Java-Base de Datos
SQL1 7/9 Baloian Acceso a Bases de Datos
Programación Orientada a Objetos
Programación Orientada a Objetos
Transcripción de la presentación:

Programación Orientada a Objetos Fast Track to Java Unit 1: Overview and Positioning Programación Orientada a Objetos JDBC

Temario Streams El package java.io Streams de bytes y de caracteres Streams de bajo y alto nivel Leyendo y escribiendo Sockets

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.

¿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)

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. Cliente Aplicación Java JDBC Protocolo BD DBMS Servidor BD

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. Cliente (GUI) Navegador Web Protocolo HTTP Aplicación Java Servlets, JSP en servidor WEB JDBC Protocolo BD DBMS Servidor BD

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();

Estableciendo la Conexión Connection con = DriverManager.getConnection ( url,login, 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.

Conexión Ejemplos de URL: jdbc:mysql://localhost/test (para ejemplos) jdbc:oracle://oraserver jdbc:odbc:mydatabase jdbc:ldap://server;baseDN=baseDN;useCleartext=true

...Conexión Sintáxis de una URL JDBC: jdbc:<subprotocolo>:<subnombre> <subprotocolo> es el nombre del controlador o del mecanismo de conexión. Ejemplo: odbc. <subnombre> es la identificación de la base de datos. El formato varia según el controlador especificado. Ejemplo: //servidor:puerto/bd y parámetros

Ejemplo de Conexión import java.sql.*; import com.mysql.jdbc.*; java.sql.Connection getConnection(String usr, String pass) { url = "jdbc:mysql://localhost/test"; driver = "com.mysql.jdbc.Driver"; try { Class.forName(driver).newInstance(); con = DriverDriverManager.getConnection(url, usr,pass); return con; } catch(Exception e2) { System.err.println("Problems"); return null; }

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.

...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.

La clase Statement Connection con = getConnection(…); 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

Crear y ejecutar comando Statement s=con.createStatement(); s.executeUpdate(“...”); Crear tabla s.executeUpdate( “create libros(”+ “ id char(20),” + “ titulo char(50),” + “ autor char(50,)” + “ editorial char(20),” + “ fecha char(8),” + “ primary key(id))” );

Agregar fila s.executeUpdate( “insert into libros values(”+ “‘JA1’,’Java’,’Alvarez’,’ACME’,’20060906’)” ); “insert into lectores values(”+ “’123’,’rosa’,’Blanco 2120’,’9782000’,’’)” “insert into prestamos values(‘”+ U.leerString(“id libro?”)+ “’,’”+ U.leerString(“id lector?”)+“’ ,’20060913’)”

Borrar filas

Actualizar filas

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 = <expresión> where <condicion>

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)

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

Consultar tabla libros

Consultar tabla libros

Libro(s) más recientes(s) de Java

JDBC 11/9 (N. Baloian) Alternativamente

JDBC 11/9 (N. Baloian)

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

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) y se lanza una Exception

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,’Santiago’) us.setString(2,’Portugal’);

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(); }

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.

Transacciones Para hacer uso de transacciones debe primero dessetearse elauto-commit con.setAutoCommit(false) PreparedStatement ps = ..... .... ps.executeUpdate() .... ps.excecuteUpdate() ... con.commit();

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

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();

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++;

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); }