[go: up one dir, main page]

0% encontró este documento útil (0 votos)
13 vistas4 páginas

Clase Java MySQL 6xh

Ok vamos bien

Cargado por

uesdagabrielfm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas4 páginas

Clase Java MySQL 6xh

Ok vamos bien

Cargado por

uesdagabrielfm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

Java y MySQL Ciclo de ejecución

 JDBC: Java DataBase Connectivity


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

JVM
Cerrar conexión
Otra sentencia
•0 •1

Clase DriverManager (Paquete java.sql) Clase Connection (Paquete java.sql)

DriverManager: clase estática (no requiere instanciación de objetos) que administra los
drivers jdbc disponibles para iniciar conexiones.  Connection: interfaz para implementar una sesión cliente-servidor con una base de datos.

 Connection getConnection(String url): intenta iniciar una conexión a una base de  Statement createStatement(): crea una nueva sentencia para ejecutar código SQL en
datos según los parámetros especificados en el url. Generalmente el string de conexión forma directa en el servidor a traves de la conexión.
tiene el siguiente formato:
jdbc:<driver>:<propiedades de la conexión>  PreparedStatement prepareStatement(String sql): crea una sentencia preparada
Para MySQL: con una estructura predeterminada dada por parámetros, para luego enviar los datos
jdbc:mysql://<servidor>:<puerto>/<base_datos>?<parametros> efectivos.
Por ejemplo: jdbc:mysql://localhost:3306/batallas?&user=barco&password=pwbarco
 boolean isValid(int timeout): verifica que la conexión está abierta y disponible para
 Connection getConnection(String url, String usuario, String clave): idem al anterior ejecutar una operación. Es necesaria para determinar si la conexión de red aun
pero por compatibilidad y seguridad, el usuario y la clave de acceso, son parámetros permanece activa desde la ejecución del último SQL.
individuales.
 close(): cierra la conexión y libera los recursos utilizados.
 setLoginTimeout(int segundos): configura la cantidad de segundos de espera para
intentar establecer la próxima conexión a una base de datos.  setAutoCommit(boolean autoCommit), commit(), rollback(): utilizados para el
manejo de transacciones en la conexión actual.

•2 •3

Conexión JDBC a MySQL Clase Statement (Paquete java.sql)

// Intento de conexión a una base de datos Statement: se utiliza para ejecutar una sentencia SQL en base a un string estático, ya sea
String servidor = "localhost:3306"; un comando o una consulta.
String baseDatos = "batallas";
 boolean execute(String sql): ejecuta cualquier tipo de SQL. Si es una consulta se debe
String usuario = "admin_batallas";
recuperar el resultado mediante el método ResultSet getResultSet();
String clave = "pwbatallas";
String url = "jdbc:mysql://" + servidor + "/" +baseDatos+  int executeUpdate(String sql): sólo para comandos de actualización de datos (insert,
"?serverTimezone=America/Argentina/Buenos_Aires"; delete, update) o configuración dinámica de la sesión (transacciones, concurrencia, etc).
java.sql.Connection cnx;  ResultSet executeQuery(String sql): sólo para consultas que retornan un resultado en
try filas o registros.
{
cnx = java.sql.DriverManager.getConnection(url, usuario, clave);  addBatch(String sql), int[] executeBatch(), clearBatch(): permiten ejecutar una
} secuencia de comandos enviados en un lote.
catch (java.sql.SQLException ex)
{  void setQueryTimeout(int seconds): impone un límite de espera por el resultado de la
System.out.println("SQLException: " + ex.getMessage()); ejecución de la sentencia.
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());  close(): cierra la sentencia liberando los recursos utilizados.
}

•4 •5
Clase ResultSet (Paquete java.sql) Consultas SQL
ResultSet: contiene el conjunto resultado de una consulta SQL, estructurado en filas y
columnas, con el comportamiento de un iterador. try
{
 boolean next(): avanza el índice interno del iterador a la proxima fila. Retorna false si no hay // Se crea una sentencia jdbc para realizar la consulta
mas filas. java.sql.Statement stmt = cnx.createStatement();
 String getString(int columnIndex), String getString(String columnLabel): permiten
// Se prepara el string SQL de la consulta
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. String sql = "SELECT nombre_barco, id, capitan FROM barcos”;

 int getInt(...), long getLong(...), float getFloat(...), double getDouble(...), // Se ejecuta la sentencia y se recibe un resultado
boolean getBoolean(...), Date getDate(...), Timestamp getTimestamp(...), java.sql.ResultSet rs = stmt.executeQuery(sql);
Object getObject(...), etc...: una función para cada tipo de dato (java) de las columnas.
// Se recorre el resultado
 boolean wasNull(): verifica si el último valor recuperado de una columna correpondía al while (rs.next())
valor NULL de SQL. {
String nombreBarco = rs.getString("nombre_barco");
 boolean previous(), boolean first(), boolean last(), boolean absolute(int row), boolean int id = rs.getInt("id");
relative(int rows): funciones para navegar en el conjunto resultado. String capitan = rs.getString("capitan");
}
 ResultSetMetaData getMetaData(): para recuperar los meta-datos (cantidad de columnas, rs.close();
tipos, …) del conjunto resultado y de las columnas. stmt.close();
}
•6 catch (java.sql.SQLException ex) {} •7

Clase ResultSetMetaData (Paquete java.sql) Actualización de datos


Comandos o sentencias de manipulación de datos (insert,
ResultSetMetaData: permite obtener los tipos y propiedades de las columnas de un
update, delete) que no retornan un resultado.

conjunto resultado (ResultSet):


try
 int getColumnCount(): cantidad de columnas en el resultado. {
// Se crea una sentencia jdbc para realizar la consulta
 String getColumnLabel(int column), String getColumnName(int column): recuperar
java.sql.Statement stmt = cnx.createStatement();
el nombre modificado o el nombre real de una columna respectivamente.
// Se prepara el string SQL de la inserción
 String getColumnClassName(int column): recuperar la clase de Java determinada String sql = "INSERT INTO barcos (nombre_barco, id, capitan) " +
como predefinida para el tipo de dato de una columna. "VALUES ('Bismark', 22, 'Ernst Lindeman')";
// Se ejecuta la inserción
 int getColumnType(int column), String getColumnTypeName(int column): recuperar stmt.execute(sql);
el tipo de dato SQL estándar y SQL específico de una columna respectivamente. // Se retornan los recursos utilizados cerrando la sentencia
stmt.close();
 int isNullable(int column), boolean isAutoIncrement(int column): propiedades }
particulares de una columna. catch (java.sql.SQLException ex)
{
 boolean isSearchable(int column): determina si es posible ejecutar un filtro en el System.out.println("Mensaje: " + ex.getMessage()); // Mensaje
WHERE de una consulta sobre la columna indicada. retornado por MySQL
System.out.println("Código: " + ex.getErrorCode()); // Código de
error de MySQL System.out.println("SQLState: " +
•8 ex.getSQLState()); // Código de error del SQL standart •9
}

Sentencias Preparadas Clase JTable (paquete javax.swing.table)

Permite mostrar graficamente tablas con datos, permitiendo opcionalmente al usuario


Se utilizan cuando una misma sentencia (consulta o actualización) debe


editar los datos.
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.
String sql = "INSERT INTO barcos (nombre_barco, id, capitan)
VALUES (?, ?, ?)";  Cada tabla JTable usa un objeto TableModel para manejar y almacenar los datos.
// Se crea un sentencia preparada
java.sql.PreparedStatement stmt = cnx.prepareStatement(sql); Si no se especifica ningun modelo de tabla, JTable utiliza por defecto el modelo
// Se ligan los parámetros efectivos DefaultTableModel que almacena los datos como vector de vectores.
stmt.setString(1, "Bismark");
stmt.setInt(2, 22); Para crear un modelo de tabla se debe implementar la interface TableModel. Generalmente se
stmt.setString(3, "Ernst Lindeman"); implementa extendiendo la clase DefaultTableModel o AbstractTableModel.
// Se ejecuta la inserción
stmt.executeUpdate(); Clase DBTable (paquete quick.dbtable) Esta construido sobre JTable ( comparte muchos
// se cierra la sentencia métodos y propiedades) y provee funciones específicas para bases de datos.
stmt.close(); •10 •11
(Ver ejemplos de su uso en proyecto Batallas)
Manejo de Fechas Importar el proyecto ”Batallas” en Eclipse
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 •13

Instalación del Driver JDBC Selección de la librería externa


de MySQL en Eclipse

•14 •15

Selección de la librería externa: Selección de la librería externa:


JDBC MySQL connector quicktable (DBTable)

•16 •17
Generar el archivo JAR de Generar el archivo JAR de
un proyecto en Eclipse un proyecto en Eclipse (cont.)

•18 •19

Generar el archivo JAR de Referencias


un proyecto en Eclipse (cont.) 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

•20 •21

También podría gustarte