Java y MySQL. Ciclo de ejecución



Documentos relacionados
Java y MySQL. Ciclo de ejecución

JDBC. Una mini-introducci. introducción

Acceso a BDs en Java: JDBC

Acceso a BD desde Java. JDBC

Desarrollo de Software con

JDBC: Java DataBase Conectivity

Programación Orientada a Objetos II. La Plataforma JDBC

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

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

NORMAS PARA LA ENTREGA DE LOS LABORATORIOS

MySQL 5 (versiones 5.1 a 5.6) Guía de referencia del desarrollador

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

Plugin para NetBeans que realiza migración de una base de datos postgresql a couchdb.

JDBC. Francisco Javier Solans Benedí Software Developper

Práctica sobre compartición de instancias remotas.

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

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

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

1

Oracle 12c DISEÑO Y PROGRAMACIÓN

Bases de Datos Introducción a la Conectividad de

MySQL con Java en MS Windows

Manual de JSP con MySQL

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

myappgen Usted Construye la aplicación mientras la ejecuta

JAVA 8 Los fundamentos del lenguaje Java (con ejercicios prácticos corregidos)

CURSORES EN SQL SERVER

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

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

Número de Práctica: 1 Nombre de la Práctica: Comunicación Cliente Servidor Vía Sockets Java con Sistema Manejador de Bases de Datos

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS

Microsoft SQL Server 2005

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

Federico Peinado

MSSQL Server Java

BASES DE DATOS AVANZADAS Transacciones en MYSQL

Manual de NetBeans y XAMPP

JSP. MSc. Daniel Alejandro Yucra Sotomayor Pag Web Services. Laboratorio Nro. 11. Web Services con JAX-WS con MySQL. I. Competencia General:

CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE

Conexión de Mysql con NetBeans

El primer paso a realizar es crear la referencia JNDI para el origen de datos en el servidor local TomCat.

DOCUMENTACIÓN DE POWER BUILDER 11. CONSULTA DINAMICA Las consultas dinámicas se realizan cuando power builder no soporta una consulta SQL.

JDBC. Aplicaciones Distribuidas

REQUERIMIENTO RESPUESTA

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

Formatos para prácticas de laboratorio

Fundamentos de Oracle

A continuación se presenta la forma en que se puede conectar PHP con el gestor de bases de datos MySQL.

Acceso a bases de datos desde Java: JDBC

PHP 5.6 Desarrollar un sitio web dinámico e interactivo

Registro y Comunicación Automatizada a Bases de Datos

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

Curso Online de Microsoft

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Acceso a bases de datos con JDBC

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

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

BANCO DE PREGUNTAS PARA EVALUACIÓN DE CONOCIMIENTOS DEL CONCURSO DE MÉRITOS Y OPOSICIÓN EXPERTO EN DESARROLLO DE SISTEMAS 1

A.1. Definiciones de datos en SQL

APLICACIONES WEB PERL + BASES DE DATOS REQUERIMIENTO RESPUESTA

ÍNDICE. PRÓLOGO Parte I Parte II Apéndices... 23

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

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

Acceso a bases de datos desde Java: JDBC

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

Tópicos Avanzados de Programación (TAP3501)

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios

Aplicación de Base de Datos con MySQL, ODBC y Delphi

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

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

Consultas con combinaciones

Programación y Acceso a BD con SQL

Acceso a bases de datos en Perl

DOCENTES FORMADORES UGEL 03 PRIMARIA

Software de Comunicaciones (2) Manual de Usuario Consola

Manipulando Datos. y Transacciones

Java con Bases de Datos

Programación páginas web. Servidor (PHP)

JDBC. Curso 04/05. Tema 8 JDBC. Departament d Informàtica. Universitat de València. 1. Introducción Arquitecturas típicas...

Introducción a las Redes de Computadoras. Obligatorio

Estructura de Bases de datos. Leonardo Víquez Acuña

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

Módulo 15. Introducción a JDBC, Java Database Connectivity. Programación Orientada a Objetos Página 16.0 de 25

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

APLICACIONES MÓVILES NATIVAS. Sesión 8: Arquitectura de las aplicaciones Android

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Curso Online de Oracle 10g

CURSO DE PROGRAMACIÓN PHP MySQL

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

Transcripción:

Java y MySQL JDBC: Java DataBase Connectivity Cliente Servidor Aplicación Java Driver JDBC MySQL Conexión cliente-servidor MySQL Java Runtime Librerías JDBC El driver implementa las interfaces del paquete JDBC estándar. Base de Datos JVM 0 Ciclo de ejecución Cargar Driver JDBC Establecer conexión a la base de datos Ejecutar sentencia Consulta Armar SQL Crear sentencia Ejecutar Iterar sobre el resultado Actualización Armar SQL Crear sentencia Ejecutar Otra sentencia Cerrar conexión 1 1

Clase DriverManager (Paquete java.sql) DriverManager: clase estática (no requiere instanciación de objetos) que administra los drivers jdbc disponibles para iniciar conexiones. ConnectiongetConnection(Stringurl): intenta iniciar una conexión a una base de datos según los parámetros especificados en el url. Generalmente el string de conexión tiene el siguiente formato: jdbc:<driver>:<propiedades de la conexión> Para MySQL: jdbc:mysql://<servidor>:<puerto>/<base_datos>?<parametros> Por ejemplo: jdbc:mysql://localhost:3306/batallas?user=barco&password=pwbarco ConnectiongetConnection(Stringurl, Stringusuario, Stringclave): idem al anterior pero por compatibilidad y seguridad, el usuario y la clave de acceso, son parámetros individuales. setlogintimeout(intsegundos): configura la cantidad de segundos de espera para intentar establecer la próxima conexión a una base de datos. 2 Clase Connection (Paquete java.sql) Connection: interfaz para implementar una sesión cliente-servidor con una base de datos. StatementcreateStatement(): crea una nueva sentencia para ejecutar código SQL en forma directa en el servidor a traves de la conexión. PreparedStatement preparestatement(stringsql): crea una sentencia preparada con una estructura predeterminada dada por parámetros, para luego enviar los datos efectivos. booleanisvalid(inttimeout): verifica que la conexión está abierta y disponible para ejecutar una operación. Es necesaria para determinar si la conexión de red aun permanece activa desde la ejecución del último SQL. close(): cierra la conexión y libera los recursos utilizados. setautocommit(booleanautocommit), commit(), rollback(): utilizados para el manejo de transacciones en la conexión actual. 3 2

Conexión JDBC a MySQL // Se carga y registra el driver JDBC de MySQL (JDK 1.5 o anterior) try Class.forName("com.mysql.jdbc.Driver").newInstance(); catch (Exception ex) // Intento de conexión a una base de datos String servidor = "localhost:3306"; String basedatos = "batallas"; String usuario = "admin_batallas"; String clave = "pwbatallas"; Stringurl = "jdbc:mysql://"+ servidor + "/"+ basedatos; java.sql.connection cnx; try cnx = java.sql.drivermanager.getconnection(url, usuario, clave); catch (java.sql.sqlexception ex) 4 Clase Statement (Paquete java.sql) Statement: se utiliza para ejecutar una sentencia SQL en base a un string estático, ya sea un comando o una consulta. booleanexecute(stringsql): ejecuta cualquier tipo de SQL. Si es una consulta se debe recuperar el resultado mediante el método ResultSet getresultset(); intexecuteupdate(stringsql): sólo para comandos de actualización de datos (insert, delete, update) o configuración dinámica de la sesión (transacciones, concurrencia, etc). ResultSetexecuteQuery(Stringsql): sólo para consultas que retornan un resultado en filas o registros. addbatch(stringsql), int[] executebatch(), clearbatch(): permiten ejecutar una secuencia de comandos enviados en un lote. voidsetquerytimeout(intseconds): impone un límite de espera para la ejecución de la sentencia. close(): cierra la sentencia liberando los recursos utilizados. 5 3

Clase ResultSet (Paquete java.sql) ResultSet: contiene el conjunto resultado de una consulta SQL, estructurado en filas y columnas, con el comportamiento de un iterador. booleannext(): avanza el índice interno del iterador a la proxima fila. Retorna false si no hay mas filas. StringgetString(intcolumnIndex), StringgetString(StringcolumnLabel): permiten recuperar los valores de las columnas como un String, según su posición en la fila (la primer columna es 1) o mediante su nombre respectivamente. intgetint(...), longgetlong(...), floatgetfloat(...), doublegetdouble(...), booleangetboolean(...), DategetDate(...), TimestampgetTimestamp(...), Object getobject(...), etc...: una función para cada tipo de dato de las columnas. booleanwasnull(): verifica si el último valor recuperado de una columna correpondía al valor NULL de SQL. boolean previous(), boolean first(), boolean last(), boolean absolute(int row), boolean relative(int rows): funciones para navegar en el conjunto resultado. ResultSetMetaDatagetMetaData(): para recuperar los meta-datos (cantidad de columnas, tipos, ) del conjunto resultado y de las columnas. 6 Consultas SQL try // Se crea una sentencia jdbc para realizar la consulta java.sql.statement stmt = cnx.createstatement(); // Se prepara el string SQL de la consulta String sql = "SELECT nombre_barco, id, capitan FROM barcos ; // Se ejecuta la sentencia y se recibe un resultado java.sql.resultset rs = stmt.executequery(sql); // Se recorre el resultado while (rs.next()) String nombrebarco = rs.getstring("nombre_barco"); intid = rs.getint("id"); String capitan = rs.getstring("capitan"); rs.close(); stmt.close(); catch (java.sql.sqlexception ex) 7 4

Actualización de datos Comandos o sentencias de manipulación de datos (insert, update, delete) que no retornan un resultado. try // Se crea una sentencia jdbc para realizar la consulta java.sql.statement stmt = cnx.createstatement(); // Se prepara el string SQL de la inserción String sql = "INSERT INTO barcos (nombre_barco, id, capitan) " + "VALUES ('Bismark', 22, 'Ernst Lindeman')"; // Se ejecuta la inserción stmt.execute(sql); // Se retornan los recursos utilizados cerrando la sentencia stmt.close(); catch (java.sql.sqlexceptionex) System.out.println("Mensaje: " + ex.getmessage()); System.out.println("Código: " + ex.geterrorcode()); System.out.println("SQLState: " + ex.getsqlstate()); 8 Sentencias Preparadas Se utilizan cuando una misma sentencia consulta o actualización debe ejecutarse repetidamente con la misma estructura pero distintos valores. Más comunmente usado en inserciones de registros en masa. Acelera la ejecución al evitar la interpretación del SQL de manera individual. Una vez preparada la sentencia en el servidor, sólo se necesitan enviar los datos efectivos. El método puede interpretarse como una pre-compilación de las sentencias para un posterior uso repetitivo. No sólo se ahorran ciclos de cpu en el servidor, sino también ancho de banda para la trasmisión de comandos y datos. String sql = "INSERT INTO barcos (nombre_barco, id, capitan) VALUES (?,?,?)"; // Se crea un sentencia preparada java.sql.preparedstatement stmt = cnx.preparestatement(sql); // Se ligan los parámetros efectivos stmt.setstring(1, "Bismark"); stmt.setint(2, 22); stmt.setstring(3, "Ernst Lindeman"); // Se ejecuta la inserción stmt.executeupdate(); // se cierra la sentencia stmt.close(); 9 5

Clase ResultSetMetaData (Paquete java.sql) ResultSetMetaData: permite obtener los tipos y propiedades de las columnas de un conjunto resultado (ResultSet): int getcolumncount(): cantidad de columnas en el resultado. StringgetColumnLabel(intcolumn), StringgetColumnName(intcolumn): recuperar el nombre modificado o el nombre real de una columna respectivamente. StringgetColumnClassName(intcolumn): recuperar la clase de Java determinada como predefinida para el tipo de dato de una columna. intgetcolumntype(intcolumn), StringgetColumnTypeName(intcolumn): recuperar el tipo de dato SQL estándar y SQL específico de una columna respectivamente. intisnullable(intcolumn), booleanisautoincrement(intcolumn): propiedades particulares de una columna. booleanissearchable(intcolumn): determina si es posible ejecutar un filtro en el WHERE de una consulta sobre la columna indicada. 10 Clase JTable (paquete javax.swing.table) Permite mostrar graficamente tablas con datos, permitiendo opcionalmente al usuario editar los datos. Cada tabla JTable usa un objeto TableModel para manejar y almacenar los datos. Si no se especifica ningun modelo de tabla, JTable utiliza por defecto el modelo DefaultTableModel que almacena los datos como vector de vectores. Para crear un modelo de tabla se debe implementar la interface TableModel. Generalmente se implementa extendiendo la clase DefaultTableModel oabstracttablemodel. Clase DBTable(paquete quick.dbtable)esta construido sobre JTable ( comparte muchos métodos y propiedades) y provee funciones específicas para bases de datos. (Ver ejemplos de su uso en proyecto Batallas) 11 6

Para convertir String a java.util.date: Manejo de Fechas Date fecha = (new SimpleDateFormat("dd/MM/yyyy")).parse("31/12/2009"); Para convertir java.util.date a String: String fechastr = (new SimpleDateFormat("dd/MM/yyyy")).format(fecha); Para convertir java.util.date a String para SQL: String fechastrsql = (new SimpleDateFormat("yyyy-MM-dd")).format(fecha); Para convertir java.util.date a java.sql.date de JDBC: java.sql.date retorno = java.sql.date.valueof( (new SimpleDateFormat("yyyy-MM-dd")).format(fecha)); (Mas funciones ver fechas.java en proyecto Batallas) 12 Importar el proyecto Batallas en Eclipse 13 7

Instalación del Driver JDBC de MySQL en Eclipse 14 Selección de la librería externa 15 8

Selección de la librería externa: JDBC MySQL connector 16 Selección de la librería externa: quicktable (DBTable) 17 9

Generar el archivo JAR de un proyecto en Eclipse 18 Generar el archivo JAR de un proyecto en Eclipse (cont.) 19 10

Generar el archivo JAR de un proyecto en Eclipse (cont.) 20 Referencias Driver JDBC de MySQL: http://dev.mysql.com/downloads/connector/j/ Swing / JTable: http://java.sun.com/docs/books/tutorial/uiswing http://download.oracle.com/javase/tutorial/uiswing/components/table.html Quick.DBTable: http://quicktablejava.appspot.com/home.html https://java.net/projects/quicktable/downloads Eclipse: http://www.eclipse.org/downloads Window builder: http://www.eclipse.org/windowbuilder/download.php JDK 7 SE: http://java.sun.com/javase/downloads/index.jsp Java API: http://java.sun.com/javase/7/docs http://java.sun.com/javase/7/docs/technotes/guides/jdbc 21 11