connection en java

Post on 23-Jan-2018

70 Views

Category:

Engineering

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Modelos de acceso a BD

2

AplicaciónJavaJDBC

DBMS

Cliente

Servidor BD

ProtocoloBD

Modelos de acceso a BD

3

AplicaciónJava

JDBC

DBMS

Navegador Web

Cliente (GUI)

Protocolo HTTP

ServidorBD

Servlets, JSPen servidor WEB

Protocolo BD

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

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);

Connection

6

...Connection

7

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

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

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

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

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

Prepared Statements

13

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

Transacciones

15

Transacciones

16

Stored Procedures

17

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

top related