SlideShare una empresa de Scribd logo
1 de 18
LABORATORIO DE PROGRAMACIÓN IILABORATORIO DE PROGRAMACIÓN II
CONNECTIONCONNECTION
Universidad Politécnica AmazónicaUniversidad Politécnica Amazónica
MODELOSDEACCESOABDMODELOSDEACCESOABD
• La aplicación “habla”
directamente con la base
de datos.
• Controlador jdbc se
comunica con el sistema
específico que maneja la
base de datos.
• La base de datos puede
estar en otra máquina,
con lo que el cliente se
comunica por red. Esta es
la configuración llamada
cliente/servidor.
Aplicación
Java
JDBC
DBMS
Cliente
Servidor BD
Protocolo
BD
DD
EE
22
CC
AA
PP
AA
SS
MODELOSDEACCESOABDMODELOSDEACCESOABD
• Los comandos son
enviados a la capa
intermedia de servicios, la
cual envía sentencias SQL
a la base de datos. Ésta las
• Procesa y envía los
resultados de vuelta a la
capa intermedia, para
luego ser enviados al
cliente.
• Permite un control de
acceso y de actualización.
• Provee ventajas de
performance.
Aplicación
Java
JDBC
DBMS
Navegador
Web
Cliente (GUI)
Protocolo HTTP
Servidor
BD
Servlets, JSP
en servidor
WEB
Protocolo BD
DD
EE
33
CC
AA
PP
AA
SS
CARGANDO EL DRIVERCARGANDO 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();
PASOS PARA LA CONEXIÓNPASOS PARA LA CONEXIÓN
1. Cargar el controlador de la BD
2. Establecer una conexión entre el programa java y el
sistema de administración de la base de datos.
3. Enviar una sentencia sql a la bd mediante un objeto
statement
4. Recuperar los resultados de la bd y utilizarlos en el
programa.
ESTABLECIENDO DE LA CONEXIÓNESTABLECIENDO DE 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.
Connection con = DriverManager.getConnection (
url,login, password);
ESTABLECIMIENTO DE LAESTABLECIMIENTO DE LA
CONEXIÓNCONEXIÓN
7
• Solicitud al drivermanager para realizar una connection:
CONNECTION CON =
DRIVERMANAGER.GETCONNECTION(URL_BD);
CONNECTION CON =
DRIVERMANAGER.GETCONNECTION(URL_BD, USUARIO,
PALABRACLAVE);
• Cuando drivermanager recibe una petición getconnection le
envía la URL de JDBC a cada driver registrado. El primer
driver que reconoce la URL es el que estable la conexión.
• Si la petición no reconoce se genera una:
SQLEXCEPTION
CONEXIÓNCONEXIÓN
• EJEMPLOS DE URL:
• JDBC:MYSQL://LOCALHOST/TEST (PARA EJEMPLOS)
• JDBC:ORACLE://ORASERVER
• JDBC:ODBC:MYDATABASE
• JDBC:LDAP://SERVER;BASEDN=BASEDN;USECLEARTEXT=TRUE
...CONEXIÓN...CONEXIÓN
• SINTÁXIS DE UNA URL JDBC:
• JDBC:<SUBPROTOCOLO>:<SUBNOMBRE>
• <SUBPROTOCOLO> ES EL NOMBRE DEL CONTROLADOR O
DEL MECANISMO DE CONEXIÓN. EJEMPLO: ODBC.
• <SUBNOMBRE> ES LA IDENTIFICACIÓN DE LA BASE DE
DATOS. EL FORMATO VARIA SEGÚN EL CONTROLADOR
ESPECIFICADO. EJEMPLO: //SERVIDOR:PUERTO/BD Y
PARÁMETROS
9
EJEMPLO DE CONEXIÓNEJEMPLO DE CONEXIÓN
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;
}
}
ENVIANDOSENTENCIASSQLENVIANDOSENTENCIASSQL
• JDBC permite enviar cualquier tipo de sentencia SQL. Aunque ésta
fuera dependiente de la base de datos sólo se correría el riesgo de
incompatibilidad al cambiar de base de datos.
• Los objetos statement se usan para almacenar sentencias sql
STATEMENT STAT=CON.CREATESTATEMENT();
• A través del objeto statement se pueden realizar consultas sobre la
BD a través de una connection,
• La BD ejecuta la consulta y la devuelve en un resultset:
RESULTSET THERESULTS = STAT.EXECUTEQUERY(“CONSUL”);
...ENVIANDO SENTENCIAS SQL...ENVIANDO SENTENCIAS SQL
• “Statement”: este objeto es usado para
enviar sentecias SQL simples. Es creado
por el método “createstatement”.
• “Preparedstatement”: este objeto es
usado para sentencias que requieren uno
o más parámetros. La sentencia es
precompilada y guardada para uso
futuro.
• “Callablestatement”: es usado para
ejecutar procedimientos almacenados en
la base de datos.
P
R
O
V
E
E
3
C
L
A
S
E
S
J
D
B
C
LA CLASE STATEMENT YLA CLASE STATEMENT Y
CONNECTIONCONNECTION
• 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
CREAR Y EJECUTAR COMANDOCREAR Y EJECUTAR COMANDO
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))”
);
EL RESULTSETEL 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 primera
PREPARED STATEMENTSPREPARED STATEMENTS
16
• Donde se ha usado satement es generalmente posible usar
preparedstatement para hacer más eficientes las consultas
• Una instrucción con preparedstatement va a ser, en la mayoría de
los casos, traducida a una consulta SQL nativa de la base de datos
en tiempo de compilación
• La otra ventaja es que es posible usar parámetros dentro de ella,
pudiendo hacer más flexibles las consultas o hacer varias
consultas distintas dentro de un ciclo cambiando el valor de
algunas variables
Preparedstatement us = con.Preparesatatement( “update
alumnos set comuna = ? where direccion like = ?”);
Us.Setstring(1,’santiago’) us.Setstring(2,’portugal’);
17
PREPARED STATEMENTS:PREPARED STATEMENTS:
EJEMPLOEJEMPLO
PREPAREDSTATEMENT 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();
}
18

Más contenido relacionado

La actualidad más candente

La actualidad más candente (9)

Vistas MySql
Vistas MySqlVistas MySql
Vistas MySql
 
Curso SQL-C# Basico
Curso SQL-C# BasicoCurso SQL-C# Basico
Curso SQL-C# Basico
 
VISTAS
VISTASVISTAS
VISTAS
 
Abd3 sql
Abd3 sqlAbd3 sql
Abd3 sql
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sql
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)
 
Sql server(1)
Sql server(1)Sql server(1)
Sql server(1)
 
Crear un usuario de base de datos
Crear un usuario de base de datosCrear un usuario de base de datos
Crear un usuario de base de datos
 
Cursos web
Cursos webCursos web
Cursos web
 

Similar a Connectionjava (20)

Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de Sistemas
 
Java y Base de Datos
Java y Base de DatosJava y Base de Datos
Java y Base de Datos
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Java y Bases de Datos
Java y Bases de DatosJava y Bases de Datos
Java y Bases de Datos
 
Java y Bases Datos
Java y Bases DatosJava y Bases Datos
Java y Bases Datos
 
Bases Datos en java
Bases Datos en javaBases Datos en java
Bases Datos en java
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc Mysql
Jdbc MysqlJdbc Mysql
Jdbc Mysql
 
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-20063. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
 
Bases de Datos en en www.fiec.espol.edu.ec
Bases de Datos en  en www.fiec.espol.edu.ecBases de Datos en  en www.fiec.espol.edu.ec
Bases de Datos en en www.fiec.espol.edu.ec
 
Odbc
OdbcOdbc
Odbc
 
[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)
 
Java con base de datos
Java con base  de datosJava con base  de datos
Java con base de datos
 
JDBC Laboratorio de Programación II
JDBC Laboratorio de Programación IIJDBC Laboratorio de Programación II
JDBC Laboratorio de Programación II
 
Clase xiii
Clase xiiiClase xiii
Clase xiii
 
Jdbc
JdbcJdbc
Jdbc
 
JDBC
JDBCJDBC
JDBC
 
Conexión a SQL Server con C#.NET a través de ODBC
Conexión a SQL Server con C#.NET a través de ODBCConexión a SQL Server con C#.NET a través de ODBC
Conexión a SQL Server con C#.NET a través de ODBC
 

Más de Gómez Albino

Más de Gómez Albino (10)

Coxecion de android studio y sqlite
Coxecion de android studio y sqliteCoxecion de android studio y sqlite
Coxecion de android studio y sqlite
 
Layout
LayoutLayout
Layout
 
Controles basicos
Controles basicosControles basicos
Controles basicos
 
Java xml
Java xml Java xml
Java xml
 
Aplicaciones moviles
Aplicaciones movilesAplicaciones moviles
Aplicaciones moviles
 
Aplicaciones moviles
Aplicaciones movilesAplicaciones moviles
Aplicaciones moviles
 
Android studio
Android studioAndroid studio
Android studio
 
Reportes
ReportesReportes
Reportes
 
Jtableconbasededatos
JtableconbasededatosJtableconbasededatos
Jtableconbasededatos
 
Java
Java Java
Java
 

Connectionjava

  • 1. LABORATORIO DE PROGRAMACIÓN IILABORATORIO DE PROGRAMACIÓN II CONNECTIONCONNECTION Universidad Politécnica AmazónicaUniversidad Politécnica Amazónica
  • 2. MODELOSDEACCESOABDMODELOSDEACCESOABD • La aplicación “habla” directamente con la base de datos. • Controlador jdbc se comunica con el sistema específico que maneja la base de datos. • La base de datos puede estar en otra máquina, con lo que el cliente se comunica por red. Esta es la configuración llamada cliente/servidor. Aplicación Java JDBC DBMS Cliente Servidor BD Protocolo BD DD EE 22 CC AA PP AA SS
  • 3. MODELOSDEACCESOABDMODELOSDEACCESOABD • Los comandos son enviados a la capa intermedia de servicios, la cual envía sentencias SQL a la base de datos. Ésta las • Procesa y envía los resultados de vuelta a la capa intermedia, para luego ser enviados al cliente. • Permite un control de acceso y de actualización. • Provee ventajas de performance. Aplicación Java JDBC DBMS Navegador Web Cliente (GUI) Protocolo HTTP Servidor BD Servlets, JSP en servidor WEB Protocolo BD DD EE 33 CC AA PP AA SS
  • 4. CARGANDO EL DRIVERCARGANDO 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();
  • 5. PASOS PARA LA CONEXIÓNPASOS PARA LA CONEXIÓN 1. Cargar el controlador de la BD 2. Establecer una conexión entre el programa java y el sistema de administración de la base de datos. 3. Enviar una sentencia sql a la bd mediante un objeto statement 4. Recuperar los resultados de la bd y utilizarlos en el programa.
  • 6. ESTABLECIENDO DE LA CONEXIÓNESTABLECIENDO DE 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. Connection con = DriverManager.getConnection ( url,login, password);
  • 7. ESTABLECIMIENTO DE LAESTABLECIMIENTO DE LA CONEXIÓNCONEXIÓN 7 • Solicitud al drivermanager para realizar una connection: CONNECTION CON = DRIVERMANAGER.GETCONNECTION(URL_BD); CONNECTION CON = DRIVERMANAGER.GETCONNECTION(URL_BD, USUARIO, PALABRACLAVE); • Cuando drivermanager recibe una petición getconnection le envía la URL de JDBC a cada driver registrado. El primer driver que reconoce la URL es el que estable la conexión. • Si la petición no reconoce se genera una: SQLEXCEPTION
  • 8. CONEXIÓNCONEXIÓN • EJEMPLOS DE URL: • JDBC:MYSQL://LOCALHOST/TEST (PARA EJEMPLOS) • JDBC:ORACLE://ORASERVER • JDBC:ODBC:MYDATABASE • JDBC:LDAP://SERVER;BASEDN=BASEDN;USECLEARTEXT=TRUE
  • 9. ...CONEXIÓN...CONEXIÓN • SINTÁXIS DE UNA URL JDBC: • JDBC:<SUBPROTOCOLO>:<SUBNOMBRE> • <SUBPROTOCOLO> ES EL NOMBRE DEL CONTROLADOR O DEL MECANISMO DE CONEXIÓN. EJEMPLO: ODBC. • <SUBNOMBRE> ES LA IDENTIFICACIÓN DE LA BASE DE DATOS. EL FORMATO VARIA SEGÚN EL CONTROLADOR ESPECIFICADO. EJEMPLO: //SERVIDOR:PUERTO/BD Y PARÁMETROS 9
  • 10. EJEMPLO DE CONEXIÓNEJEMPLO DE CONEXIÓN 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; } }
  • 11. ENVIANDOSENTENCIASSQLENVIANDOSENTENCIASSQL • JDBC permite enviar cualquier tipo de sentencia SQL. Aunque ésta fuera dependiente de la base de datos sólo se correría el riesgo de incompatibilidad al cambiar de base de datos. • Los objetos statement se usan para almacenar sentencias sql STATEMENT STAT=CON.CREATESTATEMENT(); • A través del objeto statement se pueden realizar consultas sobre la BD a través de una connection, • La BD ejecuta la consulta y la devuelve en un resultset: RESULTSET THERESULTS = STAT.EXECUTEQUERY(“CONSUL”);
  • 12. ...ENVIANDO SENTENCIAS SQL...ENVIANDO SENTENCIAS SQL • “Statement”: este objeto es usado para enviar sentecias SQL simples. Es creado por el método “createstatement”. • “Preparedstatement”: este objeto es usado para sentencias que requieren uno o más parámetros. La sentencia es precompilada y guardada para uso futuro. • “Callablestatement”: es usado para ejecutar procedimientos almacenados en la base de datos. P R O V E E 3 C L A S E S J D B C
  • 13. LA CLASE STATEMENT YLA CLASE STATEMENT Y CONNECTIONCONNECTION • 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
  • 14. CREAR Y EJECUTAR COMANDOCREAR Y EJECUTAR COMANDO 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))” );
  • 15. EL RESULTSETEL 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 primera
  • 16. PREPARED STATEMENTSPREPARED STATEMENTS 16 • Donde se ha usado satement es generalmente posible usar preparedstatement para hacer más eficientes las consultas • Una instrucción con preparedstatement va a ser, en la mayoría de los casos, traducida a una consulta SQL nativa de la base de datos en tiempo de compilación • La otra ventaja es que es posible usar parámetros dentro de ella, pudiendo hacer más flexibles las consultas o hacer varias consultas distintas dentro de un ciclo cambiando el valor de algunas variables Preparedstatement us = con.Preparesatatement( “update alumnos set comuna = ? where direccion like = ?”); Us.Setstring(1,’santiago’) us.Setstring(2,’portugal’);
  • 17. 17 PREPARED STATEMENTS:PREPARED STATEMENTS: EJEMPLOEJEMPLO PREPAREDSTATEMENT 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(); }
  • 18. 18