Tema – 17Gestión de bases de datos
17.1. Introducción• Es habitual que los datos que va a utilizar  nuestro programa estén almacenados en una  base de datos,...
17.1. Introducción• Para que nuestros programas puedan realizar  operaciones con los datos almacenados en una  base de dat...
17.2. Registro del driver JDBC• Para poder establecer conexión con una base de datos  en primer lugar vamos a necesitar de...
17.2. Registro del driver JDBC• El registro del driver en nuestro programa consiste en cargar  la clase que corresponde a ...
17.3. Conexión a la BDD• Una vez hemos registrado el driver JDBC en nuestro  programa, lo siguiente es hacer la conexión c...
17.3. Conexión a la BDD• En el código anterior el método “getConnection”  recibe tres parámetros de tipo String que indica...
17.3. Conexión a la BDD• getConnection(String url):      con = DriverManager.getConnection        (“jdbc:mysql://localhost...
17.3. Consultas a la BDD• Una vez conectados a la base de datos  podremos acceder a los datos ejecutando  sentencias SQL.•...
17.3. Consultas a la BDD      import java.sql.Statement;      …      Connection con = DriverManager.getConnection(url,    ...
17.3. Consultas a la BDD      import java.sql.ResultSet;      …      Statement stmt = con.createStatement();      ResultSe...
17.3. Consultas a la BDD• Algunos métodos del ResultSet son:      – boolean next(): desplaza el cursor a la siguiente fila...
17.3. Consultas a la BDD• Para acceder a los datos de cada fila de un ResultSet  usamos los métodos “gets” (getInt, getBoo...
17.4. Manipulación de la información• Podemos acceder a la información de nuestra  BDD para modificarla de dos formas:    ...
17.5. Inserción de registros conStatement• Para poder ejecutar la sentencia INSERT con el  objeto “Statement” usamos el mé...
17.6. Inserción de registros conResultSet• Para hacer INSERT con el objeto ResultSet usamos el  método “insertRow”:      C...
17.6. Inserción de registros conResultSet• Obsérvese cómo se ha creado el objeto de la  clase “Statement”, pasándole dos p...
17.7. Actualización de registros conStatement• Ejecutamos la sentencia UPDATE con el  método “executeUpdate” del objeto  “...
17.8. Actualización de registros conResultSet• Para hacer UPDATE con el objeto ResultSet usamos el método  “updateRow”:   ...
17.9. Borrado de registros conStatement• Ejecutamos la sentencia DELETE con el  método “executeUpdate” del objeto  “Statem...
17.10. Borrado de registros conResultSet• Para hacer DELETE con el objeto ResultSet usamos el método  “deleteRow”:      Co...
17.11. Cerrar conexión• Es importante tener en cuenta que debemos  liberar los recursos de la BDD cuando ya no los  usemos...
Upcoming SlideShare
Loading in...5
×

T17 - Gestion de BBDD

316

Published on

Gestión de bases de datos con Java. JDBC

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
316
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

T17 - Gestion de BBDD

  1. 1. Tema – 17Gestión de bases de datos
  2. 2. 17.1. Introducción• Es habitual que los datos que va a utilizar nuestro programa estén almacenados en una base de datos, en lugar de en ficheros de texto.• En este capítulo veremos las herramientas que nos proporciona Java para que nuestros programas accedan a la información contenida en una base de datos.PROGRAMACIÓN – Daniel Santiago 2
  3. 3. 17.1. Introducción• Para que nuestros programas puedan realizar operaciones con los datos almacenados en una base de datos, tenemos dos interfaces de aplicaciones (APIs): – Open Database Connectivity (ODBC), utilizada por Microsoft (también se puede usar con Java). – Java Database Connectivity (JDBC), desarrollada por Oracle para programas escritos en Java.• Ambas APIs nos dan las herramientas para conectar con una base de datos y recuperar y manipular la información que contiene.PROGRAMACIÓN – Daniel Santiago 3
  4. 4. 17.2. Registro del driver JDBC• Para poder establecer conexión con una base de datos en primer lugar vamos a necesitar descargarnos el driver JDBC para la BDD con la que vamos a trabajar.• En este tutorial se va a usar MySQL. Podemos descargar el conector de la url: – http://www.mysql.com/downloads/connector/j/• Para incluir el driver en un proyecto de eclipse realizamos las mismas operaciones que en el siguiente tutorial: – http://danisantiago.com/instalacion-jdbc-sqlserver-2008- en-eclipse/PROGRAMACIÓN – Daniel Santiago 4
  5. 5. 17.2. Registro del driver JDBC• El registro del driver en nuestro programa consiste en cargar la clase que corresponde a dicho driver en la máquina virtual de Java. Usamos la clase Class con ese fin: try{ Class.forName(“com.mysql.jdbc.Driver”); } catch(Exception e){ System.out.println(“Error al cargar el driver”); }• El String “com.mysql.jdbc.Driver” se obtiene observando la ruta en la que se encuentra la clase Driver del driver que acabamos de añadir al proyecto:PROGRAMACIÓN – Daniel Santiago 5
  6. 6. 17.3. Conexión a la BDD• Una vez hemos registrado el driver JDBC en nuestro programa, lo siguiente es hacer la conexión con la base de datos. Para ello usamos el método “getConnection” de la clase DriverManager. Este método nos devuelve un objeto de la interfaz Connection. import java.sql.Connection; import java.sql.DriverManager; … Connection con = DriverManager.getConnection(“jdbc:mysql://localhost/prueba”, “root”, “12345”);PROGRAMACIÓN – Daniel Santiago 6
  7. 7. 17.3. Conexión a la BDD• En el código anterior el método “getConnection” recibe tres parámetros de tipo String que indican: – URL de la base de datos a la que se quiere conectar (servidor localhost, bdd prueba). – Usuario con el que se conecta. – Password del usuario.• También se puede usar el método “getConnection” de las siguientes formas: – getConnection(String url); – getConnection(String url, Properties info);PROGRAMACIÓN – Daniel Santiago 7
  8. 8. 17.3. Conexión a la BDD• getConnection(String url): con = DriverManager.getConnection (“jdbc:mysql://localhost/prueba?user=root&password=12345”);• getConnection(String url, Properties info): import java.util.Properties; … Properties prop = new Properties(); prop.put(“user”, “root”); prop.put(“password”, “12345”); con = DriverManager.getConnection(“jdbc:mysql://localhost/prueba”, prop);PROGRAMACIÓN – Daniel Santiago 8
  9. 9. 17.3. Consultas a la BDD• Una vez conectados a la base de datos podremos acceder a los datos ejecutando sentencias SQL.• El objeto “Connection” tiene un método “createStatement()” que conecta con el driver que gestiona la BDD. El método devuelve un objeto “Statement”, con el que podremos ejecutar las sentencias SQL.PROGRAMACIÓN – Daniel Santiago 9
  10. 10. 17.3. Consultas a la BDD import java.sql.Statement; … Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement();• Para ejecutar un SELECT sobre la BDD usaremos el método “executeQuery(String)” de la clase “Statement”.• Todas los datos resultantes de la ejecución del SELECT se almacenan en un “ResultSet”.PROGRAMACIÓN – Daniel Santiago 10
  11. 11. 17.3. Consultas a la BDD import java.sql.ResultSet; … Statement stmt = con.createStatement(); ResultSet rs = stmt.ExecuteQuery(“SELECT * FROM usuario”);• El ResultSet contiene varias filas con el resultado de la consulta. Para movernos entre ellas usaremos un cursor, que inicialmente se sitúa delante de la primera fila.PROGRAMACIÓN – Daniel Santiago 11
  12. 12. 17.3. Consultas a la BDD• Algunos métodos del ResultSet son: – boolean next(): desplaza el cursor a la siguiente fila. Devuelve true si hay fila, false si no. – boolean first(): sitúa el cursor en la primera fila. Devuelve true si hay al menos una fila. – void beforeFirst(): sitúa el cursor delante de la primera fila. – boolean previous(): sitúa el cursor en la fila anterior, si hay. Si no devuelve false. – void afterLast(): sitúa el cursor detrás de la última fila. – boolean absolute(int i): sitúa el cursor en la fila i. Devuelve true si hay una fila en esa posición. Las filas empiezan a numerarse a partir de 1. – boolean relative(int i): desplaza el cursor i posiciones desde donde se encuentra actualmente. Devuelve true si hay una fila en esa posición. – boolean last(): sitúa el cursor en la última fila. Devuelve true si hay al menos una fila.PROGRAMACIÓN – Daniel Santiago 12
  13. 13. 17.3. Consultas a la BDD• Para acceder a los datos de cada fila de un ResultSet usamos los métodos “gets” (getInt, getBoolean…). A cada dato se puede acceder usando su posición (empezando por 1) en la fila o su nombre. ResultSet rs = stmt.executeQuery(“SELECT * FROM usuario”); while(rs.next()){ System.out.println(rs.getInt(“id”)); /*Accedo por el nombre del dato*/ System.out.println(rs.getString(2)); /*Accedo por la posición del dato en la fila*/ System.out.println(rs.getString(3)); } rs.close(); //Cierro el ResultSet ya usadoPROGRAMACIÓN – Daniel Santiago 13
  14. 14. 17.4. Manipulación de la información• Podemos acceder a la información de nuestra BDD para modificarla de dos formas: – Usando los métodos de la clase “Statement”. – A través del objeto “ResultSet”.• Las operaciones que podremos hacer son las típicas del lenguaje DML de SQL (INSERT, UPDATE, DELETE).• A continuación se verá el código correspondiente a cada una de las opciones que tenemos.PROGRAMACIÓN – Daniel Santiago 14
  15. 15. 17.5. Inserción de registros conStatement• Para poder ejecutar la sentencia INSERT con el objeto “Statement” usamos el método “executeUpdate”: Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); stmt.executeUpdate(“INSERT INTO usuario VALUES(46, ‘Elena’, ‘1234567890’)”);PROGRAMACIÓN – Daniel Santiago 15
  16. 16. 17.6. Inserción de registros conResultSet• Para hacer INSERT con el objeto ResultSet usamos el método “insertRow”: Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery(“SELECT * FROM usuario”); rs.moveToInsertRow(); rs.updateInt(“id”, 47); rs.updateString(“nombre”, “Dani”); rs.updateString(“contrasenya”, “miPass”); rs.insertRow();PROGRAMACIÓN – Daniel Santiago 16
  17. 17. 17.6. Inserción de registros conResultSet• Obsérvese cómo se ha creado el objeto de la clase “Statement”, pasándole dos parámetros: Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY , ResultSet.CONCUR_UPDATABLE); – TYPE_FORWARD_ONLY: a la hora de acceder a los datos de un ResultSet sólo se podrán recorrer sus filas secuencialmente empezando por la primera. – CONCUR_UPDATABLE: los datos del ResultSet se pueden modificar. Los cambios afectarán también a la base de datos.PROGRAMACIÓN – Daniel Santiago 17
  18. 18. 17.7. Actualización de registros conStatement• Ejecutamos la sentencia UPDATE con el método “executeUpdate” del objeto “Statement”: Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); stmt.executeUpdate(“UPDATE usuario SET nombre = ‘Helena’ WHERE id = 46”);PROGRAMACIÓN – Daniel Santiago 18
  19. 19. 17.8. Actualización de registros conResultSet• Para hacer UPDATE con el objeto ResultSet usamos el método “updateRow”: Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery(“SELECT * FROM usuario”); boolean encontrado = false; while(rs.next() && !encontrado){ if(rs.getInt(“id”) == 46){ rs.updateString(“nombre”, “Helena”); rs.updateRow(); encontrado = true; } }PROGRAMACIÓN – Daniel Santiago 19
  20. 20. 17.9. Borrado de registros conStatement• Ejecutamos la sentencia DELETE con el método “executeUpdate” del objeto “Statement”: Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); stmt.executeUpdate(“DELETE FROM usuario WHERE id = 46”);PROGRAMACIÓN – Daniel Santiago 20
  21. 21. 17.10. Borrado de registros conResultSet• Para hacer DELETE con el objeto ResultSet usamos el método “deleteRow”: Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery(“SELECT * FROM usuario”); boolean encontrado = false; while(rs.next() && !encontrado){ if(rs.getInt(“id”) == 46){ rs.deleteRow(); encontrado = true; } }PROGRAMACIÓN – Daniel Santiago 21
  22. 22. 17.11. Cerrar conexión• Es importante tener en cuenta que debemos liberar los recursos de la BDD cuando ya no los usemos, es decir, cerrar la conexión.• Al terminar nuestro trabajo con la base de datos cerraremos los siguientes recursos: – Cerramos el ResultSet: rs.close(); – Cerramos Statement: stmt.close(); – Cerramos Connection: con.close();PROGRAMACIÓN – Daniel Santiago 22
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×