SlideShare una empresa de Scribd logo
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

PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
Darwin 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 gio
Robert Wolf
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
1 2d
 
Notas clase
Notas claseNotas clase
Notas clase
1 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 gio
Robert Wolf
 
Manual hibernate v2
Manual hibernate v2Manual hibernate v2
Manual hibernate v2
zaka3000
 
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
devsco63
 

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

Lpiii tema5 - jdbc
Lpiii tema5 - jdbcLpiii tema5 - jdbc
Lpiii tema5 - jdbc
kjrojas
 
Bases Datos en java
Bases Datos en javaBases Datos en java
Bases Datos en java
jent46
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
1 2d
 
109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-java109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-java
Miguel Ángel
 
Notas clase
Notas claseNotas clase
Notas clase
1 2d
 

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

Una solucion saturada contiene la cantidad máxima de un soluto que se disuel...
Una solucion saturada contiene la cantidad máxima de un  soluto que se disuel...Una solucion saturada contiene la cantidad máxima de un  soluto que se disuel...
Una solucion saturada contiene la cantidad máxima de un soluto que se disuel...
leonpool521
 
PETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionPETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacion
ctrlc3
 

Último (20)

Joseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidadJoseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidad
 
Hidrostatica_e_Hidrodinamica.pdggggggggf
Hidrostatica_e_Hidrodinamica.pdggggggggfHidrostatica_e_Hidrodinamica.pdggggggggf
Hidrostatica_e_Hidrodinamica.pdggggggggf
 
Sistemas de posicionamiento global (G.P.S.).pdf
Sistemas de posicionamiento global (G.P.S.).pdfSistemas de posicionamiento global (G.P.S.).pdf
Sistemas de posicionamiento global (G.P.S.).pdf
 
Vehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebralVehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebral
 
Distribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de MediasDistribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de Medias
 
Procesos de Manufactura 1_Introducción a la ciencia de los materiales.pptx
Procesos de Manufactura 1_Introducción a la ciencia de los materiales.pptxProcesos de Manufactura 1_Introducción a la ciencia de los materiales.pptx
Procesos de Manufactura 1_Introducción a la ciencia de los materiales.pptx
 
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA  PPTCONTROL DE MOTORES DE CORRIENTE ALTERNA  PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
 
monografia sobre puentes 1234456785432o5
monografia sobre puentes 1234456785432o5monografia sobre puentes 1234456785432o5
monografia sobre puentes 1234456785432o5
 
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
 
Una solucion saturada contiene la cantidad máxima de un soluto que se disuel...
Una solucion saturada contiene la cantidad máxima de un  soluto que se disuel...Una solucion saturada contiene la cantidad máxima de un  soluto que se disuel...
Una solucion saturada contiene la cantidad máxima de un soluto que se disuel...
 
Los vidrios eléctricos en un automóvil.pptx
Los vidrios eléctricos en un automóvil.pptxLos vidrios eléctricos en un automóvil.pptx
Los vidrios eléctricos en un automóvil.pptx
 
FISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdfFISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdf
 
IF-CONDICIONALES-EJERCICIOS RCA Prog2..pptx
IF-CONDICIONALES-EJERCICIOS RCA Prog2..pptxIF-CONDICIONALES-EJERCICIOS RCA Prog2..pptx
IF-CONDICIONALES-EJERCICIOS RCA Prog2..pptx
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
 
Deilybeth Alaña - Operaciones Básicas - Construcción
Deilybeth Alaña - Operaciones Básicas - ConstrucciónDeilybeth Alaña - Operaciones Básicas - Construcción
Deilybeth Alaña - Operaciones Básicas - Construcción
 
PETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionPETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacion
 
4.Clase-DIAGRAMAS DE FLUJO DFD Programacion.pptx
4.Clase-DIAGRAMAS DE FLUJO DFD  Programacion.pptx4.Clase-DIAGRAMAS DE FLUJO DFD  Programacion.pptx
4.Clase-DIAGRAMAS DE FLUJO DFD Programacion.pptx
 
GUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTAS
GUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTASGUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTAS
GUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTAS
 
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagneticoPresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
 
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDADPRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
 

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