clase conexion java - analisis de sistemas

18
SISTEMA DE COMPRAS CONEXIÓN A BASE DE DATOS ANALISIS DE SISTEMAS

Upload: jose-bustamante

Post on 22-Jul-2015

102 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Clase conexion java - Analisis de Sistemas

SISTEMA DE COMPRAS CONEXIÓN A BASE DE DATOS

ANALISIS DE SISTEMAS

Page 2: Clase conexion java - Analisis de Sistemas

Base de Datos con JAVA

TEMAS

• Introducción.

• Drivers.

• Cursores y Bloqueo.

• Excepciones.

• Prepared Statemnet.

• Transacciones.

• Strore Procedures.

Page 3: Clase conexion java - Analisis de Sistemas

MODELO BD

Page 4: Clase conexion java - Analisis de Sistemas

JDBC – JAVA DATA BASE CONECTION

• API de JAVA que permite la ejecución de instrucciones

SQL.

• Para que una aplicación pueda hacer operaciones en una

BD, debe hacerlo a través de 2 interfaces:

• JDBC API para aplicaciones: paquete de JAVA (java.sql) que

contiene un conjunto de clases y interfaces escritas en JAVA

• JDBC Driver para manejadores o drivers: permite la conexión

entre la aplicación y al BD.

• Los drivers son programas de bajo nivel que se encargan

de mantener la comunicación entre la API de aplicaciones

y el RDBMS.

Page 5: Clase conexion java - Analisis de Sistemas

Cargar Drivers

Conectarse,

Definir Tx

Obtener

Conexión

Objeto

Statement

Voy a realizar

un DML,DDL

Objeto

ResultSet

Objeto

PreparedStatement

Objeto

CallableStatement

Voy a ejecutar

operación pre

compilada

Voy a trabajar

con Stored

Procedures

ejecuto

ejecuto

ejecuto

ejecuto

Liberar

Recursos

Conexión a un RDBMS

Page 6: Clase conexion java - Analisis de Sistemas

Conexión y Acceso a RDBMS

Objeto Connection

• El objeto Connection representa una conexión con la BD.

• La sesión incluye las sentencias SQL que se ejecuten así como los resultados que se obtengan. Una aplicación puede tener una o más conexiones con una BD o puede tener conexiones con diferentes BD.

• Para registrar un driver utilizamos: Class.forName(clase.del.driver);

• Podemos abrir una conexión :

• DriverManager.getConnection(url,usr,pwd);• url: dirección fisica del RDBMS mediante el driver

• usr: usuario de base de datos

• pwd: contraseña de base de datos

Page 7: Clase conexion java - Analisis de Sistemas

JDBC URL

Proporciona una forma de identificar una fuente de datos. Es

particular para cada tipo y fabricante de Driver. Pueden identificarse

a través de servicios como DNS, NIS, NIS+, etc

jdbc : <subprotocolo>:<subnombre>

jdbc : Protocolo. Es un valor fijo.

<subprotocolo> : El nombre del driver o el nombre de un

mecanismo de conexión que puede ser soportado por uno o

más drivers.

<subnombre> : El nombre que identifica a la fuente de datos.

Puede tener diferentes sintaxis de acuerdo al fabricante del

driver.

Conexión y Acceso a RDBMS

Page 8: Clase conexion java - Analisis de Sistemas

Conexión y Acceso a RDBMS

Conexión con ODBC

Class.forName("jdbc.odbc.JdbcOdbcDriver"); //Carga el driver

String url = "jdbc:odbc:basedeDatos";

Connection con = DriverManager.getConnection(url, "userID", "passwd");

Class.forName(”oracle.jdbc.driver.OracleDriver"); //Carga el driver

Connection con = DriverManager.getConnection

("jdbc:oracle:thin:@<database>" , " userID ", " passwd ");

Conexión con Oracle

Class.forName(” com.mysql.jdbc.Driver"); //Carga el driver

Connection con = DriverManager.getConnection

("jdbc:mysql://127.0.0.1/<database>" , " userID ", " passwd ");

Conexión con MySQL

Page 9: Clase conexion java - Analisis de Sistemas

Objeto Statement

El objeto statement se utiliza para enviar instrucciones SQL a

la BD.

• Existen tres tipos de Statement :

• Statement : Instrucciones SQL

• PreparedStatement : Instrucciones SQL PreCompiladas

• CallableStatement : StoreProcedures

• Connection con = DriverManager.getConnection(url,usr,pwd);

• Statement stmt = con.createStatement();

• Una vez terminada su utilización el objeto statement es recogido por el

recolector de basura, pero podemos cerrarlo con el metodo

stmt.close();

Page 10: Clase conexion java - Analisis de Sistemas

Ejecución de Sentencias SQL

La sentencias SQL se ejecutan normalmente con :

• executeUpdate() : INSERT, UPDATE, DELETE, CREATE

TABLE, DROP TABLE. Retorna el número de filas que

han sido alteradas.

• executeQuery() : Para utilizarlo con sentencias SELECT

Ejem.

stmt.executeQuery("SELECT a, b, c FROM Table2");

stmt.executeUpdate(“INSERT INTO Detalles VALUES(10,10,´A´);

Page 11: Clase conexion java - Analisis de Sistemas

Ejecución de Sentencias SQL

También podemos ejecutar sentencias en batch con el

método :

• executeBatch() : Podemos enviar múltiples sentencias

SQL y tratarlas como una unidad.

• Statement stmt = con.createStatement();

• con.setAutoCommit(false);

• stmt.addBatch("INSERT INTO employees VALUES (1000, 'Joe Jones')");

• stmt.addBatch("INSERT INTO departments VALUES (260, 'Shoe')");

• stmt.addBatch("INSERT INTO emp_dept VALUES (1000, '260')");

• int [ ] updateCounts = stmt.executeBatch();

Page 12: Clase conexion java - Analisis de Sistemas

Objeto ResultSet

• El resultSet contiene los resultados de la ejecución de un

query SQL en un cursor que apunta a la fila actual de datos. El

desplazamiento se da cada vez que se llama al metodo next().

• Por default el desplazamiento es hacia delante solamente.

JDBC 2.0 permite diversos desplazamientos : previous, first,

last, absolute, relative, afterLast, and beforeFirst.

• Ejem.

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");

while (rs.next()) {

...// realizamos diversas operaciones con el cursor

}

Page 13: Clase conexion java - Analisis de Sistemas

Objeto ResultSet

• Número de filas en un ResultSet :

String sql = "select last_name, first_name from employees“;

ResultSet rs = stmt.executeQuery(sql);

rs.last();

int numberOfRows = rs.getRow();

System.out.println("XYZ, Inc. has " + numberOfRows +

"employees");

rs.beforeFirst();

while (rs.next()) {

. . . // operaciones con el cursor

}

Page 14: Clase conexion java - Analisis de Sistemas

Objeto ResultSet

Obteniendo Datos de un ResultSet :

• Utilizamos los métodos getXXX() : Donde XXX indica el

tipo de dato que queremos obtener a partir del Cursor.

String s = rs.getString(2);

String s = rs.getString(“title");

• El parámetro dentro del getXXX() si es un numero hará

referencia al campo que ocupa esa posición en el

registro actual, cuando se trata de una cadena esta

referirá al nombre del campo obtenido en la consulta.

Page 15: Clase conexion java - Analisis de Sistemas

Obteniendo Datos de un ResultSet :

Page 16: Clase conexion java - Analisis de Sistemas

Obteniendo Datos de un ResultSet :

Page 17: Clase conexion java - Analisis de Sistemas

Resumen

• JDBC es un API que nos permite conectarnos a cualquier RDBMS.

• Nos valemos de drivers para lograr una comunicación.

• Es potestad de cada fabricante cumplir con las especificaciones de la API.

• Para un aplicación debemos de “cargar” la clase del driver, en primer lugar.

• Generamos el objeto Connection.

• Si ejecutamos SELECT : Objeto Statement y Objeto ResultSet

• Si ejecutamos INSERT, UPDATE, etc. : Objeto Statement

• Si ejecutamos sentencias precompiladas : Objeto PreparedStatement.

• Si trabajamos con Stored Procedures : Objeto CallableStatement.

• Podemos controlar el nivel de Transacción. ( de acuerdo al driver)

Page 18: Clase conexion java - Analisis de Sistemas

Recordando

form Servlet Clase

Vista.jsp Control.java Modelo.java

BASE DE

DATOS

Envía datos Llama método

Se c

on

ecta

aV

ista Utiliza JSP

y HTML

Formularios

Con

trola

dor Java

Servlet

Toma decisiones

Modelo Clases en

JAVA

Atributos y métodos

Modelo de 3 capas - MVC