SlideShare ist ein Scribd-Unternehmen logo
1 von 27
CAPA DE ACCESO DE DATOS
JDBC
INTEGRANTTES:
 FIORELLA AGUILAR ISUIZA
 AARON DELGADO ESPARRAGA
La capa de datos está formada por los servicios que proporcionan los datos
persistentes utilizados por la lógica de negocios. Los datos pueden ser datos de
aplicaciones almacenados en un sistema de administración de bases de datos o
pueden incluir información de recursos y directorios almacenada en un almacén de
datos de protocolo ligero de acceso a directorios (LDAP). Los servicios de datos
también pueden incluir alimentación de datos de orígenes externos o datos a los
que se puede obtener acceso desde sistemas informáticos heredados.
CREACIÓN DE LA CAPA DE ACCESO A DATOS
Al trabajar con datos, una opción es incrustar la lógica específica de datos
directamente dentro de la capa de presentación. Sin embargo, lo recomendable
es separar la lógica de acceso a datos de la capa de presentación.
Esta capa separada se conoce como DAL, que se implementa típicamente como
un proyecto de Biblioteca de Clases. En principio, esta arquitectura de capas
nos permite manejar de forma aislada los elementos relacionados con una u
otra sin afectar ambas
Todo el código específico al origen de datos, relacionado con los comandos
SELECT, INSERT, UPDATE, y DELETE debe ubicarse en la DAL. La capa de
presentación sólo debe hacer llamadas a la DAL para cualquier petición de
datos.
La BD Nortwind, por ejemplo, contiene las tablas Products y Categories
que guardan los productos en venta y sus categorías relacionadas. En la
DAL tendremos métodos como:
GetCategories(), que
regresará información de
todas las GetProducts(),
which will return
information about all of
the products.
GetProductsByCategoryID(cat
egoryID), que regresará todos
los productos pertenecientes
a una categoría en específico.
GetProductByProductID(Pro
ductID), que regresará
información de un product
en particular.
Estos métodos pueden regresar simplemente un DataSet o DataReader conteniendo los
datos generados por la consulta, pero idealmente deben contener objetos fuertemente
tipados (strongly-typed objects). Éstos son aquellos cuyo esquema está definido desde
el tiempo de compilación.
Por ejemplo, el DataReader y el DataSet no son por default objetos de este tipo ya que
su esquema se define por las columnas que regresa la consulta que envía los datos.
CREACIÓN DEL DATASET Y EL TABLE ADAPTER
Primero agregamos un DataSet al proyecto, para esto, dar click derecho en nodo del
proyecto y seleccionar Agregar Nuevo Elemento. Seleccionar la opción DataSet de
la lista y nombrarlo como Northwind.xsd.
Aceptar para agregar la carpeta App_Code
La clase TableAdapter funcionará como la Capa de Acceso a Datos. Para este
caso, contendrá los métodos GetProducts(),
GetProductByCategoryID(categoryID), y demás que se invocarán desde la
capa de presentación.El asistente pide seleccionar la BD a trabajar.
Seleccionar la Base de Datos Northwind
Guardar la Cadena de Conexión en el Web.Config
SELECCIONAR CONSULTA SQL
Creamos una consulta que
seleccione todos los registros
y campos de la tabla
Productos:
Uso del Editor de Consultas:
Seleccionar el botón de
Opcioones Avanzadas y
comprobar que esté seleccionada
la opción de “Generate Insert,
Update, and Delete statements".
SELECCIONAR GENERATE INSERT, UPDATE, Y DELETE
STATEMENTS.
Dar siguiente para ir a la
pantalla final. Aquí se pide
seleccionar los métodos para el
TableAdapter.
Cambio del nombre del
método.
EL DATATABLE PRODUCTS Y PRODUCTSTABLEADAPTER
Los objetos agregados nos sirven para tener
acceso a los datos con código tal como:
NorthwindTableAdapters.ProductsTableAdapter
productsAdapter =
new NorthwindTableAdapters.ProductsTableAdapter();
Northwind.ProductsDataTable products;
products = productsAdapter.GetProducts();
foreach (Northwind.ProductsRow productRow in products)
Response.Write("Product: " + productRow.ProductName
+ "<br />");
Construir la siguiente página web que enlaza el DataTable generado por
el método
GetProducts() a un GridView dentro del evento Page_Load
AllProducts.aspx
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="AllProducts.aspx.cs"
Inherits="AllProducts" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>View All Products in a GridView</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>
All Products</h2>
<p>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</p>
</div>
</form>
</body>
</html>
AllProducts.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using NorthwindTableAdapters;
public partial class AllProducts : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ProductsTableAdapter productsAdapter = new
ProductsTableAdapter();
GridView1.DataSource = productsAdapter.GetProducts();
GridView1.DataBind();
}
CONFIGURACION DE CONEXIÓN BASE DE
DATOS CON NETBEANS.
Para realizar la conexión a base de datos desde java
necesitamos hacer uso de JDBC. Las bases de datos que
deseemos conectar deberán proveernos el driver JDBC en
un empaquetado JAR para añadirlo a las librerías del
proyecto.
Deberemos conseguir la librería de acuerdo a la versión
de la Base de Datos al cual deseemos conectarnos.
Es posible que su IDE reconozca la existencia del driver si la base de datos ha sido instalada
en el mismo ordenador junto con sus librerías, solo haría falta añadirlo a la lista de librerías
que se usarán en el proyecto, por ejemplo en NetBeans se podría ir al directorio Libraries
del Proyecto, hacer clic derecho sobre él y elegir Add Library y en la lista podría encontrase
la que necesitemos, o si queremos agregarla manualmente Add JAR/Folder y seleccionar
desde la dirección donde lo tenemos almacenado.
Add Library
Una vez agregada la librería, vamos a realizar el código de conexión, el cual
nos debe presentar una clase con 2 métodos que a mi parecer no deberían
faltar. Debería existir una función (Las funciones retornan datos) que nos
retorne un CachedRowSet que es algo similar al ResultSet que no podemos
retornar mientras el Statement esté sin cerrar, pero es obvio que por
seguridad deberemos tener todas las conexiones cerradas, por eso no
retornamos directamente el ResultSet y hacerlo sin cerrar las conexiones
sería de muy mala práctica.
En cambio, el CachedRowSet almacena todos los registros y podemos
manipularla con las conexiones cerradas, cosa que no podemos hacer con los
ResultSets, ya que éstos necesitan al Statement Abierto, y el Statement a su vez
necesita la conexión abierta. Por otro lado deberíamos tener un
procedimiento (No retorna ningún dato), no retorna nada ya que se encargará
de realizar operaciones unidireccionales.
En conclusión, usamos la Función cuando usemos Sentencias DML SELECT
incluyendo las Funciones y usar el Procedimiento cuando usemos INSERT,
DELETE O UPDATE, incluyendo los StoreProcedures(Procedimientos
Almacenados); aunque podemos conocer algunas bases de datos que
permitan retornar datos desde StoreProcedures, lo ideal sería hacerlo desde
funciones, manteniendo cada uno para su propósito. Del mismo modo, habrá
podido darse cuenta que ambos métodos reciben una variable String como
parámetro, ésta es nada menos que la Sentencia DML que deseamos ejecutar.
Como habrán podido apreciar en el
código, el manejo de excepciones es
relativamente sencilla, lo ideal sería
especificar las excepciones por cada
conexion, statement y resultset para
de esa manera asegurarnos que
permanezcan cerradas al finalizar la
ejecución o aun cuando existieran
errores; de igual manera sería muy útil
obligar a cerrar las conexiones desde
dentro de una clausula finally anexada
al try – catch.
Por último la url de conexión “jdbc:motor:servidor:puerto/basededatos”, variará a continuación
de jdbc, según el motor de base de datos al que deseemos conectarnos (PostgreSQL, MySQL, Oracle,
Derby, etc) , la dirección IP del servidor, el puerto y finalmente el nombre de la base de datos al que
queramos acceder.
DEFINICIÓN DE JDBC
JDBC es un API (Application programming interface) que describe o define una librería estándar para
acceso a fuentes de datos, principalmente orientado a Bases de Datos relacionales que usan SQL
(Structured Query Language). JDBC no sólo provee un interfaz para acceso a motores de bases de datos,
sino que también define una arquitectura estándar, para que los fabricantes puedan crear los drivers que
permitan a las aplicaciones javas el acceso a los datos.
JDBC hace posible estas tres cosas:
 Establece una conexión con la base de datos.
 Envía sentencias SQL.
 Procesa los resultados.
TIPOS DE CONECTORES (DRIVERS) JDBC
Tipo 1. JDBC-ODBC bridge más driver ODBC: “BRIDGE”
Permite el acceso a Base de Datos JDBC mediante un driver ODBC. Cada
máquina cliente que use el puente, debe tener librerías clientes de
ODBC (dll propias del S.O)
Ventajas: Buena forma de aprender JDBC. También puede ser buena
idea usarlo, en sistemas donde cada máquina cliente tenga ya instalado
los drivers ODBC. También es posible que sea la única forma de
acceder a ciertos motores de Bases de Datos.
Tipo 2. Driver Java parciales: “NATIVE”
Traducen las llamadas al API de JDBC Java en llamadas propias del motor de
Base de Datos (Oracle, Informix…). Al igual que el tipo anterior, exige en las
máquinas clientes código binario propio del cliente de la Base de datos
específica y del sistema operativo
Ventajas: Mejor rendimiento que el anterior. Quizá puede ser buena solución
para entornos controlados como intranets. Ejemplo OCI oracle.
Tipo 3. Driver JDBC a través de Middleware:
“NETWORK”
Traduce las llamadas al API JDBC en llamadas propias del protocolo
específico del broker. Éste se encargará de traducirlas de nuevo en
sentencias propias del motor de Base de Datos de cada caso.
Tipo 4: Driver java puro (acceso directo a Base de Datos): “THIN”.
Convierte o traduce las llamadas al API JDBC en llamadas al protocolo de red usado por
el motor de bases de datos, lo que en realidad es una invocación directa al motor de
bases de datos.
APLICACIONES.
 JDBC es usado para enviar comandos SQL hacia una base de datos relacional, que
puede ser Oracle, Infomix, SyBase, etc.
 JDBC sirve para conectarse a una base de datos, y para cada base de datos hay un
driver JDBC diferente. Si la base de datos es remota, y el driver permite conectar a una
base de datos remota, por supuesto que se puede acceder a la base de datos a través
de Internet o de cualquier red, teniendo en cuenta siempre cortafuegos, Proxy, etc. Que
pueden cerrarnos los puertos de conexión.
 API Interfaz de programación: Es el conjunto de funciones y procedimientos o
(métodos si se refiere a programación orientada a objetos) que ofrece cierta biblioteca
para ser utilizado por otro software como una capa de abstracción.
LA CLASE CLASS
Las clases en Ruby son instancias de la clase Class. Cuando se define una
nueva clase (p.e. class NombreClase … end), se crea un objeto de la
claseClass y es asignado a una constante (en este caso NombreClase). Cuando
se usa NombreClase.new para construir un nuevo objeto, se usa el método de la
clase Class para crear nuevas instancias; y después se usa el método
inicializador de la propia clase NombreClase: la construcción y la inicialización de
un objeto son cosas distintas, y pueden modificarse.
LA CLASE CONNECTION
La clase connection proporciona un interfaz eficiente para el acceso a datos y
metadatos de una base de datos. Conocer los recursos de ambas para acceso a
base de datos es fundamental a la hora de obtener un código transparente al
motor de base de datos que utilice la aplicación.
CLASE JAVA DRIVERMANAGER
DriverManager es una clase estática de Java. DriverManager gestiona el
conjunto de controladores Java Database Connectivity (JDBC) que están
disponibles para que los utilice una aplicación.
Las aplicaciones pueden utilizar varios controladores JDBC
simultáneamente si es necesario. Cada aplicación específica un controlador
JDBC mediante la utilización de un URL (Localizador universal de
recursos). Pasando un URL de un controlador JDBC específico a
DriverManager, la aplicación informa a DriverManager acerca del tipo de
conexión JDBC que debe devolverse a la aplicación.
Para poder realizar esta operación, DriverManager debe estar al
corriente de los controladores JDBC disponibles para que pueda
distribuir las conexiones. Efectuando una llamada al método
Class.forName, carga una clase en la máquina virtual Java (JVM) que
se está ejecutando en función del nombre de serie que se pasa en el
método. A continuación figura un ejemplo del método class.forName
utilizado para cargar el controlador JDBC nativo:
Jdbc

Weitere ähnliche Inhalte

Was ist angesagt?

Bases Datos en java
Bases Datos en javaBases Datos en java
Bases Datos en java
jent46
 
Visual 2010 sql server 2008
Visual 2010 sql server 2008Visual 2010 sql server 2008
Visual 2010 sql server 2008
Alex Vasquez
 
Base de datos: sistemas_clienteservidor
Base de datos: sistemas_clienteservidorBase de datos: sistemas_clienteservidor
Base de datos: sistemas_clienteservidor
Jonathan
 

Was ist angesagt? (20)

Bases Datos en java
Bases Datos en javaBases Datos en java
Bases Datos en java
 
Java y Bases Datos
Java y Bases DatosJava y Bases Datos
Java y Bases Datos
 
Visual 2010 sql server 2008
Visual 2010 sql server 2008Visual 2010 sql server 2008
Visual 2010 sql server 2008
 
Taller de Base de Datos - Unidad 4 seguridad
Taller de Base de Datos - Unidad 4 seguridadTaller de Base de Datos - Unidad 4 seguridad
Taller de Base de Datos - Unidad 4 seguridad
 
Acceso A Datos Y Ado.Net
Acceso A Datos Y Ado.NetAcceso A Datos Y Ado.Net
Acceso A Datos Y Ado.Net
 
Ado.net 2012
Ado.net 2012Ado.net 2012
Ado.net 2012
 
Ado.net
Ado.netAdo.net
Ado.net
 
Programación de Base de Datos - Unidad 4 Representacion de la info
Programación de Base de Datos - Unidad 4 Representacion de la infoProgramación de Base de Datos - Unidad 4 Representacion de la info
Programación de Base de Datos - Unidad 4 Representacion de la info
 
Conexion a bases de datos
Conexion a bases de datosConexion a bases de datos
Conexion a bases de datos
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
ADO .net
ADO .netADO .net
ADO .net
 
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
 
Ado.Net
Ado.NetAdo.Net
Ado.Net
 
JAVA CON BASE DE DATOS
JAVA CON BASE DE DATOSJAVA CON BASE DE DATOS
JAVA CON BASE DE DATOS
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Base de datos: sistemas_clienteservidor
Base de datos: sistemas_clienteservidorBase de datos: sistemas_clienteservidor
Base de datos: sistemas_clienteservidor
 
Ochoa ornelas raquel_acceso a una base de datos
Ochoa ornelas raquel_acceso a una base de datosOchoa ornelas raquel_acceso a una base de datos
Ochoa ornelas raquel_acceso a una base de datos
 
Modoconexion
ModoconexionModoconexion
Modoconexion
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN 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
 

Ähnlich wie Jdbc

Active x data object ado.net
Active x data object ado.netActive x data object ado.net
Active x data object ado.net
Gissela Antohane
 
Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)
josecuartas
 

Ähnlich wie Jdbc (20)

ADO.NET
ADO.NETADO.NET
ADO.NET
 
Active x data object ado.net
Active x data object ado.netActive x data object ado.net
Active x data object ado.net
 
Java y Bases de Datos
Java y Bases de DatosJava y Bases de Datos
Java y Bases de Datos
 
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
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Utilizaciòn de base de datos externas en arcgis.
Utilizaciòn de base de datos externas en arcgis.Utilizaciòn de base de datos externas en arcgis.
Utilizaciòn de base de datos externas en arcgis.
 
T2 - JDBC
T2 - JDBCT2 - JDBC
T2 - JDBC
 
Jdbc
JdbcJdbc
Jdbc
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbc
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbc
 
Diapositivas de ado.net
Diapositivas de ado.netDiapositivas de ado.net
Diapositivas de ado.net
 
Java con Base de Datos
Java con Base de Datos Java con Base de Datos
Java con Base de Datos
 
[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)
 
Diapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.netDiapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.net
 
Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)
 
JDBC
JDBCJDBC
JDBC
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
bd.net.pptx
bd.net.pptxbd.net.pptx
bd.net.pptx
 
Java con base de datos
Java con base  de datosJava con base  de datos
Java con base de datos
 
Ado.net
Ado.netAdo.net
Ado.net
 

Mehr von Fiorella Aguilar Isuiza (20)

Mineria de datos
Mineria de datosMineria de datos
Mineria de datos
 
Admnistracion de la seguridad
Admnistracion de la seguridadAdmnistracion de la seguridad
Admnistracion de la seguridad
 
Copia de seguridad y restaurar
Copia de seguridad y restaurarCopia de seguridad y restaurar
Copia de seguridad y restaurar
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Triggr
TriggrTriggr
Triggr
 
Universidad politecnica amazonica
Universidad politecnica amazonicaUniversidad politecnica amazonica
Universidad politecnica amazonica
 
Vistas
VistasVistas
Vistas
 
Comando ddl
Comando ddlComando ddl
Comando ddl
 
Blog transact sql
Blog transact sqlBlog transact sql
Blog transact sql
 
Ejecutablenetbeans
EjecutablenetbeansEjecutablenetbeans
Ejecutablenetbeans
 
Reportes
ReportesReportes
Reportes
 
Jdbc
JdbcJdbc
Jdbc
 
Sqlcommand
SqlcommandSqlcommand
Sqlcommand
 
Objeto connectio.docx
Objeto connectio.docxObjeto connectio.docx
Objeto connectio.docx
 
Espacio de nombres system.data.sql client
Espacio de nombres system.data.sql clientEspacio de nombres system.data.sql client
Espacio de nombres system.data.sql client
 
Ado.net
Ado.netAdo.net
Ado.net
 
Gestor
GestorGestor
Gestor
 
Poo y visual
Poo y visualPoo y visual
Poo y visual
 
Reportes
ReportesReportes
Reportes
 
preparedStatement
preparedStatementpreparedStatement
preparedStatement
 

Kürzlich hochgeladen

TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
NadiaMartnez11
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 

Kürzlich hochgeladen (20)

Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 

Jdbc

  • 1. CAPA DE ACCESO DE DATOS JDBC INTEGRANTTES:  FIORELLA AGUILAR ISUIZA  AARON DELGADO ESPARRAGA
  • 2. La capa de datos está formada por los servicios que proporcionan los datos persistentes utilizados por la lógica de negocios. Los datos pueden ser datos de aplicaciones almacenados en un sistema de administración de bases de datos o pueden incluir información de recursos y directorios almacenada en un almacén de datos de protocolo ligero de acceso a directorios (LDAP). Los servicios de datos también pueden incluir alimentación de datos de orígenes externos o datos a los que se puede obtener acceso desde sistemas informáticos heredados.
  • 3. CREACIÓN DE LA CAPA DE ACCESO A DATOS Al trabajar con datos, una opción es incrustar la lógica específica de datos directamente dentro de la capa de presentación. Sin embargo, lo recomendable es separar la lógica de acceso a datos de la capa de presentación. Esta capa separada se conoce como DAL, que se implementa típicamente como un proyecto de Biblioteca de Clases. En principio, esta arquitectura de capas nos permite manejar de forma aislada los elementos relacionados con una u otra sin afectar ambas Todo el código específico al origen de datos, relacionado con los comandos SELECT, INSERT, UPDATE, y DELETE debe ubicarse en la DAL. La capa de presentación sólo debe hacer llamadas a la DAL para cualquier petición de datos.
  • 4. La BD Nortwind, por ejemplo, contiene las tablas Products y Categories que guardan los productos en venta y sus categorías relacionadas. En la DAL tendremos métodos como: GetCategories(), que regresará información de todas las GetProducts(), which will return information about all of the products. GetProductsByCategoryID(cat egoryID), que regresará todos los productos pertenecientes a una categoría en específico. GetProductByProductID(Pro ductID), que regresará información de un product en particular. Estos métodos pueden regresar simplemente un DataSet o DataReader conteniendo los datos generados por la consulta, pero idealmente deben contener objetos fuertemente tipados (strongly-typed objects). Éstos son aquellos cuyo esquema está definido desde el tiempo de compilación. Por ejemplo, el DataReader y el DataSet no son por default objetos de este tipo ya que su esquema se define por las columnas que regresa la consulta que envía los datos.
  • 5. CREACIÓN DEL DATASET Y EL TABLE ADAPTER Primero agregamos un DataSet al proyecto, para esto, dar click derecho en nodo del proyecto y seleccionar Agregar Nuevo Elemento. Seleccionar la opción DataSet de la lista y nombrarlo como Northwind.xsd.
  • 6. Aceptar para agregar la carpeta App_Code La clase TableAdapter funcionará como la Capa de Acceso a Datos. Para este caso, contendrá los métodos GetProducts(), GetProductByCategoryID(categoryID), y demás que se invocarán desde la capa de presentación.El asistente pide seleccionar la BD a trabajar.
  • 7. Seleccionar la Base de Datos Northwind Guardar la Cadena de Conexión en el Web.Config
  • 8. SELECCIONAR CONSULTA SQL Creamos una consulta que seleccione todos los registros y campos de la tabla Productos: Uso del Editor de Consultas: Seleccionar el botón de Opcioones Avanzadas y comprobar que esté seleccionada la opción de “Generate Insert, Update, and Delete statements".
  • 9. SELECCIONAR GENERATE INSERT, UPDATE, Y DELETE STATEMENTS. Dar siguiente para ir a la pantalla final. Aquí se pide seleccionar los métodos para el TableAdapter. Cambio del nombre del método.
  • 10. EL DATATABLE PRODUCTS Y PRODUCTSTABLEADAPTER Los objetos agregados nos sirven para tener acceso a los datos con código tal como: NorthwindTableAdapters.ProductsTableAdapter productsAdapter = new NorthwindTableAdapters.ProductsTableAdapter(); Northwind.ProductsDataTable products; products = productsAdapter.GetProducts(); foreach (Northwind.ProductsRow productRow in products) Response.Write("Product: " + productRow.ProductName + "<br />");
  • 11. Construir la siguiente página web que enlaza el DataTable generado por el método GetProducts() a un GridView dentro del evento Page_Load AllProducts.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AllProducts.aspx.cs" Inherits="AllProducts" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
  • 12. <title>View All Products in a GridView</title> </head> <body> <form id="form1" runat="server"> <div> <h2> All Products</h2> <p> <asp:GridView ID="GridView1" runat="server"> </asp:GridView>
  • 13. </p> </div> </form> </body> </html> AllProducts.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI;
  • 14. using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using NorthwindTableAdapters; public partial class AllProducts : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { ProductsTableAdapter productsAdapter = new ProductsTableAdapter(); GridView1.DataSource = productsAdapter.GetProducts(); GridView1.DataBind(); }
  • 15. CONFIGURACION DE CONEXIÓN BASE DE DATOS CON NETBEANS. Para realizar la conexión a base de datos desde java necesitamos hacer uso de JDBC. Las bases de datos que deseemos conectar deberán proveernos el driver JDBC en un empaquetado JAR para añadirlo a las librerías del proyecto. Deberemos conseguir la librería de acuerdo a la versión de la Base de Datos al cual deseemos conectarnos. Es posible que su IDE reconozca la existencia del driver si la base de datos ha sido instalada en el mismo ordenador junto con sus librerías, solo haría falta añadirlo a la lista de librerías que se usarán en el proyecto, por ejemplo en NetBeans se podría ir al directorio Libraries del Proyecto, hacer clic derecho sobre él y elegir Add Library y en la lista podría encontrase la que necesitemos, o si queremos agregarla manualmente Add JAR/Folder y seleccionar desde la dirección donde lo tenemos almacenado.
  • 16. Add Library Una vez agregada la librería, vamos a realizar el código de conexión, el cual nos debe presentar una clase con 2 métodos que a mi parecer no deberían faltar. Debería existir una función (Las funciones retornan datos) que nos retorne un CachedRowSet que es algo similar al ResultSet que no podemos retornar mientras el Statement esté sin cerrar, pero es obvio que por seguridad deberemos tener todas las conexiones cerradas, por eso no retornamos directamente el ResultSet y hacerlo sin cerrar las conexiones sería de muy mala práctica.
  • 17. En cambio, el CachedRowSet almacena todos los registros y podemos manipularla con las conexiones cerradas, cosa que no podemos hacer con los ResultSets, ya que éstos necesitan al Statement Abierto, y el Statement a su vez necesita la conexión abierta. Por otro lado deberíamos tener un procedimiento (No retorna ningún dato), no retorna nada ya que se encargará de realizar operaciones unidireccionales. En conclusión, usamos la Función cuando usemos Sentencias DML SELECT incluyendo las Funciones y usar el Procedimiento cuando usemos INSERT, DELETE O UPDATE, incluyendo los StoreProcedures(Procedimientos Almacenados); aunque podemos conocer algunas bases de datos que permitan retornar datos desde StoreProcedures, lo ideal sería hacerlo desde funciones, manteniendo cada uno para su propósito. Del mismo modo, habrá podido darse cuenta que ambos métodos reciben una variable String como parámetro, ésta es nada menos que la Sentencia DML que deseamos ejecutar.
  • 18. Como habrán podido apreciar en el código, el manejo de excepciones es relativamente sencilla, lo ideal sería especificar las excepciones por cada conexion, statement y resultset para de esa manera asegurarnos que permanezcan cerradas al finalizar la ejecución o aun cuando existieran errores; de igual manera sería muy útil obligar a cerrar las conexiones desde dentro de una clausula finally anexada al try – catch.
  • 19. Por último la url de conexión “jdbc:motor:servidor:puerto/basededatos”, variará a continuación de jdbc, según el motor de base de datos al que deseemos conectarnos (PostgreSQL, MySQL, Oracle, Derby, etc) , la dirección IP del servidor, el puerto y finalmente el nombre de la base de datos al que queramos acceder. DEFINICIÓN DE JDBC JDBC es un API (Application programming interface) que describe o define una librería estándar para acceso a fuentes de datos, principalmente orientado a Bases de Datos relacionales que usan SQL (Structured Query Language). JDBC no sólo provee un interfaz para acceso a motores de bases de datos, sino que también define una arquitectura estándar, para que los fabricantes puedan crear los drivers que permitan a las aplicaciones javas el acceso a los datos.
  • 20. JDBC hace posible estas tres cosas:  Establece una conexión con la base de datos.  Envía sentencias SQL.  Procesa los resultados. TIPOS DE CONECTORES (DRIVERS) JDBC Tipo 1. JDBC-ODBC bridge más driver ODBC: “BRIDGE” Permite el acceso a Base de Datos JDBC mediante un driver ODBC. Cada máquina cliente que use el puente, debe tener librerías clientes de ODBC (dll propias del S.O) Ventajas: Buena forma de aprender JDBC. También puede ser buena idea usarlo, en sistemas donde cada máquina cliente tenga ya instalado los drivers ODBC. También es posible que sea la única forma de acceder a ciertos motores de Bases de Datos.
  • 21. Tipo 2. Driver Java parciales: “NATIVE” Traducen las llamadas al API de JDBC Java en llamadas propias del motor de Base de Datos (Oracle, Informix…). Al igual que el tipo anterior, exige en las máquinas clientes código binario propio del cliente de la Base de datos específica y del sistema operativo Ventajas: Mejor rendimiento que el anterior. Quizá puede ser buena solución para entornos controlados como intranets. Ejemplo OCI oracle. Tipo 3. Driver JDBC a través de Middleware: “NETWORK” Traduce las llamadas al API JDBC en llamadas propias del protocolo específico del broker. Éste se encargará de traducirlas de nuevo en sentencias propias del motor de Base de Datos de cada caso.
  • 22. Tipo 4: Driver java puro (acceso directo a Base de Datos): “THIN”. Convierte o traduce las llamadas al API JDBC en llamadas al protocolo de red usado por el motor de bases de datos, lo que en realidad es una invocación directa al motor de bases de datos.
  • 23. APLICACIONES.  JDBC es usado para enviar comandos SQL hacia una base de datos relacional, que puede ser Oracle, Infomix, SyBase, etc.  JDBC sirve para conectarse a una base de datos, y para cada base de datos hay un driver JDBC diferente. Si la base de datos es remota, y el driver permite conectar a una base de datos remota, por supuesto que se puede acceder a la base de datos a través de Internet o de cualquier red, teniendo en cuenta siempre cortafuegos, Proxy, etc. Que pueden cerrarnos los puertos de conexión.  API Interfaz de programación: Es el conjunto de funciones y procedimientos o (métodos si se refiere a programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
  • 24. LA CLASE CLASS Las clases en Ruby son instancias de la clase Class. Cuando se define una nueva clase (p.e. class NombreClase … end), se crea un objeto de la claseClass y es asignado a una constante (en este caso NombreClase). Cuando se usa NombreClase.new para construir un nuevo objeto, se usa el método de la clase Class para crear nuevas instancias; y después se usa el método inicializador de la propia clase NombreClase: la construcción y la inicialización de un objeto son cosas distintas, y pueden modificarse. LA CLASE CONNECTION La clase connection proporciona un interfaz eficiente para el acceso a datos y metadatos de una base de datos. Conocer los recursos de ambas para acceso a base de datos es fundamental a la hora de obtener un código transparente al motor de base de datos que utilice la aplicación.
  • 25. CLASE JAVA DRIVERMANAGER DriverManager es una clase estática de Java. DriverManager gestiona el conjunto de controladores Java Database Connectivity (JDBC) que están disponibles para que los utilice una aplicación. Las aplicaciones pueden utilizar varios controladores JDBC simultáneamente si es necesario. Cada aplicación específica un controlador JDBC mediante la utilización de un URL (Localizador universal de recursos). Pasando un URL de un controlador JDBC específico a DriverManager, la aplicación informa a DriverManager acerca del tipo de conexión JDBC que debe devolverse a la aplicación.
  • 26. Para poder realizar esta operación, DriverManager debe estar al corriente de los controladores JDBC disponibles para que pueda distribuir las conexiones. Efectuando una llamada al método Class.forName, carga una clase en la máquina virtual Java (JVM) que se está ejecutando en función del nombre de serie que se pasa en el método. A continuación figura un ejemplo del método class.forName utilizado para cargar el controlador JDBC nativo: