Connection en Java

18

Transcript of Connection en Java

Page 1: Connection en Java
Page 2: Connection en Java

Modelos de acceso a BD

2

AplicaciónJavaJDBC

DBMS

Cliente

Servidor BD

ProtocoloBD

Page 3: Connection en Java

Modelos de acceso a BD

3

AplicaciónJava

JDBC

DBMS

Navegador Web

Cliente (GUI)

Protocolo HTTP

ServidorBD

Servlets, JSPen servidor WEB

Protocolo BD

Page 4: Connection en Java

Cargando el Driver Es necesario primero cargar una clase con el driver de

la base de datos (esto lo provee el vendedor de la DBMS)

Ejemplo:Class c = Class.forName(“com.informix.jdbc.IfxDriver"); Calss.forName(“com.novell.sql.LDAPDriver”); Class.forName("com.mysql.jdbc.Driver");

Esto es particular según la base de datos que se usa Luego hay que crear una instancia de la clase

c.newInstance();

4

Page 5: Connection en Java

Estableciendo la Conexión

Un objeto “Connection” representa una conexión a una base de datos.

La clase “DriverManager” intenta ubicar el controlador que pueda conectarse a la base de datos representada en la URL.

5

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

Page 6: Connection en Java

Connection

6

Page 7: Connection en Java

...Connection

7

Page 8: Connection en Java

Ejemplo de Connection import java.sql.*;import com.mysql.jdbc.*;java.sql.Connection getConnection(String usr, String pass) {

url = "jdbc:mysql://localhost/test"; driver = "com.mysql.jdbc.Driver"; try { Class.forName(driver).newInstance(); con = DriverDriverManager.getConnection(url, usr,pass); return con; } catch(Exception e2) { System.err.println("Problems"); return null; }}

8

Page 9: Connection en Java

La clase Statement y Connection Connection con = getConnection(…);

Statement stmt=

con.createStatement(); En este momento la statement existe

pero no tiene una sentencia SQL para ejecutar. Esta se puede pasar con los métodos executeUpdate(String), usada para crear/modificar tablas (no

hay resultados), típicamente para create, update, delete...

executeQuery(String) para hacer consultas, retornan resultados en un objeto de la clase ResultSet, típicamente para select

9

Page 10: Connection en Java

Statement s=con.createStatement();s.executeUpdate(“...”); Crear tabla s.executeUpdate(“create libros(”+“ id char(20),” +“ titulo char(50),” +“ autor char(50,)” +“ editorial char(20),” +“ fecha char(8),” +“ primary key(id))”);

Crear y ejecutar comando

Page 11: Connection en Java

El ResultSet

ResultSet rs = stmt.executeQuery(“select nombre where direccion like Santiago”);

while (rs.next()) {

String s = rs.getString(“nombre”);

int y = rs.getInt(“año”);

System.out.println(s+” “+y);

} ResultSet rs contiene una colección de filas con

los resultados de la pregunta. La instrucción next avanza un puntero que indica en qué fila estamos actualmente. Al principio está antes de la primera fila, por lo cual se hace necesario ejecutar un next() para situarse en la primera11

Page 12: Connection en Java

ResultSet r=s.executeQuery( “select * from libros where titulo like ‘%Java%’”); String mayor=””; while(r.next()){ String fecha=r.getString(“fecha”); if(fecha.compareTo(mayor)>0) mayor=fecha; } //posicionar antes de primera fila r.beforeFirst(); //r.absolute(0); //recorrer libros de Java while(r.next()) if( r.getString(“fecha”).equals(mayor) ) System.out.println( r.getString(“id”)+r.getString(“titulo”));

Conclusiones

Page 13: Connection en Java

Prepared Statements

13

Page 14: Connection en Java

Prepared Statements: EjemploPreparedStatement updateSales;String updateString = "update COFFEES “+

"set SALES = ? where COF_NAME like ?";

updateSales = con.prepareStatement(updateString);int [] salesForWeek = {175, 150, 60, 155, 90};String [] coffees = {"Colombian", "French_Roast",

"Espresso", "Colombian_Decaf", "French_Roast_Decaf"};

int len = coffees.length;for(int i = 0; i < len; i++) { updateSales.setInt(1,salesForWeek[i]); updateSales.setString(2, coffees[i]); updateSales.executeUpdate();}

14

Page 15: Connection en Java

Transacciones

15

Page 16: Connection en Java

Transacciones

16

Page 17: Connection en Java

Stored Procedures

17

Page 18: Connection en Java

Un ejemploPara crear el Stored Procedure String crearSP = “create prodcedure SHOW_SUPPLIERS”+

“ as ”+

“select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME”+

“from SUPPLIERS, COFFEES ”+

“where SUPPLIERS.SUP_ID = COFFEES.SUP_ID”

Statement stmt = con.CreateStatement();

stmt.executeQuery(createSP);

Para llamar el Stored ProcedureCallableStatement cs;

cs = con.prepareCall(“{call SHOW_SUPPLIERS}”);

ResultSet rs = cs.executeQuery();

18