La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912.

Presentaciones similares


Presentación del tema: "Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912."— Transcripción de la presentación:

1 Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912

2 JDBC Java Database Connectivity es el servicio e interfases de programación para manipular bases de datos relacionales por medio del lenguaje de programación Java. Para programar JDBC se necesita de clases proveedoras que realizan la conexión y manipulación del acceso a la base de datos. El manejador de JDBC es proporcionado por el fabricante de bases de datos. Es común encontrar manejadores (drivers) JDBC para Oracle, MS SQL Server, Sybase, MySQL, Postgres, Informix, DB2. La interfase de programación de aplicaciones (API) está definido en el paquete java.sql.

3 Estructuras de clases JDBC DriverManager – Realiza la gestión de la conexión a la base de datos Connection – Configura la conexión a la base de datos; y permite crear objetos/sentencias SQL que son ejecutadas en el RDMBS Statement – Dada una sentencia SQL en forma de cadenas de caracteres, permite ejecutar consultas, inserciones, modificaciones, borrado; o instrucciones propia del RDBMS PreparedStatement – Permite manipular sentencias SQL por medio de parámetros y permite precompilar las instrucciones que se envían al manejador CallableStatement – Permite invocar a procedimientos almacenados ResultSet – Objeto que permite manipular en memoriar el resultado de una consulta, recorriendo renglones y sus columnas SQLException – Excepción disparada ante cualquier error del RDBMS Se debe importar el paquete java.sql

4 Cargar al JDBC Driver Cargar el Driver JDBC, cargando dinámicamente la clase que lo implementa //para conexión a HSQLDB Class.forName("org.hsqldb.jdbcDriver“); //para conexión a MySQL Class.forName(“com.mysql.jdbc.Driver“); //para conexión a Oracle Class.forName(“ oracle.jdbc.OracleDriver “); //para conexión a PostgreSQL Class.forName(“ org.postgresql.Driver”); //para conexión con ODBC Class.forName(“ sun.jdbc.odb.JdbcOdbcDriver”); Cada driver es distinto, por base de datos El Driver JDBC debe estar en la ruta de clases (CLASSPATH) Java

5 Conectarse a la Base de datos Por medio del método estático getConnection() de la clase DriverManager, se realiza la conexión a la base de datos. Se debe proporcionar el URL de conexión a la base de datos. //Conexion a HSQLDB Connection c=DriverManager.getConnection(“jdbc:hsqldb:hsql://localhost/bookstore“,”sa”,””); //Conexión a MySQL Connection c=DriverManager.getConnection(“jdbc:mysql://localhost/bookstore“,”jim”,”s3cr3t”); //Conexión a PostgresSQL Connection c=DriverManager.getConnection(“jdbc:postgresql://localhost/mydatabase”,”myuser”,”secret”); //Conexión a Oracle Connection c=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:mydb“,”scott”,”tiger”); Adicional, debe proporcionarse el usuario y password. Toda conexión, debe cerrarse al concluir el procesamiento, por medio del método close() c.close();

6 Realizar un consulta SQL Se utiliza la clase Statement; y los objetos de este tipo se obtienen por medio de createStatement final String query= "SELECT * FROM AUTHORS"; Statement stmt=this.conexion.createStatement(); ResultSet result=stmt.executeQuery(query); Se puede utilizar la clase PreparedStatement; y los objetos de este tipo se obtienen por medio de prepareStatement final String query="SELECT * FROM TITLES WHERE ISBN=?"; PreparedStatement pstmt=this.conexion.prepareStatement(query); pstmt.setString(1,isbn); ResultSet result=pstmt.executeQuery();

7 Procesar los resultados de una consulta SQL Tanto Statement y PreparedStatement, al realizar consultas SQL, retornan un objeto de tipo ResultSet ResultSet contiene de 0 a más renglones que el resultado de la consulta Cada renglón contiene una o mas columnas Se puede recorrer al objeto ResultSet, por medio del método next(), que retorna false cuando no hay mas renglones. El resultado se puede almancenar en un arreglo, o en estructuras de datos List, Map o Set. Por ejemplo, el siguiente código guarda cada columna de un renglon en una estructura Map, y dicho Map se agrega a una estructrua List while (result.next()){ Integer id= new Integer(result.getInt(cols[0])); String firstname= result.getString(cols[1]); String lastname= result.getString(cols[2]); HashMap data= new HashMap(); data.put(cols[0],id); data.put(cols[1],firstname); data.put(cols[2],lastname); list.add(data); } Al concluir el procesamiento, se debe cerrar al objeto ResultSet; y al objeto Statement o PreparedStatement result.close(); stmt.close();

8 Inserción, Modificación y Borrado Para insertar, modificar o borrar se debe utilizar el método executeUpdate. En el caso de PreparedStatement, se puede hacer asi: Inserción final String query="INSERT INTO AUTHORS(AUTHORID,FIRSTNAME,LASTNAME) VALUES(?,?,?)"; PreparedStatement pstmt=this.conexion.prepareStatement(query); pstmt.setInt(1,id); pstmt.setString(2,firstName); pstmt.setString(3,lastName); int inserted= pstmt.executeUpdate(); Modificación final String query="UPDATE AUTHORS SET FIRSTNAME= ?,LASTNAME=? WHERE AUTHORID=?"; PreparedStatement pstmt=this.conexion.prepareStatement(query); pstmt.setString(1,firstName); pstmt.setString(2,lastName); pstmt.setInt(3,id); int updated= pstmt.executeUpdate(); Borrado final String query="DELETE FROM AUTHORS WHERE AUTHORID=?"; PreparedStatement pstmt=this.conexion.prepareStatement(query); pstmt.setInt(1,id); int deleted= pstmt.executeUpdate(); El método executeUpdate retorna el número de elementos modfiicados

9 Manejo de transacciones Una transacción es una unidad lógica de trabajo que debe ser completada o abortada; y no acepta estados intermedios. Una transacción a la base de datos consistente en la combinación de operaciones insert, update, delete; o cualquiera que altere a los datos. Por omisión, cada operación realizada al RDBMS es aplicada como una transacción. Se puede dermarcar un conjunto de transacciones, utilizando JDBC. Se debe apagar la opción de autoCommit y al concluir las operaciones, realizar un commit o rollback connection.setAutoCommit(false); //realizar múltiples operaciones insert, update, delete if (exito) connection.commit(); else connection.rollback();


Descargar ppt "Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912."

Presentaciones similares


Anuncios Google