SlideShare una empresa de Scribd logo
1 de 36
Programación
Orientada a Objetos
Tema: 4 Manejo de archivos y Base de
Datos
Docente: Mg. Luis Fernando Aguas B
Si supiera que el mundo se acaba mañana, yo, hoy
todavía, plantaría un árbol.
Objetivo
1. Adquirir los conceptos
básicos relacionados con
la POO
2. Reconocer las
características de la POO
● 4.2 Conexiones a Base de
Datos
Contenido
Objetivos de Desarrollo Sostenible
4.2 Conexiones a Base de Datos
JDBC
● Es un API de Java para ejecutar estatutos de SQL
(Structured Query Language)
● Aunque no es un acrónimo, sino una marca
registrada, es común darle el significado de Java
DataBase Connectivity
● Programando con JDBC se puede acceder a casi
cualquier Base de Datos comercial por medio de
comandos SQL
JDBC
● Lo más importante es que no necesitamos un
programa diferente para cada tipo de Base de Datos
que manejemos
● Un mismo programa puede accesar la misma
estructura en Bases de Datos comerciales diferentes
● Extiende la universalidad de Java a Bases de Datos
además de las plataformas
ODBC
● Open DataBase Connectivity
● Es la respuesta de Microsoft al mismo problema, acceso
a diferentes Bases de Datos con una misma API
● Se puede usar ODBC directamente desde Java pero:
está programada en C y necesita llamar a métodos
nativos, problemas de seguridad y transportabilidad
además de otros factores
Puente JDBC-ODBC
● Se puede usar el puente para que los programas
sigan siendo 100% Java
● El acceso a la Base de Datos se hace por medio de
ODBC
● El programador sólo desarrolla en Java y accede a
las Bases de Datos por medio del API JDBC, no
tiene necesidad de aprender a manejar ODBC, sólo
necesita configurarlo
Drivers
● (Tipo 1) Puente JDBC-ODBC y driver ODBC
○ La aplicación necesita cargar el código nativo del driver
ODBC
● (Tipo 2) API nativo con acceso a Java
○ Convierte llamadas JDBC a llamadas nativas de las Bases de
Datos
● (Tipo 3) Protocolo de red 100% Java
○ Convierte llamadas JDBC en llamadas a un protocolo de red
independiente el cual es traducido en el servidor a llamadas
nativas de la Base de Datos
● (Tipo 4) Protocolo nativo 100% Java
○ Convierte directamente las llamadas JDBC a llamadas nativas
Pasos previos
● Tener instalado JDK con JDBC
○ JDK ya viene con JDBC, puedes conseguir ejemplos en:
http://www.javasoft.com/products/jdbc/book.html
● Instalar el driver en la máquina
○ Nosotros usaremos el puente JDBC-ODBC, asi es que tendremos
que configurar ODBC
● Instalar el manejador de la Base de Datos
○ En caso necesario instalar la aplicación, SQL Server, Oracle,
Foxpro, DBase, etc., nosotros usaremos Access
Configuración de ODBC
● En el panel de control seleccionar ODBC
Configuración de ODBC
● Ya tenemos en disco
una base de datos
llamada "curso1.mdb"
● Seleccionar agregar
● Selecionar el tipo de
driver que queremos
agregar, en nuestro
caso será "Microsoft
Access Driver (*.mdb)
● Presionar Terminar
Configuración de ODBC
● Asignar un
nombre (data
source name)
para hacer
referencia a ella
desde Java
Configuración de ODBC
● En la opción avanzado
se puede asignar
usuario y password
para el acceso de la
base de datos
Configuración de ODBC
● Después
presionar
seleccionar para
ubicar la base de
datos en el disco
o en la red
Ejemplos
● Para los siguientes ejemplos tendremos una base de
datos ya existente (la que acabamos de configurar)
curso1.mdb, el "data source name" también es
curso1 pero no es necesario que coincidan
● curso1 tiene una tabla que se llama lista, la cual es
una lista de alumnos con nombre y matrícula y las
calificaciones de tres parciales
Tabla lista de curso1
Pasos de un programa
● Cargar driver
– Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
– La instrucción anterior crea un ejemplar del driver y lo registra con el
DriverManager en una sola instrucción
• Establecer una conexión a la base de datos
– Connection conexion = DriverManager.getConnection
("jdbc:odbc:curso1","jdbc","jdbc");
● Crear un estatuto asociado a la conexión para poder
hacer accesos a la base de datos
– Statement estatuto = conexion.createStatement();
Consulta a una tabla
● La consulta a una tabla se hace por medio del estatuto:
○ executeQuery("query en SQL")
● Donde el query típicamente es un estatuto SELECT de SQL
● El query es mandado en forma de String y regresa un objeto de
la clase ResultSet que guarda todos los registros obtenidos con
el query
○ ResultSet rs = estatuto.executeQuery("SELECT...");
● rs tiene un apuntador que inicialmente apunta antes del primer
registro del grupo obtenido, la forma de avanzar en los registros
dentro del grupo es con el método next() del ResultSet que
regresa un valor booleano indicando si es que todavía quedan
más registros en el ResutSet
Consulta a una tabla
● La forma de obtener los valores particulares de cada
campo en un registro es con los métodos get...() de
ResultSet donde la particular versión de get depende
del tipo de dato y el parámetro es el nombre del campo
o el número de la columna del campo en el registro del
grupo obtenido (resultSet) con el estatuto:
○ getString("nombre"), getInt("EX2"),
getBoolean(3), etc.
Ejemplo
import java.sql.*;
public class BaseDeDatos1{
public static void main(String[] args){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
System.out.println(e.getMessage());
}
try{
Connection conexion = DriverManager.getConnection("jdbc:odbc:curso1");
Statement estatuto = conexion.createStatement();
ResultSet rs = estatuto.executeQuery("select * FROM lista");
while(rs.next()){
String matricula = rs.getString("MATRICULA");
String nombre = rs.getString("NOMBRE");
int ex1 = rs.getInt("EX1");
int ex2 = rs.getInt("EX2");
int ex3 = rs.getInt("EX3");
System.out.println(matricula+" "+nombre+" "+ex1+" "+ex2+" "+ex3);
}
estatuto.close();
conexion.close();
}catch(SQLException e){
System.out.println(e.getMessage());
}
}
}
Ejemplo
Ejemplo BaseDeDatos2.java
Connection conexion = DriverManager.getConnection("jdbc:odbc:curso1","jdbc","jdbc");
Statement estatuto = conexion.createStatement();
ResultSet rs = estatuto.executeQuery("select MATRICULA,NOMBRE "+
"from lista where NOMBRE>'b' and NOMBRE<
"order by NOMBRE DESC");
while(rs.next()){
String matricula = rs.getString("MATRICULA");
String nombre = rs.getString(2);
System.out.println(matricula+" "+nombre);
}
Modificación de una tabla
● La modificación de tablas se realiza con el estatuto
executeUpdate
● estatuto.executeUpdate("comando SQL");
● Los comandos típicos SQL para actualización de tablas
son
○ UPDATE
○ INSERT INTO
○ DELETE FROM
Ejemplo BaseDeDatos3.java
estatuto.executeUpdate("update lista set EX1 = EX1 + 10,EX2 = EX2 + 5");
estatuto.executeUpdate("update lista set EX1=100,EX2=100,EX3=100 "+
"where NOMBRE>'a' AND NOMBRE<'b'");
estatuto.executeUpdate("delete from lista where MATRICULA>'7'");
estatuto.executeUpdate("insert into lista values('49052','Pablo Díaz',"+
"100,100,100)");
estatuto.executeUpdate("insert into lista (MATRICULA,NOMBRE,EX3) "+
"values ('123456','Tonto',50)");
Ejemplo
Ejemplo BaseDeDatos4.java
Statement estatuto = conexion.createStatement();
Statement estatuto1 = conexion.createStatement();
//estatuto.executeUpdate("create table final (MATRICULA text(6), NOTA number)");
//estatuto.executeUpdate("create table final (MATRICULA varchar(6), NOTA int)");
estatuto.executeUpdate("create table final (MATRICULA varchar(6), NOTA double)");
ResultSet rs = estatuto.executeQuery("select * FROM lista");
while(rs.next()){
String matricula = rs.getString("MATRICULA");
int ex1 = rs.getInt("EX1");
int ex2 = rs.getInt("EX2");
int ex3 = rs.getInt("EX3");
double nota = (double)(ex1+ex2+ex3)/3;
estatuto1.executeUpdate("insert into final values("+matricula+","
}
rs = estatuto.executeQuery("select * FROM final");
while(rs.next()){
String mat = rs.getString("MATRICULA");
double not = rs.getDouble("NOTA");
System.out.println(mat+" "+Math.round(not));
}
Ejemplo
PreparedStatement
● Es una manera de pasar parámetros a estatutos de
query y update
● Se usa para tener estatutos preparados que se
utilizan con frecuencia y que posiblemente ya estén
compilados en el servidor de BdeD. Eficiencia!
● Los parámetros se especifican con ? y mantienen un
orden (índice) que se va incrementando a medida
que usas los ?
● El valor de los parámetros se especifica con las
funciones set...(índice, valor), donde la versión de
set depende del tipo de dato que asignarás al
parámetro
● El estatuto se llama sin el típico parámetro String
Ejemplo BaseDeDatos5.java
PreparedStatement estatuto = conexion.prepareStatement("select * from final "+
estatuto.setDouble(1,70);
estatuto.setDouble(2,80);
ResultSet rs = estatuto.executeQuery();
while(rs.next()){
String matricula = rs.getString("MATRICULA");
double nota = rs.getDouble("NOTA");
System.out.println(matricula+" "+nota);
}
Acceso a dos o más tablas
● Normalmente se diseñan varias tablas en una base de
datos con campos en común para poder accesar la
información en forma más eficiente
● En nuestro caso tenemos dos tablas que tiene el
campo matrícula
● Cuando se hace un acceso a dos o más tablas se
necesita especificar a que tabla pertenece cada
campo. Tabla.campo
● Esto sólo se necesita para campos que tengan el
mismo nombre en las diferentes tablas
Ejemplo BaseDeDatos6.java
ResultSet rs = estatuto.executeQuery("select lista.NOMBRE from lista, "+
"final where final.NOTA>70 and final.NOTA<80 "+
"and
lista.MATRICULA = final.MATRICULA");
while(rs.next()){
String nombre = rs.getString("NOMBRE");
System.out.println(nombre);
}
Stored Procedures
● Un stored procedure es un grupo de estatutos SQL
que ejecutan una tarea particular y se toman como
una unidad (es como una rutina en SQL)
● La mayoría de los manejadores de Bases de Datos
tiene la capacidad de programar stored procedures,
pero la sintaxis varía de una a otra, además de
otras particularidades
Stored Procedures
● Es conveniente que los programes en la Base de Datos
que uses y los llames desde Java, a pesar de que los
puedes crear en Java
● El llamado a un stored procedure es:
○ CallableStatement estatuto=conexion.prepareCall("{call SP}");
○ ResultSet rs = estatuto.executeQuery();
● Para crearlos desde Java:
○ Statement estatuto = con.createStatement();
○ estatuto.executeUpdate("create procedure as SP . . . . );

Más contenido relacionado

La actualidad más candente

Bases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateBases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateCarlos Hernando
 
Programación 3 jk base de datos sql
Programación 3 jk base de datos sqlProgramación 3 jk base de datos sql
Programación 3 jk base de datos sqlJuank Pesántez
 
Introducción práctica a JPA2
Introducción práctica a JPA2Introducción práctica a JPA2
Introducción práctica a JPA2jion1987
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSDarwin Durand
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gioRobert Wolf
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii1 2d
 
Notas clase
Notas claseNotas clase
Notas clase1 2d
 
Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gioRobert Wolf
 
Manual hibernate v2
Manual hibernate v2Manual hibernate v2
Manual hibernate v2zaka3000
 
Unidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javaUnidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javadevsco63
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sqlSuarezJhon
 

La actualidad más candente (20)

Bases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateBases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a Hibernate
 
Programación 3 jk base de datos sql
Programación 3 jk base de datos sqlProgramación 3 jk base de datos sql
Programación 3 jk base de datos sql
 
Java persitence api
Java persitence apiJava persitence api
Java persitence api
 
Introducción práctica a JPA2
Introducción práctica a JPA2Introducción práctica a JPA2
Introducción práctica a JPA2
 
Spring community day 2010
Spring community day 2010Spring community day 2010
Spring community day 2010
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
 
JAVA CON BASE DE DATOS
JAVA CON BASE DE DATOSJAVA CON BASE DE DATOS
JAVA CON BASE DE DATOS
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 
Notas clase
Notas claseNotas clase
Notas clase
 
Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gio
 
Jpa
JpaJpa
Jpa
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Manual hibernate v2
Manual hibernate v2Manual hibernate v2
Manual hibernate v2
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Unidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javaUnidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde java
 
Persistencia jpa
Persistencia jpaPersistencia jpa
Persistencia jpa
 
Base de datos - Clase 1
Base de datos - Clase 1Base de datos - Clase 1
Base de datos - Clase 1
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 

Similar a S8-BDD

Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasJose Bustamante Romero
 
Lpiii tema5 - jdbc
Lpiii tema5 - jdbcLpiii tema5 - jdbc
Lpiii tema5 - jdbckjrojas
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbcjbersosa
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbcjbersosa
 
Jyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc X
 
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-2006Samuel Marrero
 
Explicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdfExplicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdfGregorioSnchez7
 
Java y Bases de Datos
Java y Bases de DatosJava y Bases de Datos
Java y Bases de DatosRonny Parra
 
Bases Datos en java
Bases Datos en javaBases Datos en java
Bases Datos en javajent46
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii1 2d
 
109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-java109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-javaMiguel Ángel
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desdejbersosa
 
Notas clase
Notas claseNotas clase
Notas clase1 2d
 
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.ecSilvana Vargas
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatosdevsco63
 

Similar a S8-BDD (20)

Jdbc
JdbcJdbc
Jdbc
 
Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de Sistemas
 
Lpiii tema5 - jdbc
Lpiii tema5 - jdbcLpiii tema5 - jdbc
Lpiii tema5 - jdbc
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbc
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbc
 
Jyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datos
 
Jdbc
JdbcJdbc
Jdbc
 
JDBC(conjunto de clases e interfaces)
JDBC(conjunto de clases e interfaces)JDBC(conjunto de clases e interfaces)
JDBC(conjunto de clases e interfaces)
 
Jdbc
JdbcJdbc
Jdbc
 
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
 
Explicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdfExplicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdf
 
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
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 
109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-java109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-java
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
Notas clase
Notas claseNotas clase
Notas clase
 
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
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatos
 

Más de Luis Fernando Aguas Bucheli (20)

EFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptxEFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptx
 
P-S2.pptx
P-S2.pptxP-S2.pptx
P-S2.pptx
 
EBTS-S1.pptx
EBTS-S1.pptxEBTS-S1.pptx
EBTS-S1.pptx
 
P-S3.pptx
P-S3.pptxP-S3.pptx
P-S3.pptx
 
EBTS-S4.pptx
EBTS-S4.pptxEBTS-S4.pptx
EBTS-S4.pptx
 
P-S4.pptx
P-S4.pptxP-S4.pptx
P-S4.pptx
 
P-S1.pptx
P-S1.pptxP-S1.pptx
P-S1.pptx
 
EBTS-S3.pptx
EBTS-S3.pptxEBTS-S3.pptx
EBTS-S3.pptx
 
EBTS-S2.pptx
EBTS-S2.pptxEBTS-S2.pptx
EBTS-S2.pptx
 
PDIDTI-S7.pptx
PDIDTI-S7.pptxPDIDTI-S7.pptx
PDIDTI-S7.pptx
 
PDIDTI-S4.pptx
PDIDTI-S4.pptxPDIDTI-S4.pptx
PDIDTI-S4.pptx
 
PDIDTI-S2.pptx
PDIDTI-S2.pptxPDIDTI-S2.pptx
PDIDTI-S2.pptx
 
PDIDTI-S1.pptx
PDIDTI-S1.pptxPDIDTI-S1.pptx
PDIDTI-S1.pptx
 
PDIDTI-S8.pptx
PDIDTI-S8.pptxPDIDTI-S8.pptx
PDIDTI-S8.pptx
 
PDIDTI-S6.pptx
PDIDTI-S6.pptxPDIDTI-S6.pptx
PDIDTI-S6.pptx
 
PDIDTI-S5.pptx
PDIDTI-S5.pptxPDIDTI-S5.pptx
PDIDTI-S5.pptx
 
PDIDTI-S3.pptx
PDIDTI-S3.pptxPDIDTI-S3.pptx
PDIDTI-S3.pptx
 
TIC-S4.pptx
TIC-S4.pptxTIC-S4.pptx
TIC-S4.pptx
 
TIC-S3.pptx
TIC-S3.pptxTIC-S3.pptx
TIC-S3.pptx
 
TIC-S2.pptx
TIC-S2.pptxTIC-S2.pptx
TIC-S2.pptx
 

Último

Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...SuannNeyraChongShing
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfReneBellido1
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfpaola110264
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 

Último (20)

Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 

S8-BDD

  • 1. Programación Orientada a Objetos Tema: 4 Manejo de archivos y Base de Datos Docente: Mg. Luis Fernando Aguas B
  • 2. Si supiera que el mundo se acaba mañana, yo, hoy todavía, plantaría un árbol.
  • 3. Objetivo 1. Adquirir los conceptos básicos relacionados con la POO 2. Reconocer las características de la POO ● 4.2 Conexiones a Base de Datos Contenido
  • 5. 4.2 Conexiones a Base de Datos
  • 6. JDBC ● Es un API de Java para ejecutar estatutos de SQL (Structured Query Language) ● Aunque no es un acrónimo, sino una marca registrada, es común darle el significado de Java DataBase Connectivity ● Programando con JDBC se puede acceder a casi cualquier Base de Datos comercial por medio de comandos SQL
  • 7. JDBC ● Lo más importante es que no necesitamos un programa diferente para cada tipo de Base de Datos que manejemos ● Un mismo programa puede accesar la misma estructura en Bases de Datos comerciales diferentes ● Extiende la universalidad de Java a Bases de Datos además de las plataformas
  • 8. ODBC ● Open DataBase Connectivity ● Es la respuesta de Microsoft al mismo problema, acceso a diferentes Bases de Datos con una misma API ● Se puede usar ODBC directamente desde Java pero: está programada en C y necesita llamar a métodos nativos, problemas de seguridad y transportabilidad además de otros factores
  • 9. Puente JDBC-ODBC ● Se puede usar el puente para que los programas sigan siendo 100% Java ● El acceso a la Base de Datos se hace por medio de ODBC ● El programador sólo desarrolla en Java y accede a las Bases de Datos por medio del API JDBC, no tiene necesidad de aprender a manejar ODBC, sólo necesita configurarlo
  • 10. Drivers ● (Tipo 1) Puente JDBC-ODBC y driver ODBC ○ La aplicación necesita cargar el código nativo del driver ODBC ● (Tipo 2) API nativo con acceso a Java ○ Convierte llamadas JDBC a llamadas nativas de las Bases de Datos ● (Tipo 3) Protocolo de red 100% Java ○ Convierte llamadas JDBC en llamadas a un protocolo de red independiente el cual es traducido en el servidor a llamadas nativas de la Base de Datos ● (Tipo 4) Protocolo nativo 100% Java ○ Convierte directamente las llamadas JDBC a llamadas nativas
  • 11. Pasos previos ● Tener instalado JDK con JDBC ○ JDK ya viene con JDBC, puedes conseguir ejemplos en: http://www.javasoft.com/products/jdbc/book.html ● Instalar el driver en la máquina ○ Nosotros usaremos el puente JDBC-ODBC, asi es que tendremos que configurar ODBC ● Instalar el manejador de la Base de Datos ○ En caso necesario instalar la aplicación, SQL Server, Oracle, Foxpro, DBase, etc., nosotros usaremos Access
  • 12. Configuración de ODBC ● En el panel de control seleccionar ODBC
  • 13. Configuración de ODBC ● Ya tenemos en disco una base de datos llamada "curso1.mdb" ● Seleccionar agregar ● Selecionar el tipo de driver que queremos agregar, en nuestro caso será "Microsoft Access Driver (*.mdb) ● Presionar Terminar
  • 14. Configuración de ODBC ● Asignar un nombre (data source name) para hacer referencia a ella desde Java
  • 15. Configuración de ODBC ● En la opción avanzado se puede asignar usuario y password para el acceso de la base de datos
  • 16. Configuración de ODBC ● Después presionar seleccionar para ubicar la base de datos en el disco o en la red
  • 17. Ejemplos ● Para los siguientes ejemplos tendremos una base de datos ya existente (la que acabamos de configurar) curso1.mdb, el "data source name" también es curso1 pero no es necesario que coincidan ● curso1 tiene una tabla que se llama lista, la cual es una lista de alumnos con nombre y matrícula y las calificaciones de tres parciales
  • 18. Tabla lista de curso1
  • 19. Pasos de un programa ● Cargar driver – Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); – La instrucción anterior crea un ejemplar del driver y lo registra con el DriverManager en una sola instrucción • Establecer una conexión a la base de datos – Connection conexion = DriverManager.getConnection ("jdbc:odbc:curso1","jdbc","jdbc"); ● Crear un estatuto asociado a la conexión para poder hacer accesos a la base de datos – Statement estatuto = conexion.createStatement();
  • 20. Consulta a una tabla ● La consulta a una tabla se hace por medio del estatuto: ○ executeQuery("query en SQL") ● Donde el query típicamente es un estatuto SELECT de SQL ● El query es mandado en forma de String y regresa un objeto de la clase ResultSet que guarda todos los registros obtenidos con el query ○ ResultSet rs = estatuto.executeQuery("SELECT..."); ● rs tiene un apuntador que inicialmente apunta antes del primer registro del grupo obtenido, la forma de avanzar en los registros dentro del grupo es con el método next() del ResultSet que regresa un valor booleano indicando si es que todavía quedan más registros en el ResutSet
  • 21. Consulta a una tabla ● La forma de obtener los valores particulares de cada campo en un registro es con los métodos get...() de ResultSet donde la particular versión de get depende del tipo de dato y el parámetro es el nombre del campo o el número de la columna del campo en el registro del grupo obtenido (resultSet) con el estatuto: ○ getString("nombre"), getInt("EX2"), getBoolean(3), etc.
  • 22. Ejemplo import java.sql.*; public class BaseDeDatos1{ public static void main(String[] args){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException e){ System.out.println(e.getMessage()); } try{ Connection conexion = DriverManager.getConnection("jdbc:odbc:curso1"); Statement estatuto = conexion.createStatement(); ResultSet rs = estatuto.executeQuery("select * FROM lista"); while(rs.next()){ String matricula = rs.getString("MATRICULA"); String nombre = rs.getString("NOMBRE"); int ex1 = rs.getInt("EX1"); int ex2 = rs.getInt("EX2"); int ex3 = rs.getInt("EX3"); System.out.println(matricula+" "+nombre+" "+ex1+" "+ex2+" "+ex3); } estatuto.close(); conexion.close(); }catch(SQLException e){ System.out.println(e.getMessage()); } } }
  • 24. Ejemplo BaseDeDatos2.java Connection conexion = DriverManager.getConnection("jdbc:odbc:curso1","jdbc","jdbc"); Statement estatuto = conexion.createStatement(); ResultSet rs = estatuto.executeQuery("select MATRICULA,NOMBRE "+ "from lista where NOMBRE>'b' and NOMBRE< "order by NOMBRE DESC"); while(rs.next()){ String matricula = rs.getString("MATRICULA"); String nombre = rs.getString(2); System.out.println(matricula+" "+nombre); }
  • 25. Modificación de una tabla ● La modificación de tablas se realiza con el estatuto executeUpdate ● estatuto.executeUpdate("comando SQL"); ● Los comandos típicos SQL para actualización de tablas son ○ UPDATE ○ INSERT INTO ○ DELETE FROM
  • 26. Ejemplo BaseDeDatos3.java estatuto.executeUpdate("update lista set EX1 = EX1 + 10,EX2 = EX2 + 5"); estatuto.executeUpdate("update lista set EX1=100,EX2=100,EX3=100 "+ "where NOMBRE>'a' AND NOMBRE<'b'"); estatuto.executeUpdate("delete from lista where MATRICULA>'7'"); estatuto.executeUpdate("insert into lista values('49052','Pablo Díaz',"+ "100,100,100)"); estatuto.executeUpdate("insert into lista (MATRICULA,NOMBRE,EX3) "+ "values ('123456','Tonto',50)");
  • 28. Ejemplo BaseDeDatos4.java Statement estatuto = conexion.createStatement(); Statement estatuto1 = conexion.createStatement(); //estatuto.executeUpdate("create table final (MATRICULA text(6), NOTA number)"); //estatuto.executeUpdate("create table final (MATRICULA varchar(6), NOTA int)"); estatuto.executeUpdate("create table final (MATRICULA varchar(6), NOTA double)"); ResultSet rs = estatuto.executeQuery("select * FROM lista"); while(rs.next()){ String matricula = rs.getString("MATRICULA"); int ex1 = rs.getInt("EX1"); int ex2 = rs.getInt("EX2"); int ex3 = rs.getInt("EX3"); double nota = (double)(ex1+ex2+ex3)/3; estatuto1.executeUpdate("insert into final values("+matricula+"," } rs = estatuto.executeQuery("select * FROM final"); while(rs.next()){ String mat = rs.getString("MATRICULA"); double not = rs.getDouble("NOTA"); System.out.println(mat+" "+Math.round(not)); }
  • 30.
  • 31. PreparedStatement ● Es una manera de pasar parámetros a estatutos de query y update ● Se usa para tener estatutos preparados que se utilizan con frecuencia y que posiblemente ya estén compilados en el servidor de BdeD. Eficiencia! ● Los parámetros se especifican con ? y mantienen un orden (índice) que se va incrementando a medida que usas los ? ● El valor de los parámetros se especifica con las funciones set...(índice, valor), donde la versión de set depende del tipo de dato que asignarás al parámetro ● El estatuto se llama sin el típico parámetro String
  • 32. Ejemplo BaseDeDatos5.java PreparedStatement estatuto = conexion.prepareStatement("select * from final "+ estatuto.setDouble(1,70); estatuto.setDouble(2,80); ResultSet rs = estatuto.executeQuery(); while(rs.next()){ String matricula = rs.getString("MATRICULA"); double nota = rs.getDouble("NOTA"); System.out.println(matricula+" "+nota); }
  • 33. Acceso a dos o más tablas ● Normalmente se diseñan varias tablas en una base de datos con campos en común para poder accesar la información en forma más eficiente ● En nuestro caso tenemos dos tablas que tiene el campo matrícula ● Cuando se hace un acceso a dos o más tablas se necesita especificar a que tabla pertenece cada campo. Tabla.campo ● Esto sólo se necesita para campos que tengan el mismo nombre en las diferentes tablas
  • 34. Ejemplo BaseDeDatos6.java ResultSet rs = estatuto.executeQuery("select lista.NOMBRE from lista, "+ "final where final.NOTA>70 and final.NOTA<80 "+ "and lista.MATRICULA = final.MATRICULA"); while(rs.next()){ String nombre = rs.getString("NOMBRE"); System.out.println(nombre); }
  • 35. Stored Procedures ● Un stored procedure es un grupo de estatutos SQL que ejecutan una tarea particular y se toman como una unidad (es como una rutina en SQL) ● La mayoría de los manejadores de Bases de Datos tiene la capacidad de programar stored procedures, pero la sintaxis varía de una a otra, además de otras particularidades
  • 36. Stored Procedures ● Es conveniente que los programes en la Base de Datos que uses y los llames desde Java, a pesar de que los puedes crear en Java ● El llamado a un stored procedure es: ○ CallableStatement estatuto=conexion.prepareCall("{call SP}"); ○ ResultSet rs = estatuto.executeQuery(); ● Para crearlos desde Java: ○ Statement estatuto = con.createStatement(); ○ estatuto.executeUpdate("create procedure as SP . . . . );