SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Java y MySQL
Base de Datos
MySQL
Servidor
JVM
Librerías JDBC
Java Runtime
Cliente
Aplicación Java
Driver JDBC MySQL
El driver implementa
las interfaces del
paquete JDBC estándar.
Conexión cliente-servidor
 JDBC: Java DataBase Connectivity
•0
Ciclo de ejecución
Cargar Driver JDBC
Establecer conexión a
la base de datos
Cerrar conexión
Otra sentencia
Ejecutar sentencia
Actualización
Consulta
Armar SQL
Crear sentencia
Ejecutar
Iterar sobre el resultado
Armar SQL
Crear sentencia
Ejecutar
•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.
 Connection getConnection(String url): 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
 Connection getConnection(String url, String usuario, String clave): idem al anterior
pero por compatibilidad y seguridad, el usuario y la clave de acceso, son parámetros
individuales.
 setLoginTimeout(int segundos): 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.
 Statement createStatement(): crea una nueva sentencia para ejecutar código SQL en
forma directa en el servidor a traves de la conexión.
 PreparedStatement prepareStatement(String sql): crea una sentencia preparada
con una estructura predeterminada dada por parámetros, para luego enviar los datos
efectivos.
 boolean isValid(int timeout): 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(boolean autoCommit), commit(), rollback(): utilizados para el
manejo de transacciones en la conexión actual.
•3
Conexión JDBC a MySQL
// Intento de conexión a una base de datos
String servidor = "localhost:3306";
String baseDatos = "batallas";
String usuario = "admin_batallas";
String clave = "pwbatallas";
String url = "jdbc:mysql://" + servidor + "/" +baseDatos+
"?serverTimezone=America/Argentina/Buenos_Aires";
java.sql.Connection cnx;
try
{
cnx = java.sql.DriverManager.getConnection(url, usuario, clave);
}
catch (java.sql.SQLException ex)
{
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
•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.
 boolean execute(String sql): ejecuta cualquier tipo de SQL. Si es una consulta se debe
recuperar el resultado mediante el método ResultSet getResultSet();
 int executeUpdate(String sql): sólo para comandos de actualización de datos (insert,
delete, update) o configuración dinámica de la sesión (transacciones, concurrencia, etc).
 ResultSet executeQuery(String sql): sólo para consultas que retornan un resultado en
filas o registros.
 addBatch(String sql), int[] executeBatch(), clearBatch(): permiten ejecutar una
secuencia de comandos enviados en un lote.
 void setQueryTimeout(int seconds): impone un límite de espera por el resultado de la
ejecución de la sentencia.
 close(): cierra la sentencia liberando los recursos utilizados.
•5
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.
 boolean next(): avanza el índice interno del iterador a la proxima fila. Retorna false si no hay
mas filas.
 String getString(int columnIndex), String getString(String columnLabel): 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.
 int getInt(...), long getLong(...), float getFloat(...), double getDouble(...),
boolean getBoolean(...), Date getDate(...), Timestamp getTimestamp(...),
Object getObject(...), etc...: una función para cada tipo de dato (java) de las columnas.
 boolean wasNull(): 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.
 ResultSetMetaData getMetaData(): 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");
int id = rs.getInt("id");
String capitan = rs.getString("capitan");
}
rs.close();
stmt.close();
}
catch (java.sql.SQLException ex) {} •7
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.
 String getColumnLabel(int column), String getColumnName(int column): recuperar
el nombre modificado o el nombre real de una columna respectivamente.
 String getColumnClassName(int column): recuperar la clase de Java determinada
como predefinida para el tipo de dato de una columna.
 int getColumnType(int column), String getColumnTypeName(int column): recuperar
el tipo de dato SQL estándar y SQL específico de una columna respectivamente.
 int isNullable(int column), boolean isAutoIncrement(int column): propiedades
particulares de una columna.
 boolean isSearchable(int column): determina si es posible ejecutar un filtro en el
WHERE de una consulta sobre la columna indicada.
•8
Actualización de datos
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.SQLException ex)
{
System.out.println("Mensaje: " + ex.getMessage()); // Mensaje
retornado por MySQL
System.out.println("Código: " + ex.getErrorCode()); // Código de
error de MySQL System.out.println("SQLState: " +
ex.getSQLState()); // Código de error del SQL standart
}
 Comandos o sentencias de manipulación de datos (insert,
update, delete) que no retornan un resultado.
•9
Sentencias Preparadas
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();
 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 envian 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.
•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 o AbstractTableModel.
 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
Manejo de Fechas
Para convertir String a java.util.Date:
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
Instalación del Driver JDBC
de MySQL en Eclipse
•14
Selección de la librería externa
•15
Selección de la librería externa:
JDBC MySQL connector
•16
Selección de la librería externa:
quicktable (DBTable)
•17
Generar el archivo JAR de
un proyecto en Eclipse
•18
Generar el archivo JAR de
un proyecto en Eclipse (cont.)
•19
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: (no tiene mas soporte)
 http://quicktablejava.appspot.com/home.html
Eclipse: http://www.eclipse.org/downloads
Window builder: http://www.eclipse.org/windowbuilder/download.php
JDK 8 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

Más contenido relacionado

Similar a Explicacion de la Clase en Java-MySQL.pdf

Similar a Explicacion de la Clase en Java-MySQL.pdf (20)

Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
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
 
Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de Sistemas
 
Objeto Sql Command
Objeto Sql CommandObjeto Sql Command
Objeto Sql Command
 
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
 
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-20063. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
 
109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-java109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-java
 
Connection en Java
Connection en JavaConnection en Java
Connection en Java
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Sqlcommand
SqlcommandSqlcommand
Sqlcommand
 
Unidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javaUnidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde java
 
Presentación1
Presentación1Presentación1
Presentación1
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Connection Java
Connection JavaConnection Java
Connection Java
 
Notas clase
Notas claseNotas clase
Notas clase
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 
Notas clase
Notas claseNotas clase
Notas clase
 
Año del buen servicio al cuidadano
Año del buen servicio al cuidadanoAño del buen servicio al cuidadano
Año del buen servicio al cuidadano
 
Java con Base de Datos
Java con Base de Datos Java con Base de Datos
Java con Base de Datos
 

Último

SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...wvernetlopez
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVSebastianPaez47
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralsantirangelcor
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptMarianoSanchez70
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfSesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfannavarrom
 
Presentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxPresentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxYajairaMartinez30
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 

Último (20)

SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integral
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfSesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
Presentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxPresentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptx
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 

Explicacion de la Clase en Java-MySQL.pdf

  • 1. Java y MySQL Base de Datos MySQL Servidor JVM Librerías JDBC Java Runtime Cliente Aplicación Java Driver JDBC MySQL El driver implementa las interfaces del paquete JDBC estándar. Conexión cliente-servidor  JDBC: Java DataBase Connectivity •0
  • 2. Ciclo de ejecución Cargar Driver JDBC Establecer conexión a la base de datos Cerrar conexión Otra sentencia Ejecutar sentencia Actualización Consulta Armar SQL Crear sentencia Ejecutar Iterar sobre el resultado Armar SQL Crear sentencia Ejecutar •1
  • 3. Clase DriverManager (Paquete java.sql)  DriverManager: clase estática (no requiere instanciación de objetos) que administra los drivers jdbc disponibles para iniciar conexiones.  Connection getConnection(String url): 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  Connection getConnection(String url, String usuario, String clave): idem al anterior pero por compatibilidad y seguridad, el usuario y la clave de acceso, son parámetros individuales.  setLoginTimeout(int segundos): configura la cantidad de segundos de espera para intentar establecer la próxima conexión a una base de datos. •2
  • 4. Clase Connection (Paquete java.sql)  Connection: interfaz para implementar una sesión cliente-servidor con una base de datos.  Statement createStatement(): crea una nueva sentencia para ejecutar código SQL en forma directa en el servidor a traves de la conexión.  PreparedStatement prepareStatement(String sql): crea una sentencia preparada con una estructura predeterminada dada por parámetros, para luego enviar los datos efectivos.  boolean isValid(int timeout): 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(boolean autoCommit), commit(), rollback(): utilizados para el manejo de transacciones en la conexión actual. •3
  • 5. Conexión JDBC a MySQL // Intento de conexión a una base de datos String servidor = "localhost:3306"; String baseDatos = "batallas"; String usuario = "admin_batallas"; String clave = "pwbatallas"; String url = "jdbc:mysql://" + servidor + "/" +baseDatos+ "?serverTimezone=America/Argentina/Buenos_Aires"; java.sql.Connection cnx; try { cnx = java.sql.DriverManager.getConnection(url, usuario, clave); } catch (java.sql.SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } •4
  • 6. 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.  boolean execute(String sql): ejecuta cualquier tipo de SQL. Si es una consulta se debe recuperar el resultado mediante el método ResultSet getResultSet();  int executeUpdate(String sql): sólo para comandos de actualización de datos (insert, delete, update) o configuración dinámica de la sesión (transacciones, concurrencia, etc).  ResultSet executeQuery(String sql): sólo para consultas que retornan un resultado en filas o registros.  addBatch(String sql), int[] executeBatch(), clearBatch(): permiten ejecutar una secuencia de comandos enviados en un lote.  void setQueryTimeout(int seconds): impone un límite de espera por el resultado de la ejecución de la sentencia.  close(): cierra la sentencia liberando los recursos utilizados. •5
  • 7. 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.  boolean next(): avanza el índice interno del iterador a la proxima fila. Retorna false si no hay mas filas.  String getString(int columnIndex), String getString(String columnLabel): 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.  int getInt(...), long getLong(...), float getFloat(...), double getDouble(...), boolean getBoolean(...), Date getDate(...), Timestamp getTimestamp(...), Object getObject(...), etc...: una función para cada tipo de dato (java) de las columnas.  boolean wasNull(): 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.  ResultSetMetaData getMetaData(): para recuperar los meta-datos (cantidad de columnas, tipos, …) del conjunto resultado y de las columnas. •6
  • 8. 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"); int id = rs.getInt("id"); String capitan = rs.getString("capitan"); } rs.close(); stmt.close(); } catch (java.sql.SQLException ex) {} •7
  • 9. 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.  String getColumnLabel(int column), String getColumnName(int column): recuperar el nombre modificado o el nombre real de una columna respectivamente.  String getColumnClassName(int column): recuperar la clase de Java determinada como predefinida para el tipo de dato de una columna.  int getColumnType(int column), String getColumnTypeName(int column): recuperar el tipo de dato SQL estándar y SQL específico de una columna respectivamente.  int isNullable(int column), boolean isAutoIncrement(int column): propiedades particulares de una columna.  boolean isSearchable(int column): determina si es posible ejecutar un filtro en el WHERE de una consulta sobre la columna indicada. •8
  • 10. Actualización de datos 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.SQLException ex) { System.out.println("Mensaje: " + ex.getMessage()); // Mensaje retornado por MySQL System.out.println("Código: " + ex.getErrorCode()); // Código de error de MySQL System.out.println("SQLState: " + ex.getSQLState()); // Código de error del SQL standart }  Comandos o sentencias de manipulación de datos (insert, update, delete) que no retornan un resultado. •9
  • 11. Sentencias Preparadas 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();  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 envian 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. •10
  • 12. 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 o AbstractTableModel.  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
  • 13. Manejo de Fechas Para convertir String a java.util.Date: 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
  • 14. Importar el proyecto ”Batallas” en Eclipse •13
  • 15. Instalación del Driver JDBC de MySQL en Eclipse •14
  • 16. Selección de la librería externa •15
  • 17. Selección de la librería externa: JDBC MySQL connector •16
  • 18. Selección de la librería externa: quicktable (DBTable) •17
  • 19. Generar el archivo JAR de un proyecto en Eclipse •18
  • 20. Generar el archivo JAR de un proyecto en Eclipse (cont.) •19
  • 21. Generar el archivo JAR de un proyecto en Eclipse (cont.) •20
  • 22. 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: (no tiene mas soporte)  http://quicktablejava.appspot.com/home.html Eclipse: http://www.eclipse.org/downloads Window builder: http://www.eclipse.org/windowbuilder/download.php JDK 8 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