class 6.1 - conexion java-oracle

23
CONEXIÓN A LA BASE DE DATOS ORACLE Carrera: Computación e Informática Curso: Programación web JSP Docente: Ciclo: Sexto

Upload: jhoon-granados-santos

Post on 10-Nov-2015

60 views

Category:

Documents


5 download

DESCRIPTION

Class 6.1 - Conexion Java-Oracle

TRANSCRIPT

Presentacin de PowerPoint

CONEXIN A LA BASE DE DATOS ORACLECarrera: Computacin e InformticaCurso: Programacin web JSPDocente: Ciclo: SextoQu es JDBC?JDBC es el acrnimo de Java DataBase ConectivityEs una especificacin de un conjunto de clases y mtodos de operacin (API) que permiten a cualquier programa Java acceder a sistemas de bases de datos.El api JDBC lo podemos encontrar en los paquetes java.sql y javax.sql y sirven para:establecer conexiones con bases de datos enviar sentencias SQL a dichas BDs procesar los resultadosJDBC permite ejecutar instrucciones SQL (Structured Query Language: Lenguaje estructurado de consultas)

JDBCOfrece un estndar de conexin a cualquier base de datos disponible en el mercado.Permite obtener los datos en forma fcil y cmoda en ambientes cliente-servidor a travs de Internet/Intranet.

Arquitectura para JDBCSGBDAplicacin JAVAAPI JDBCJDBC Driver ManagerDriver JDBCDriver JDBC SGBDJDBCJDBC ofrece igual funcionalidad que ODBC (Open Database Connectivity) de Microsoft

Modelos de acceso a BDDe 3 capasLos comandos son enviados a la capa intermedia de servicios, la cual enva sentencias SQL a la base de datos. sta las procesa y enva los resultados de vuelta a la capa intermedia, para luego ser enviados al cliente.Permite un control de acceso y de actualizacin.Provee ventajas de performance.

AplicacinJavaJDBCDBMSApplet en Java oNavegador HTMLCliente GUILlamadas HTTP,Servlets,JSP,EJBServidorBDProtocoloBDArquitectura JDBCExiste ms de 02 formas distintas de establecer una conexin entre un programa java y una base de datosUsando la ODBC (creado por Microsoft para brindar una API estndar para comunicarse con bases de datos en una plataforma Windows)Usando un driver JDBC que se comunica con un driver desarrollado por la compaa que desarrollo el DBMS (que puede estar en cualquier lenguaje)Arquitectura JDBCPrograma JavaAPIJDBCDriverJDBCDriver ServidorJDBCPuenteJDBC-ODBCApi delproveedorBase de DatosEn el clienteEn elservidorCargando el DriverEs necesario primero cargar una clase con el driver de la base de datos (esto lo provee el vendedor de la DBMS)ORACLE:DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());PostgreSQL:DriverManager.registerDriver(new org.postgresql.Driver());MySQL:DriverManager.registerDriver(com.mysql.jdbc.Driver());SQLSERVERDriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver())Estableciendo la ConexinConnection conn = DriverManager.getConnection("Cadena de conexin");

Connection conn = DriverManager.getConnection ("url","login", "password");

Un objeto Connection representa una conexin a una base de datos.La clase DriverManager intenta ubicar el controlador que pueda conectarse a la base de datos representada en la URL.ConexinEjemplos de URL:PostgreSQLjdbc:postgresql://ORACLE:jdbc:oracle://jdbc:oracle:thin:@localhost:1521:orclMySQLjdbc:mysql://SQLServerjdbc:sqlserver://

Enviando sentencias SQLJDBC permite enviar cualquier tipo de sentencia SQL.

insertdeleteupdateselect create tablealter tabledrop table

Sentencias SQLJDBC provee 3 clases:Statement: Este objeto es usado para enviar sentecias SQL simples. Es creado por el mtodo createStatement.PreparedStatement: Este objeto es usado para sentencias que requieren uno o ms parmetros. La sentencia es precompilada y guardada para uso futuro.CallableStatement: Es usado para ejecutar procedimientos almacenados en la base de datos.La clase StatementStatement stmt = con.createStatement();En este momento la clase statement existe pero no tiene una sentencia SQL para ejecutar. Esta se puede pasar con los mtodos executeUpdate(String), usada para crear/modificar tablas (no hay resultados), tpicamente para create, update, delete...executeQuery(String) para hacer consultas, retornan resultados en un objeto de la clase ResultSet, tpicamente para selectEjemplos de excuteUpdatestmt.executeUpdate(create table customer (name varchar(60), address varchar(70), sex varchar(1) ...);stmt.executeUpdate(insert into customer (Florentino, Psje La Cultura, M, ...);stmt.executeUpdate(update customer set address = 02 de mayo nro 145 where customerid = C0001 );Stmt.executeUpdate( delete from customer where customerid=C0002 );Ejemplos de excuteQuerystmt.executeQuery(select * from customer + where customer = C0001);Los resultados de una consulta se reciben en un objeto de la clase ResultSetResultSet rs = stmt.executeQuery(....);

Prepared StatementsDonde se ha usado Satement es generalmente posible usar PreparedStatement para hacer ms eficientes las consultasUna instruccin con PreparedStatement va a ser, en la mayora de los casos, traducida a una consulta SQL nativa de la base de datos en tiempo de compilacinLa otra ventaja es que es posible usar parmetros dentro de ella, pudiendo hacer ms flexibles las consultas o hacer varias consultas distintas dentro de un ciclo cambiando el valor de algunas variables PreparedStatement ps = con.prepareSatatement(update customer set name = ? where customerid = ?); ps.setString(1,Juan); ps.setString(2,C0001);

TransaccionesUna transaccin consiste en una o ms sentencias que han sido ejecutadas y luego confirmadas (commit) o deshechas (rolled back)Auto-commit est preseteado.Si Auto-commit est desactivado se debe usar los mtodos commit o rollback explcitamente.

TransaccionesPara hacer uso de transacciones debe primero dessetearse el auto-commitconn.setAutoCommit(false)PreparedStatement ps = .........ps.executeUpdate() .... conn.commit();

Stored ProceduresEs un grupo de sentencias SQL que se agrupan lgicamente en una unidad para efectuar una determinada tareaExisten en la mayora de los DBMS pero son dependientes de estas (no es muy estndar la forma cmo se escriben/ejecutan) Generalmente reciben parmetrosSe escriben con un Update y se ejecutan con un Query

Para llamar el Stored ProcedureMySQL:CallableStatement cs;cs = conn.prepareCall({call SHOW_SUPPLIERS});ResultSet rs = cs.executeQuery(); Oracle:cs = conn.prepareCall(" begin update_customer(?,?,?,?,?); end; ");PostgreSQL:cs=conn.prepareCall(" { ?=call insert_customer(?, ?, ?, ?, ?) } ");

A continuacin:Vamos a implementar la clase DBConn en nuestro proyecto StoreWeb 1.0

Gracias por su atencin