SlideShare ist ein Scribd-Unternehmen logo
1 von 80
Autor : Profesor: José Molina MSc




                                                                              r
                                                                           sto
Asesor de Proyectos y Sistemas de Información




                                                                         Pa
Email   : rmolinaj@gmail.com




                                                                         lo
                                                                       za
Web     : www.rmolinaj.es.tl




                                                                     on
Google : sites.google.com/site/sulbaranjose29/




                                                                    G
                                                 CIUDAD BOLIVAR 09/10/2012




                                                                     .
                                                                  Lic
Base de Datos
                          con
                      Visual Basic


Prof.: José Molina            CIUDAD BOLIVAR 09/10/2012
SQL




t e Sd oce R
      r
¿Qué es el ODBC?
Open Data Base Conectivity: Conectividad
abierta de bases de datos.
 Si escribimos una aplicación para acceder a
las tablas de una DB de Access, ¿qué ocurrirá
si después queremos que la misma aplicación,
y sin reescribir nada, utilice tablas de SQL
Server u otra DB cualquiera? La respuesta es
sencilla: no funcionará.
Nuestra aplicación, diseñada para un motor
concreto, no sabrá dialogar con el otro.
Evidentemente, si todas las DB funcionaran
igual, no tendríamos este problema.... aunque
eso no es probable que ocurra nunca.
Pero si hubiera un elemento que por un lado sea
siempre igual, y por el otro sea capaz de dialogar con
una DB concreta, solo tendríamos que ir cambiando
este elemento, y nuestra aplicación siempre
funcionaría sin importar lo que hay al otro lado.
A esas piezas intercambiables las llamaremos
orígenes de datos de ODBC
Casi todas las DB actuales tienen un ODBC.
Debido a que este elemento impone ciertas
limitaciones, ya que no todo lo que la DB sabe hacer
es compatible con la aplicación, como velocidad de
proceso, tiempos de espera, máxima longitud de
registro, número máximo de registros, versión de
SQL, etc., está cayendo en desuso a cambio de otras
técnicas de programación, pero aún le quedan
muchos años de buen servicio.
Modelo de datos ADO
ADO (ActiveX Data Objects) es una tecnología orientada a
objetos para componentes ActiveX basada en una API en
C++ llamada OLE DB.
Para los programadores, presenta la inestimable ventaja
de poder prescindir de los detalles de programación de
bajo nivel de OLE DB a la hora de acceder a datos
almacenados en BD relacionales o no relacionales. Los
objetos ADO, por ser componentes ActiveX, pueden
invocarse desde cualquiera de los lenguajes más
populares que trabajen con objetos.
Los objetos ADO son independientes del lenguaje que se
utilice al accederlos (Visual Basic, JavaScript, VBScript,
etc.) y permiten conectarse a cualquier BD compatible con
ODBC a través de un interfaz basado en objetos.
ADO expone al programador tres objetos principales para
acceder a los datos: el objeto Connection, el objeto
Command y el objeto RecordSet.
RecordSet
Un objeto Recordset es una tabla en memoria
que contiene los datos que manejará nuestra
aplicación.
Esta tabla almacena el resultado obtenido por
las consultas realizadas sobre la base de datos
a la que nos encontremos conectados
mediante el objeto Connection.
Un Recordset se encuentra formado por filas
(tuplas o registros) y columnas (atributos o
campos), a las que deberemos hacer
referencia para poder acceder a sus datos.
El objeto Recordset mantiene la posición de
cada registro devuelto por la consulta, lo que
nos permite "recorrer" los resultados de uno en
uno.
Las buenas aplicaciones de base de datos
emplean el objeto Connection para establecer
un vínculo y el objeto Recordset para
manipular los datos devueltos lo que permite
desarrollar aplicaciones de bases de datos que
realicen casi cualquier tarea de tratamiento de
datos
¿Qué diferencia hay entre una tabla de una DB
y un RecordSet?
Tabla
           Atributos
           Campos


                       BOF



                    Puntero



                       EOF
         Tuplas
        Registros
3 Pasos
    Previos a Insertar Datos


Prof.: José Molina   CIUDAD BOLIVAR 09/10/2012
1) Crear una base de datos en un gestor
 ej: Informix, Access, Oracle, ...
Llamarle Mensajeria a la Base de Datos
2) Crear un ODBC en el
             Panel de Control del
               Sistema Operativo



Prof.: José Molina        CIUDAD BOLIVAR 09/10/2012
Paso 1: Tipo de ODBC
Paso 2:
Paso 3:



          odbc_mensajeria
Paso 4:
Paso 5:
PASO 3: Conectar desde Visual Basic

      Agregar un módulo que contenga:
PASO 4: Realizar la Programación Visual Basic
Imports net.tablas1.db.oldb                                         Agregar un objeto que contenga:
Imports system.data
Imports system.data.oldb
PUBLIC CLASS Incluir
Private sub Button1_click(ByVal sender As system.Object, Byval e As system.EventArgs) Handles
 Button1.click
  Dim a= nom_trabj.text
  Dim b= pago_trabj.text
  Dim RS As New Dataset
   if (b=“”) then
     Msgbox(“No debe dejar ningun campo en blanco..”),MsgboxStyle.critical)
   else
       If MessageBox.Show(“seguro de guardar?, MessageBoxbuttons.Yesno) = windows.
         forms.dialogResult.yes then
            Dim Conect as String =“provider=microsoft.jet.oledeb.4.0;data source=C:sistema
              vb30-mensajeriamensajeria.mdb;jet OLEDB:Database Password=p@rto”
                Using conexión As new oledb.Oledbconnection(Conect)
                  conexión.Open()
                  Dim CadenaSQL as String
                  CadenaSQL = “INSERT INTO nom_trab,pago_sld) values (‘”& a &” ‘ ,’ “&b&”’)”
                  Dim cmd As New OledbCommnad(CadenaSQL,conexión)
                  Dim I As Integer = cmd.executeNonQuery
                  Msgbox(“Se agrego con éxito..” + I. to String + “Registro”)
                  conexión.Close()
                  nom_trabj.clear()
                  pago_trabj.clear()
                  nom_trabj.focus()
                End Using
          endif
     endif
End sub
Conectar una Base de Datos
                 en JAVA




Prof.: José Molina     CIUDAD BOLIVAR 09/10/2012
JAVA
Java es un lenguaje de programación introducido por Sun
Microsystem cuyas características lo sitúan, junto a
Microsoft C# (C Sharp).




Ambos lenguajes de programación son orientados a objetos,
en los cuales existe la herencia, que hace mas fácil la
programación de aplicaciones y códigos reutilizables.
INTRODUCCIÓN
Hoy en día muchas de las empresas, organizaciones, o
pequeños negocios necesitan guardar información y tenerla
a disposición cuando se le necesite, y hacer esto de manera
manual suele ser masivamente tedioso y desgastante.



Es por eso que la creación de aplicaciones que puedan
manipular datos en una base de datos, sea convertido en una
forma de agilizar y hacer mucho mas fácil el manejo de
información.
JAVA
Este lenguaje de programación de hizo muy popular debido
a la gran facilidad para construir aplicaciones robustas, sin
la necesidad de ocupar una gran cantidad de espacio en
disco, lo que lo convirtió en el lenguaje ideal para crear
aplicaciones para internet, además de también ser
independiente de la plataforma
Esto gracias a la JVM (Java Virtual Machine, la maquina
virtual de Java), que le da esa capacidad de ser
independiente de la plataforma y funcionaren diferentes
Sistemas Operativos (Windows, Linux, Mac, entre otros).
JAVA
También gracias a la JVM, no hay necesidad que las
aplicaciones Java tengan todo el código maquina necesario
para ejecutarse. Por el contrario una aplicación Java al
compilarse solo genera archivos byte codes Que son
interpretados por la JVM y esta ejecuta la aplicación

Por ejemplo una aplicación grafica en C++ ocupa de DDLs
(todo el código maquina), mas el código fuente con el que
se programo para poder ejecutarse en Windows, lo que
vendría a ocupar alrededor de 5MB
JAVA


Los que por el contrario, una aplicación grafica en Java
viene a ocupar tal ves unos 500 KB, porque todo el código
maquina para ejecutar la aplicación ya esta instalado en la
PC y ya no es necesario que vaya empaquetado junto con la
aplicación
ENTORNO DE DESARROLLO DE
          JAVA
Para poder desarrollar aplicaciones en Java es necesario
tener instalado el JDK (Java Development Kit), Que incluye
un conjunto de programas y librerías que permiten
desarrollar, compilar y ejecutar programas en Java




Existen diferentes versiones de Java para desarrollar
aplicaciones empresariales, aplicaciones como mas
personales y aplicaciones para dispositivos móviles.
ENTORNO DE DESARROLLO DE
          JAVA
ENTORNO DE DESARROLLO DE
          JAVA
El J2SE proporciona la base para desarrollar y distribuir
aplicaciones que podrán ejecutarse en un servidor o en un
ordenador personal con distintos sistemas operativos




Este entorno de desarrollo incluye las librerías AWT,
SWING y SQL que permiten crear aplicaciones graficas con
acceso a bases de datos
ENTORNO DE DESARROLLO DE
          JAVA




El J2SE proporciona la base para desarrollar y distribuir
aplicaciones que podrán ejecutarse en un servidor o en un
ordenador personal con distintos sistemas operativos
SQL (STRUCTURE QUERY
             LANGUAGE)
Es un lenguaje estándar para interactuar con bases de datos
relacionales y es soportado prácticamente por todos los
sistemas administradores de bases de datos actuales
SQL incluye operaciones de definición como CREATE, al
igual que operaciones de manipulación de datos como
INSERT, UPDATE, SELECT y DELETE

Los datos de una base de datos relacional se almacenan en
tablas lógicamente relacionadas entre si utilizando campos
claves comunes, a su ves cada tabla dispone de datos en
filas y columnas
QUE ES UNA TABLA DE BASE DE
              DATOS
Es una colección de datos presentados en forma de matriz
bidimensional, que esta conformada por columnas y filas,
donde las filas reciben el nombre de registros y las
columnas de campos
Los usuarios de un sistema administrador de bases de datos
pueden realizar sobre una determinada base de datos
operaciones tales como:
                       Insertar
                     Recuperar
                      Modificar
                      Eliminar
                        Buscar
FUNDAMENTOS PARA ESTABLECER UNA CONEXIÓN
         CON UNA BASE DE DATOS




 JAVA proporciona una API(ApplicationProgramming
 Interface) llamada JDBC (Java Data Base Connectivity)
 para poder hacer conexiones con bases de datos relacionales
 a través de un controlador especifico para acceder a una
 base de datos especifica (MySQL, SQL, Postgre SQL) y
 poder ejecutar instrucciones SQL desde la aplicación Java
JDBC (JAVA DATABASE CONNECTIVITY)

Esta API proporciona un conjunto de clases que permite
ejecutar instrucciones SQL para manipular y gestionar bases
de datos relacionales




Pero previamente a que un aplicación java pueda hacer
operaciones sobre una base de datos, debe de existir una
conexión entre la aplicación Java y la base de datos a
manipular con esta aplicación
CONTROLADORES
La conexión entre la aplicación Java y la base de datos se
hace a través de un controlador (driver).


La función de este controlador es traducir los mensajes de
bajo nivel del sistema base de datos a mensajes de bajo
nivel de la API JDBC y viceversa


Fabricantes particulares proporcionan controladores
(drivers) específicos para acceder a sus sistemas de bases de
datos
PAQUETE JDBC
El API JDBC se proporciona en el paquete java. Sql
incluido en el JDK (Java Development Kit) J2SE(Java 2
Platform Estándar Edition).

Este paquete contienen las interfaces y clases Java
fundamentales de JDBC, entre ellas cabe destacar:

Driver: permite conectarse a una base de datos. Cada
sistema administrador de bases de datos requiere un
controlador (Driver) especifico

Driver Manager: Permite gestionar todos los controladores
instalados en la maquina virtual de java
PAQUETE JDBC
Connection: representa una conexión con una base de datos
Statement: Permite ejecutar instrucciones SQL
ResultSet: Conjunto de resultados. Contiene las filas
obtenidas al ejecutar una sentencia SELECT
ResultSetMetaData: Permite obtener información sobre un
ResultSet, por ejemplo el numero de columnas, sus
nombres, tipos.
De estas clases, cualquier aplicación Java utilizara casi
siempre estas cuatro:
PAQUETE JDBC
DriverManager utilizada para crear un objeto Connection,
objeto que será utilizado para crear un objeto Statement, que
a su ves será utilizado para crear un objeto ResultSet




DriverManager utilizada para crear un objeto Connection,
objeto que será utilizado para crear un objeto Statement, que
a su ves será utilizado para crear un objeto ResultSet
CONECTAR CON LA FUENTES DE DATOS

La clase Driver Manager contiene el método
getConnection(argumento URL) que devuelve un objeto de
tipo Connectiony es a partir de este método que se crea este
tipo de objeto.
Una ves registrado el controlador JDBC

Class.for Name ("org.sqlite.JDBC");

Se solicita a Driver Manager que proporcione una conexión
con una base de datos, en este caso se hará con SQLite
Objeto Connection =DriverManager.getConnection ( "jdbc:sqlite: rutaMiBD.db")
CONECTAR CON LA FUENTES DE DATOS
Si Driver Manager no encuentra el controlador de acuerdo
al URL especificado, genera una excepción de tipo
SQLException, que se captura con:




try{
 código que puede generar una excepción}
  catch(SQLException e)
 {Mensaje con el error que se capturo en error}
CONECTAR CON LA
             FUENTES DE DATOS
Cada controlador utiliza un URL de acuerdo con el
protocolo JDBC. Por ejemplo:

Para SQLite;
DriverManager.getConnection("jdbc:sqlite:rutaMiBD.db”)

Para
MySQL;DriverManager.getConnection("jdbc:mysql://servi
dor/sMiBD",usuario,password);

Para
SQL;DriverManager.getConnection("jdbc:odbc:nombreorig
en de datos , usuario, contraseña”)
CONECTAR CON LA FUENTES
              DE DATOS
En este caso se le agrega ODBC(Open Data base
Connectivity) al URL, porque se usa el ODBC que viene
por default en S.O. Windows para crear un origen de base
de datos y utilizarlo como puente para acceder a los datos de
la base de datos


Una ves que ya se tiene la conexión guardada en un objeto
de la clase Connection, se utiliza la clase Statement para
crear otro objeto que nos permita ejecutar las instrucciones
SQL, y que a su vez, y como se menciono anteriormente,
este objeto nos servirá para crear un objeto ResultSet, que
nos servirá para recuperar información de la base de datos.
CONECTAR CON LA
             FUENTES DE DATOS
El objeto Statement sigue la siguiente estructura para poder
crearse

Objeto Statement = Objeto Connection.createStatement();


ExecuteUpdate (argumento Instrucción SQL ), este método
nos sirve básicamente para ejecutar sentencias SQL como
INSERT, UPDATE y DELETE, por lo que este método no
tiene ningún tipo de retorno. Por ejemplo:

Objeto Statement.excuteUpdate (“        DELETE      FROM
Alumnos WHERE ID_Alumno= 1”);
RECUPERAR DATOS DE LA BASE
               DE DATOS
Como se menciono anteriormente, para recuperar datos de
una base de datos, enviaremos las sentencia SELECT como
argumento del método excute Query de la clase Statement,
este método nos va a devolver las filas que arroje el
SELECT en capsulados en un objeto ResultSet

Una ves que tenemos cargado el objeto ResultSet con filas,
podemos movernos entre ellas con los siguientes métodos
que proporciona esta clase.
beforFirst(): Mover el cursor antes de la primera fila.
first(): Mover el cursor a la primera fila.
last(): Mover el cursor a la ultima fila.
afterLast(): Mover el cursor después de la ultima fila.
RECUPERAR DATOS DE LA
                BASE DE DATOS


previous(): Mover el cursor a la fila anterior.
next(): Mover el cursor a la fila siguiente
absolute(fila): Mover el cursor a la fila especifica
relative(n): Mover el cursor n filas a partir de la actual (n
puede ser un numero entero positivo o negativo).


Para obtener los datos de la fila donde esta el cursor, la
interfaz ResultSet también proporciona varios métodos,
algunos de ellos y básicamente los mas utilizados son:
RECUPERAR DATOS DE LA
             BASE DE DATOS

getString(String): Recupera el dato de la columna
especificada por String


getString(int): Recupera el dato de la columna indicada por
el índice especificado


Existen algunos métodos análogos a los anteriores que son
utilizados cuando se sabe que el dato dela columna de la fila
actual es entero o real, por ejemplo: getInt, getLong,
getFloat y getDouble
NAVEGAR POR LA BASE DE DATOS
Hemos visto anteriormente que una vez obtenido un
conjunto de resultados, podemos utilizar los métodos
proporcionados por la interfaz ResultSet para movernos por
dicho conjunto
Para ello debemos conocer que un objeto ResultSet, por
omisión y dependiendo del sistema administrador de bases
de datos, no es actualizable y tiene un cursor que solo se
mueve hacia adelante

No obstante, es posible crear objetos ResultSet actualizables
y que permitan moverse hacia atrás o adelante. Para poder
hacer esto, se necesita mandarle 2 argumentos al método
createStatement de la clase Statement, a la hora de crear este
tipo de objeto.
NAVEGAR POR LA BASE DE DATOS
Estos argumentos son constantes enteras definidas en la
interfaz ResultSet, los argumentos son:

TYPE_SCROLL_INSENSITIVE. Crea un conjunto de
resultados en el que el cursor se puede mover en ambas
direcciones (desplazable)
CONCUR_UPDATABLE. Indica que la hoja de resultados
es actualizable

Quedando de la siguiente forma la creación del Statement:

Objeto Statement =
objetoConnection.createStatement(ResulSet.TYPE_SCROL
L_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
CERRAR OBJETOS

Entra dentro de practicas buenas de programación,cerrar los
objetos Statement, ResultSet y Connection una ves que ya
no serán usados, por ejemplo cuando se cierre la aplicación
Java o cuando se termine de usar un ResultSet

Cada una de estas clases contiene un método para hacer
dicho proceso, el método se llama close(), fácil de usar, por
ejemplo:


Nombre Objeto.close();
EN RESUMEN PARA CREAR UNA CONEXIÓN A BASE DE
                DATOS CON JAVA
Registrar el ODBC

Direccionar el controlador con Driver Manager
Registrar la conexión con Connection
Crear un objeto Statement para poder ejecutar
instrucciones SQL
Utilizar Resultset, ResultSet y MetaData para recuperar
información de la base de datos.

Cerrar objetos.
EJEMPLO: DESCRIPCIÓN DE LOS COMPONENTES JAVA
La aplicación que se construyo tiene los siguientes componentes, que se encuentran
en el paquete javax.Swing:
JFrame; ventana principal.
JPanel; contenedor.
JTable; para mostrar los registros.
JButton; accionar las diferentes operaciones.
JToolbar; para acomodar los botones.
DefaultTableModel; para controlar la tabla.
JTextField; para capturar información.
JLabel; mostrar textos.
JOptionPane; para mandar mensajes.
Border; para pintar los bordes en los paneles, con un texto.
JScrollPane; para desplazarse por los registros de la tabla cuando estos sean
demasiados y ya no puedan visualizarse todos.
Interfaces, actionListener y keyListener; para darle la capacidad de escuchar
eventos a los botones y cajas de texto
r
                                               sto
                                             Pa
                                             lo
                                           za
                                         on
Prof.: José Molina




                                        G
                     CIUDAD BOLIVAR 09/10/2012




                                         .
                                      Lic
¿Qué es PHP?
       • HiperText Preprocesor
      • Tecnologia para servidor
              interpretada

           ¿Cómo Nace PHP?
      •   Nace en Otoño de 1994

  ¿Cómo se crea y sobre que base?
   • Basado en C y C++ aunque su
     primera versión fue escrita en
                  Perl

    • Paradigma Imperativo y OO

                                               Rasmus Lerdorf



Prof.: José Molina                    CIUDAD BOLIVAR 09/10/2012
En la actualidad:
              • PHP 1, 1995
           • PHP 2, 1995-1997
         • PHP 3, 1997-2000…
          • PHP 4, Mayo 2000

           • PHP 5, Julio 2004
             VERSION ACTUAL




Prof.: José Molina               CIUDAD BOLIVAR 09/10/2012
Las bases de datos permiten almacenar de una forma
    estructurada y eficiente toda la información de un sitio web
                        mediante formularios

                             Ventajas
                    – Proporcionar información actualizada
     – Software libre bajo licencia GPL ( Codigo Fuentes y Modificable)
         – Facilitar la realización de búsquedas mediante formularios
        – Disminuir los costes de mantenimiento (mantenimiento lado
                                       cliente)
                      – Multiplataforma (Unix, Win32, Mac)
        – Multitud Framewoks nos centramos en Logica de Negocios
         – Soporta más de 20 Sistemas de gestion de bases de datos:
                         – MySQL mejor integracion con PHP
                                       – Oracle
                                      – SyBase
Prof.: José Molina                 – PostgreSQL…
                                                CIUDAD BOLIVAR 09/10/2012
Servidor web                                         Cliente
                                                                       (navegador)

         Página                         Página                            Página
          PHP                           HTML                              HTML
                                                 internet
                      Intérprete
                         PHP




                  <?PHP
         $nombre = “micromante";
      print ("<P>Hola, $nombre</P>");
                    ?>                                      Hola,micromante

                    <P>Hola, micromante</P>




Prof.: José Molina                                CIUDAD BOLIVAR 09/10/2012
FORM      orden SQL
                    PHP
                                           Base
                                            de
                              resultado    datos


                      PASOS DEL PROCESO

                             • Lado Cliente
             • Cliente pide mediante formulario HTML actualizar
                                  contenido
                            • Lado Servidor
         • HTML mediante PHP conecta a la base de datos y hace la
                                     query
          • La BD devuelve variable con contenido y PHP la procesa
                   • PHP rederiza el contenido a mostrar
                             • Lado Cliente
            • Muestra la web renderizada en formato HTML en el
                                  navegador
Prof.: José Molina                          CIUDAD BOLIVAR 09/10/2012
Conectar con el servidor de bases de datos:
                            mysql_connect()
                 Seleccionar una base de datos:
                           mysql_select_db()
          Enviar la instrucción SQL a la base de datos:
                              mysql_query()
                Obtener y procesar los resultados:
                mysql_num_rows() y mysql_fetch_array()
      Cerrar la conexión con el servidor de bases de datos:
                              mysql_close()




Prof.: José Molina                      CIUDAD BOLIVAR 09/10/2012
Mediante $_GET[‘variable’]
 •   Normalmente, GET es usado para obtener un archivo u otro
     recurso, posiblemente con parámetros especificando más
     exactamente lo que se necesita. El contenido de la variable
                      es visible en navegador

                    Mediante $_POST[‘variable’]
     • Normalmente POST es usado para enviar un pedazo de
       datos al servidor para ser procesado, cualquier cosa que
          esto signifique. Gestion de contraseñas y variables
           importantes. De forma oculta en cabecera HTML

Prof.: José Molina                       CIUDAD BOLIVAR 09/10/2012
Seleccionar una base de datos: mysql_connect()
              Devuelve true en caso de éxito y false en caso
                                contrario
                             Sintaxis:
           $ CONEXIÓN = mysql_connect(SERVER,USER,PASS)

                             Ejemplo:
        mysql_connect(“localhost",“carlos", “1234") or die("No
                  se pudo conectar a la base ");




Prof.: José Molina         CIUDAD BOLIVAR 09/10/2012
Seleccionar una base de datos: mysql_select_db()
            Devuelve true en caso de éxito y false en caso
                              contrario
                             Sintaxis:
                     mysql_select_db (database);
                             Ejemplo:
                  mysql_select_db (“usuarios”)
       or die (“No se puede seleccionar la base de datos”);




Prof.: José Molina         CIUDAD BOLIVAR 09/10/2012
Enviar la instrucción SQL a la base de datos: mysql_query()
  • Devuelve un identificador o true (dependiendo de la
    instrucción) si la instrucción se ejecuta correctamente y
                       false en caso contrario

                           Sintaxis:

       $consulta = mysql_query (instrucción, $conexion);

                           Ejemplo:

        $consulta = mysql_query (“select * from noticias”,
                           $conexion)
                  or die (“Fallo en la consulta”);

          $consulta = mysql_query (VARIABLECADENA,
                           $conexion)
                  or die (“Fallo en la consulta”);

Prof.: José Molina       CIUDAD BOLIVAR 09/10/2012
mysql_real_escape_string():
           funcion para el escapado de
           caracteres antes de enviar la
                      query.




Prof.: José Molina   CIUDAD BOLIVAR 09/10/2012
Obtener y procesar los resultados: mysql_num_rows(),
                       mysql_fetch_array()

  •    mysql_query() devuelve las filas de la tabla afectadas
                        por la instrucción
       •   mysql_num_rows() devuelve el número de filas
                           afectadas

 •    mysql_fetch_array(), que obtiene una fila del resultado
         en un array asociativo cada vez que se invoca
                            Sintaxis:
               $nfilas = mysql_num_rows ($consulta);
               $fila = mysql_fetch_array ($consulta);




Prof.: José Molina        CIUDAD BOLIVAR 09/10/2012
Cerrar la conexión con el servidor de bases de datos:
                       mysql_close()
                           Sintaxis:
                 mysql_close ($IDCONEXION);
                           Ejemplo
                     mysql_close ($conexion);


  “MUY IMPORTANTE SIEMPRE DEBEMOS CERRAR LA CONEXIÓN
   PARA EVITAR POSIBLES HACKS A NUESTRA BASE DE DATOS”




Prof.: José Molina                     CIUDAD BOLIVAR 09/10/2012
•   Requisitos
                   •Servidor web Apache (www.apache.org)
                    • con el módulo PHP (www.php.net)
        •   y la base de datos MySQL (www.mysql.com) si se desea
                            crear páginas dinámicas

                       •   Utilidades Recomendadas
            •    XAMPP es una distribución de Apache que incluye
                MySQL, PHP y otras herramientas para el desarrollo de
                     aplicaciones web, como phpMyAdmin.
                       (http://es.wikipedia.org/wiki/XAMPP)

        •       Editores de PHP, como DevPHP (www.sourceforge.net),
                            • Manuales de PHP y MySQL




Prof.: José Molina                   CIUDAD BOLIVAR 09/10/2012
BASE DE DATOS
             DISTRIBUIDAS
                     ORACLE




                                                       r
                                                    sto
                                                  Pa
                                                  lo
                                                za
                                              on
Prof.: José Molina




                                             G
                          CIUDAD BOLIVAR 09/10/2012




                                              .
                                           Lic
Se trata de una base de datos a nivel lógico, pero que
en realidad (físicamente) está implementada en varias
ubicaciones físicas, incluso en máquinas diferentes y
distantes.

Cada máquina ejecuta su propia instancia y conjuntos
de archivos y todas se conectan en red para hacer
que el usuario no tenga que cambiar su código para
reflejar esta distribución.

La dificultad de esta estructura suele estar aliviada
por medio de instantáneas que graban
momentáneamente os datos de las tablas distantes.

Permiten trabajar con los datos copiados y se
programan para que cada cierto tiempo recojan
nuevamente los datos a fin de reflejar sus cambios.

Posee arquitectura
   cliente/servidor.
Utiliza el software de redOracl
e Net8 para comunicación
entre bases de datos. Net8
permite a las bases de datos
comunicarse a través de redes
para  soportar transacciones
distribuidas y remotas.

Empaqueta sentencias SQL en
uno de los muchos protocolos
de comunicación para
facilitar al cliente la
comunicación con el servidor
y después empaqueta y
devuelve los resultados de
forma similar al cliente
DATABASE LINKS
Concepto central en las BD distribuidas en
ORACLE.

Un DB Link define un camino unidireccional
desde una BD ORACLE a otra.

Un usuario local puede acceder a través de
un link a objetos de esquemas de otros
usuarios en BD
remotas (siempre que tenga permiso suficient
e para hacerlo) como si se tratara de una
única BD.

Se almacenan en el catálogo:
   SELECT db_link FROM user_db_links;
CREACIÓN Y BORRADO DB
                LINK
Creación:
  Crea un link público de nombre nombreLink que establece

   un enlace a una BD remota cuya ubicación está descrita
   en el nombre de servicio a través un usuario y contraseña
   de dicha BD.

        CREATE PUBLIC DATABASE LINK nombreLink
       CONNECT TO usuario IDENTIFIED BY contraseña
              USING 'nombre de servicio';

Borrado:

           DROP [PUBLIC] DATABASE LINK nombreLink
NOMBRE DE SERVICIO
Cada BD es identificada unívocamente en una         BD
distribuida por un nombre global de BD. Este consta del
nombre de la BD junto con el nombre del host en la red
en la que esta BD está ubicada.

Este nombre se hace transparente al usuario mediante el
uso de nombres de servicio (service names) en la
definición de los enlaces (links).

Los nombres de servicio se definen en el archivo
tnsnames.ora                de Oracle, cuya ubicación
depende del ordenador:
 
   c:oracleora92networkadmintnsnames.ora
EJEMPLO

NombreServiceName =
  (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST=
         NombreOrdenadorEnRed)(PORT = 1521))
   )
   (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = NombreBD)
    )
)
TIPOS DE DBLINKS
                              USUARIOS
ENLACES

 PRIVADOS: Sólo lo              FIXED: Hay que
  puede usar el que los           indicar en la
  crea.                           definición usuario y
(CREATE                           contraseña.
  DATABASELINK ....)
                              
                                  CONNECTED USER(SIN

    PÚBLICOS: Lo pueden           CONNECT): Válido
    usar todos los usuarios       para el usuario
    de la BD.                     conectado. Debe
                                  tener en la BD remota
                                  una cuenta con el
(CREATEPUBLICDATABA               mismo nombre de
  SELINK ....)                    usuario y misma
                                  contraseña.
LINKS

El nombre de un objeto en una BD es unívoco
dentro del esquema de su propietario. Sin
embargo, en una BD remota puede existir un
esquema      con      el     mismo      nombre,
que puede tener un objeto con el mismo nombre.

   Acceso a través de un link a un objeto remoto de un
    determinado propietario en una BD remota:
           propietario.nombreObjeto@nombreLink
    O bien
                nombreObjeto@nombreLink


    Si el usuario que accede al objeto es el propietario del
    mismo.
CONSULTA A BDD
              REMOTAS
Para realizar consultas en una BD distribuida
podemos utilizar objetos situados en una BD remota. Se
utiliza para ello los links previamente creados.

   SELECT nombre
   FROM dbb.autor@link
   WHERE nacionalidad = "Francia“

    SELECT nombre

    FROM dbb.autor@link, libro

    WHERE dbb.autor.idautor@link = libro.idautor
   AND nacionalidad = "Francia“

También es posible realizar operaciones de
actualización (insert, update, delete) en la BD
remota, siempre que tengamos el permiso         necesario
para realizarlas.
SINONIMOS
Las referencias a las tablas de la BD remota en las anteriores
consultas no son transparentes al usuario : necesita conocer el
nombre del link y el propietario dela tabla. Para hacerlas
totalmente transparentes se pueden definir sinónimos.

CREACIÓN:

     CREATE [PUBLIC] SYNONYM nombreSinomimo
    FOR nombreObjeto;

Permite referirse a un nombre global de un objeto a través del
  sinónimo.

Esconde el acceso remoto a la tabla haciendo transparente su
  acceso. El parámetro

PUBLIC hace disponible el sinónimo para todos los usuarios.
EJEMPLO DE
      CREAR/BORRAR SINÓNIMO
 CREATE SYNONYM autores
 FOR dbb.autor@link

Autores actúa como sinónimo de dbb.autor@link .
Ahora podemos definir consultas totalmente
transparentes al usuario:
  SELECT nombre
  FROM autores
  WHERE nacionalidad = "Francia"

 DROP[PUBLIC] SYNONYM autores;
WIKI:
         •APACHE: http://wiki.apache.org/general/
           •PHP: http://es.wikipedia.org/wiki/PHP
        •MYSQL: http://es.wikipedia.org/wiki/MySQL

                LIBROS y REFERENCIA:
   •DREAMWEAVER 8 Y PHP | Ed.ANAYA (David Powers)
    •PHP Y MYSQL | Ed.RA-MA (Jacobo Pavon Puertas)
 •FLASH CS3 DINAMICO, AS3, PHP, XML Y BD | Ed.ANAYA
        •PHP, XML Y BASES DE DATOS | Ed.ANAYA
                      Referencia
 http://es.scribd.com/lvillacorta_1/d/48466088BASE-DE-DATO




Prof.: José Molina    CIUDAD BOLIVAR 09/10/2012
Conexion a bases de datos

Weitere ähnliche Inhalte

Was ist angesagt?

Agentes Inteligentes
Agentes  InteligentesAgentes  Inteligentes
Agentes Inteligentes
guestcd9e5e
 
diagramas de interaccion
diagramas de interacciondiagramas de interaccion
diagramas de interaccion
jent46
 

Was ist angesagt? (20)

Agentes Inteligentes
Agentes  InteligentesAgentes  Inteligentes
Agentes Inteligentes
 
Diagrama de casos de usos
Diagrama de casos de usosDiagrama de casos de usos
Diagrama de casos de usos
 
Análisis y diseño de sistemas sesion 15 - casos de estudio
Análisis y diseño de sistemas   sesion 15 - casos de estudioAnálisis y diseño de sistemas   sesion 15 - casos de estudio
Análisis y diseño de sistemas sesion 15 - casos de estudio
 
6 Curso de POO en Java - clases y objetos
6  Curso de POO en Java - clases y objetos6  Curso de POO en Java - clases y objetos
6 Curso de POO en Java - clases y objetos
 
Elementos de diagramas de secuencias
Elementos de diagramas de secuenciasElementos de diagramas de secuencias
Elementos de diagramas de secuencias
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
Cuadro comparativo analisis estructurado y orientado a objeto
Cuadro comparativo analisis estructurado y orientado a objeto Cuadro comparativo analisis estructurado y orientado a objeto
Cuadro comparativo analisis estructurado y orientado a objeto
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
Unidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoUnidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De Uso
 
Ejercicios uml
Ejercicios umlEjercicios uml
Ejercicios uml
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
 
diagramas de interaccion
diagramas de interacciondiagramas de interaccion
diagramas de interaccion
 
Diagramas de clases
Diagramas de clasesDiagramas de clases
Diagramas de clases
 
Mapa mental uml
Mapa mental umlMapa mental uml
Mapa mental uml
 
2. Modelo ER - Relacional
2. Modelo ER - Relacional2. Modelo ER - Relacional
2. Modelo ER - Relacional
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datos
 
Análisis de arquitecturas de software
Análisis de arquitecturas de softwareAnálisis de arquitecturas de software
Análisis de arquitecturas de software
 
Dependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de DatosDependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de Datos
 
Diagrama de contexto
Diagrama de contextoDiagrama de contexto
Diagrama de contexto
 

Ähnlich wie Conexion a bases de datos

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
 
Bases dedatossql serveryc
Bases dedatossql serverycBases dedatossql serveryc
Bases dedatossql serveryc
veron3144
 

Ähnlich wie Conexion a bases de datos (20)

U7 postgre sql
U7 postgre sqlU7 postgre sql
U7 postgre sql
 
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)
 
Programa yaaaa
Programa yaaaaPrograma yaaaa
Programa yaaaa
 
Qué es el odbc
Qué es el odbcQué es el odbc
Qué es el odbc
 
Designer oracle
Designer oracleDesigner oracle
Designer oracle
 
DAM-S5.pptx
DAM-S5.pptxDAM-S5.pptx
DAM-S5.pptx
 
Sistema.inventario@hotmail.com
Sistema.inventario@hotmail.comSistema.inventario@hotmail.com
Sistema.inventario@hotmail.com
 
tecnología de conectividad de datos
tecnología de conectividad de datostecnología de conectividad de datos
tecnología de conectividad de datos
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
 
Sercicios web
Sercicios webSercicios web
Sercicios web
 
Taller No. 1 Introducción a Bases de Datos
Taller No. 1 Introducción a Bases de DatosTaller No. 1 Introducción a Bases de Datos
Taller No. 1 Introducción a Bases de Datos
 
Taller No. 1 Introducción a Bases de Datos
Taller No. 1 Introducción a Bases de DatosTaller No. 1 Introducción a Bases de Datos
Taller No. 1 Introducción a Bases de Datos
 
Conexión a SQL Server con C#.NET a través de ODBC
Conexión a SQL Server con C#.NET a través de ODBCConexión a SQL Server con C#.NET a través de ODBC
Conexión a SQL Server con C#.NET a través de ODBC
 
Act4 bd moreno_joel
Act4 bd moreno_joelAct4 bd moreno_joel
Act4 bd moreno_joel
 
Java con base de datos
Java con base  de datosJava con base  de datos
Java con base de datos
 
curso_mysql.pdf
curso_mysql.pdfcurso_mysql.pdf
curso_mysql.pdf
 
Bases dedatossql serveryc
Bases dedatossql serverycBases dedatossql serveryc
Bases dedatossql serveryc
 
bases de-datos_sql_server_con_c_
bases de-datos_sql_server_con_c_bases de-datos_sql_server_con_c_
bases de-datos_sql_server_con_c_
 
Phpy odbc
Phpy odbcPhpy odbc
Phpy odbc
 
Java con Base de Datos
Java con Base de DatosJava con Base de Datos
Java con Base de Datos
 

Mehr von Universidad Nororiental Gran Mariscal de Ayacucho

Mehr von Universidad Nororiental Gran Mariscal de Ayacucho (20)

Roraima acoep (enero 2016)
Roraima acoep (enero 2016)Roraima acoep (enero 2016)
Roraima acoep (enero 2016)
 
Roraima acoep (enero 2016)
Roraima acoep (enero 2016)Roraima acoep (enero 2016)
Roraima acoep (enero 2016)
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Material de exposición de MSF
Material de exposición de MSFMaterial de exposición de MSF
Material de exposición de MSF
 
Presentación Socio Política Ley Orgánica de Educación
Presentación Socio Política Ley Orgánica de EducaciónPresentación Socio Política Ley Orgánica de Educación
Presentación Socio Política Ley Orgánica de Educación
 
Foro misiones sociales
Foro misiones socialesForo misiones sociales
Foro misiones sociales
 
La educacion que venezuela necesita
La educacion que venezuela necesitaLa educacion que venezuela necesita
La educacion que venezuela necesita
 
Metodologia kendall y Kendall
Metodologia kendall y KendallMetodologia kendall y Kendall
Metodologia kendall y Kendall
 
Seguridad en sistemas computacionales
Seguridad en sistemas computacionalesSeguridad en sistemas computacionales
Seguridad en sistemas computacionales
 
Fundamentos de sistemas operativos final
Fundamentos de sistemas operativos finalFundamentos de sistemas operativos final
Fundamentos de sistemas operativos final
 
Exposicion documentacion de sistemas
Exposicion documentacion de sistemasExposicion documentacion de sistemas
Exposicion documentacion de sistemas
 
Implantacion de sistemas
Implantacion de sistemasImplantacion de sistemas
Implantacion de sistemas
 
Auditoria
AuditoriaAuditoria
Auditoria
 
Kendal y Kendal
Kendal y KendalKendal y Kendal
Kendal y Kendal
 
Xp
XpXp
Xp
 
Diapositivas xp
Diapositivas xpDiapositivas xp
Diapositivas xp
 
Programación Xp Nocturno
Programación Xp NocturnoProgramación Xp Nocturno
Programación Xp Nocturno
 
Metodologia ROM
Metodologia ROMMetodologia ROM
Metodologia ROM
 
Metodologia omt
Metodologia omtMetodologia omt
Metodologia omt
 
Rup
RupRup
Rup
 

Kürzlich hochgeladen

RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
amelia poma
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
EduardoJosVargasCama1
 
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
 

Kürzlich hochgeladen (20)

SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdfFICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
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 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
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
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
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
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
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
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 

Conexion a bases de datos

  • 1. Autor : Profesor: José Molina MSc r sto Asesor de Proyectos y Sistemas de Información Pa Email : rmolinaj@gmail.com lo za Web : www.rmolinaj.es.tl on Google : sites.google.com/site/sulbaranjose29/ G CIUDAD BOLIVAR 09/10/2012 . Lic
  • 2. Base de Datos con Visual Basic Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 3. SQL t e Sd oce R r
  • 4. ¿Qué es el ODBC? Open Data Base Conectivity: Conectividad abierta de bases de datos. Si escribimos una aplicación para acceder a las tablas de una DB de Access, ¿qué ocurrirá si después queremos que la misma aplicación, y sin reescribir nada, utilice tablas de SQL Server u otra DB cualquiera? La respuesta es sencilla: no funcionará. Nuestra aplicación, diseñada para un motor concreto, no sabrá dialogar con el otro. Evidentemente, si todas las DB funcionaran igual, no tendríamos este problema.... aunque eso no es probable que ocurra nunca.
  • 5. Pero si hubiera un elemento que por un lado sea siempre igual, y por el otro sea capaz de dialogar con una DB concreta, solo tendríamos que ir cambiando este elemento, y nuestra aplicación siempre funcionaría sin importar lo que hay al otro lado. A esas piezas intercambiables las llamaremos orígenes de datos de ODBC Casi todas las DB actuales tienen un ODBC. Debido a que este elemento impone ciertas limitaciones, ya que no todo lo que la DB sabe hacer es compatible con la aplicación, como velocidad de proceso, tiempos de espera, máxima longitud de registro, número máximo de registros, versión de SQL, etc., está cayendo en desuso a cambio de otras técnicas de programación, pero aún le quedan muchos años de buen servicio.
  • 6.
  • 7. Modelo de datos ADO ADO (ActiveX Data Objects) es una tecnología orientada a objetos para componentes ActiveX basada en una API en C++ llamada OLE DB. Para los programadores, presenta la inestimable ventaja de poder prescindir de los detalles de programación de bajo nivel de OLE DB a la hora de acceder a datos almacenados en BD relacionales o no relacionales. Los objetos ADO, por ser componentes ActiveX, pueden invocarse desde cualquiera de los lenguajes más populares que trabajen con objetos. Los objetos ADO son independientes del lenguaje que se utilice al accederlos (Visual Basic, JavaScript, VBScript, etc.) y permiten conectarse a cualquier BD compatible con ODBC a través de un interfaz basado en objetos. ADO expone al programador tres objetos principales para acceder a los datos: el objeto Connection, el objeto Command y el objeto RecordSet.
  • 8. RecordSet Un objeto Recordset es una tabla en memoria que contiene los datos que manejará nuestra aplicación. Esta tabla almacena el resultado obtenido por las consultas realizadas sobre la base de datos a la que nos encontremos conectados mediante el objeto Connection. Un Recordset se encuentra formado por filas (tuplas o registros) y columnas (atributos o campos), a las que deberemos hacer referencia para poder acceder a sus datos.
  • 9. El objeto Recordset mantiene la posición de cada registro devuelto por la consulta, lo que nos permite "recorrer" los resultados de uno en uno. Las buenas aplicaciones de base de datos emplean el objeto Connection para establecer un vínculo y el objeto Recordset para manipular los datos devueltos lo que permite desarrollar aplicaciones de bases de datos que realicen casi cualquier tarea de tratamiento de datos ¿Qué diferencia hay entre una tabla de una DB y un RecordSet?
  • 10. Tabla Atributos Campos BOF Puntero EOF Tuplas Registros
  • 11. 3 Pasos Previos a Insertar Datos Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 12. 1) Crear una base de datos en un gestor ej: Informix, Access, Oracle, ... Llamarle Mensajeria a la Base de Datos
  • 13. 2) Crear un ODBC en el Panel de Control del Sistema Operativo Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 14. Paso 1: Tipo de ODBC
  • 16. Paso 3: odbc_mensajeria
  • 19. PASO 3: Conectar desde Visual Basic Agregar un módulo que contenga:
  • 20. PASO 4: Realizar la Programación Visual Basic Imports net.tablas1.db.oldb Agregar un objeto que contenga: Imports system.data Imports system.data.oldb PUBLIC CLASS Incluir Private sub Button1_click(ByVal sender As system.Object, Byval e As system.EventArgs) Handles Button1.click Dim a= nom_trabj.text Dim b= pago_trabj.text Dim RS As New Dataset if (b=“”) then Msgbox(“No debe dejar ningun campo en blanco..”),MsgboxStyle.critical) else If MessageBox.Show(“seguro de guardar?, MessageBoxbuttons.Yesno) = windows. forms.dialogResult.yes then Dim Conect as String =“provider=microsoft.jet.oledeb.4.0;data source=C:sistema vb30-mensajeriamensajeria.mdb;jet OLEDB:Database Password=p@rto” Using conexión As new oledb.Oledbconnection(Conect) conexión.Open() Dim CadenaSQL as String CadenaSQL = “INSERT INTO nom_trab,pago_sld) values (‘”& a &” ‘ ,’ “&b&”’)” Dim cmd As New OledbCommnad(CadenaSQL,conexión) Dim I As Integer = cmd.executeNonQuery Msgbox(“Se agrego con éxito..” + I. to String + “Registro”) conexión.Close() nom_trabj.clear() pago_trabj.clear() nom_trabj.focus() End Using endif endif End sub
  • 21. Conectar una Base de Datos en JAVA Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 22. JAVA Java es un lenguaje de programación introducido por Sun Microsystem cuyas características lo sitúan, junto a Microsoft C# (C Sharp). Ambos lenguajes de programación son orientados a objetos, en los cuales existe la herencia, que hace mas fácil la programación de aplicaciones y códigos reutilizables.
  • 23. INTRODUCCIÓN Hoy en día muchas de las empresas, organizaciones, o pequeños negocios necesitan guardar información y tenerla a disposición cuando se le necesite, y hacer esto de manera manual suele ser masivamente tedioso y desgastante. Es por eso que la creación de aplicaciones que puedan manipular datos en una base de datos, sea convertido en una forma de agilizar y hacer mucho mas fácil el manejo de información.
  • 24. JAVA Este lenguaje de programación de hizo muy popular debido a la gran facilidad para construir aplicaciones robustas, sin la necesidad de ocupar una gran cantidad de espacio en disco, lo que lo convirtió en el lenguaje ideal para crear aplicaciones para internet, además de también ser independiente de la plataforma Esto gracias a la JVM (Java Virtual Machine, la maquina virtual de Java), que le da esa capacidad de ser independiente de la plataforma y funcionaren diferentes Sistemas Operativos (Windows, Linux, Mac, entre otros).
  • 25. JAVA También gracias a la JVM, no hay necesidad que las aplicaciones Java tengan todo el código maquina necesario para ejecutarse. Por el contrario una aplicación Java al compilarse solo genera archivos byte codes Que son interpretados por la JVM y esta ejecuta la aplicación Por ejemplo una aplicación grafica en C++ ocupa de DDLs (todo el código maquina), mas el código fuente con el que se programo para poder ejecutarse en Windows, lo que vendría a ocupar alrededor de 5MB
  • 26. JAVA Los que por el contrario, una aplicación grafica en Java viene a ocupar tal ves unos 500 KB, porque todo el código maquina para ejecutar la aplicación ya esta instalado en la PC y ya no es necesario que vaya empaquetado junto con la aplicación
  • 27. ENTORNO DE DESARROLLO DE JAVA Para poder desarrollar aplicaciones en Java es necesario tener instalado el JDK (Java Development Kit), Que incluye un conjunto de programas y librerías que permiten desarrollar, compilar y ejecutar programas en Java Existen diferentes versiones de Java para desarrollar aplicaciones empresariales, aplicaciones como mas personales y aplicaciones para dispositivos móviles.
  • 29. ENTORNO DE DESARROLLO DE JAVA El J2SE proporciona la base para desarrollar y distribuir aplicaciones que podrán ejecutarse en un servidor o en un ordenador personal con distintos sistemas operativos Este entorno de desarrollo incluye las librerías AWT, SWING y SQL que permiten crear aplicaciones graficas con acceso a bases de datos
  • 30. ENTORNO DE DESARROLLO DE JAVA El J2SE proporciona la base para desarrollar y distribuir aplicaciones que podrán ejecutarse en un servidor o en un ordenador personal con distintos sistemas operativos
  • 31. SQL (STRUCTURE QUERY LANGUAGE) Es un lenguaje estándar para interactuar con bases de datos relacionales y es soportado prácticamente por todos los sistemas administradores de bases de datos actuales SQL incluye operaciones de definición como CREATE, al igual que operaciones de manipulación de datos como INSERT, UPDATE, SELECT y DELETE Los datos de una base de datos relacional se almacenan en tablas lógicamente relacionadas entre si utilizando campos claves comunes, a su ves cada tabla dispone de datos en filas y columnas
  • 32. QUE ES UNA TABLA DE BASE DE DATOS Es una colección de datos presentados en forma de matriz bidimensional, que esta conformada por columnas y filas, donde las filas reciben el nombre de registros y las columnas de campos Los usuarios de un sistema administrador de bases de datos pueden realizar sobre una determinada base de datos operaciones tales como: Insertar Recuperar Modificar Eliminar Buscar
  • 33. FUNDAMENTOS PARA ESTABLECER UNA CONEXIÓN CON UNA BASE DE DATOS JAVA proporciona una API(ApplicationProgramming Interface) llamada JDBC (Java Data Base Connectivity) para poder hacer conexiones con bases de datos relacionales a través de un controlador especifico para acceder a una base de datos especifica (MySQL, SQL, Postgre SQL) y poder ejecutar instrucciones SQL desde la aplicación Java
  • 34. JDBC (JAVA DATABASE CONNECTIVITY) Esta API proporciona un conjunto de clases que permite ejecutar instrucciones SQL para manipular y gestionar bases de datos relacionales Pero previamente a que un aplicación java pueda hacer operaciones sobre una base de datos, debe de existir una conexión entre la aplicación Java y la base de datos a manipular con esta aplicación
  • 35. CONTROLADORES La conexión entre la aplicación Java y la base de datos se hace a través de un controlador (driver). La función de este controlador es traducir los mensajes de bajo nivel del sistema base de datos a mensajes de bajo nivel de la API JDBC y viceversa Fabricantes particulares proporcionan controladores (drivers) específicos para acceder a sus sistemas de bases de datos
  • 36. PAQUETE JDBC El API JDBC se proporciona en el paquete java. Sql incluido en el JDK (Java Development Kit) J2SE(Java 2 Platform Estándar Edition). Este paquete contienen las interfaces y clases Java fundamentales de JDBC, entre ellas cabe destacar: Driver: permite conectarse a una base de datos. Cada sistema administrador de bases de datos requiere un controlador (Driver) especifico Driver Manager: Permite gestionar todos los controladores instalados en la maquina virtual de java
  • 37. PAQUETE JDBC Connection: representa una conexión con una base de datos Statement: Permite ejecutar instrucciones SQL ResultSet: Conjunto de resultados. Contiene las filas obtenidas al ejecutar una sentencia SELECT ResultSetMetaData: Permite obtener información sobre un ResultSet, por ejemplo el numero de columnas, sus nombres, tipos. De estas clases, cualquier aplicación Java utilizara casi siempre estas cuatro:
  • 38. PAQUETE JDBC DriverManager utilizada para crear un objeto Connection, objeto que será utilizado para crear un objeto Statement, que a su ves será utilizado para crear un objeto ResultSet DriverManager utilizada para crear un objeto Connection, objeto que será utilizado para crear un objeto Statement, que a su ves será utilizado para crear un objeto ResultSet
  • 39. CONECTAR CON LA FUENTES DE DATOS La clase Driver Manager contiene el método getConnection(argumento URL) que devuelve un objeto de tipo Connectiony es a partir de este método que se crea este tipo de objeto. Una ves registrado el controlador JDBC Class.for Name ("org.sqlite.JDBC"); Se solicita a Driver Manager que proporcione una conexión con una base de datos, en este caso se hará con SQLite Objeto Connection =DriverManager.getConnection ( "jdbc:sqlite: rutaMiBD.db")
  • 40. CONECTAR CON LA FUENTES DE DATOS Si Driver Manager no encuentra el controlador de acuerdo al URL especificado, genera una excepción de tipo SQLException, que se captura con: try{ código que puede generar una excepción} catch(SQLException e) {Mensaje con el error que se capturo en error}
  • 41. CONECTAR CON LA FUENTES DE DATOS Cada controlador utiliza un URL de acuerdo con el protocolo JDBC. Por ejemplo: Para SQLite; DriverManager.getConnection("jdbc:sqlite:rutaMiBD.db”) Para MySQL;DriverManager.getConnection("jdbc:mysql://servi dor/sMiBD",usuario,password); Para SQL;DriverManager.getConnection("jdbc:odbc:nombreorig en de datos , usuario, contraseña”)
  • 42. CONECTAR CON LA FUENTES DE DATOS En este caso se le agrega ODBC(Open Data base Connectivity) al URL, porque se usa el ODBC que viene por default en S.O. Windows para crear un origen de base de datos y utilizarlo como puente para acceder a los datos de la base de datos Una ves que ya se tiene la conexión guardada en un objeto de la clase Connection, se utiliza la clase Statement para crear otro objeto que nos permita ejecutar las instrucciones SQL, y que a su vez, y como se menciono anteriormente, este objeto nos servirá para crear un objeto ResultSet, que nos servirá para recuperar información de la base de datos.
  • 43. CONECTAR CON LA FUENTES DE DATOS El objeto Statement sigue la siguiente estructura para poder crearse Objeto Statement = Objeto Connection.createStatement(); ExecuteUpdate (argumento Instrucción SQL ), este método nos sirve básicamente para ejecutar sentencias SQL como INSERT, UPDATE y DELETE, por lo que este método no tiene ningún tipo de retorno. Por ejemplo: Objeto Statement.excuteUpdate (“ DELETE FROM Alumnos WHERE ID_Alumno= 1”);
  • 44. RECUPERAR DATOS DE LA BASE DE DATOS Como se menciono anteriormente, para recuperar datos de una base de datos, enviaremos las sentencia SELECT como argumento del método excute Query de la clase Statement, este método nos va a devolver las filas que arroje el SELECT en capsulados en un objeto ResultSet Una ves que tenemos cargado el objeto ResultSet con filas, podemos movernos entre ellas con los siguientes métodos que proporciona esta clase. beforFirst(): Mover el cursor antes de la primera fila. first(): Mover el cursor a la primera fila. last(): Mover el cursor a la ultima fila. afterLast(): Mover el cursor después de la ultima fila.
  • 45. RECUPERAR DATOS DE LA BASE DE DATOS previous(): Mover el cursor a la fila anterior. next(): Mover el cursor a la fila siguiente absolute(fila): Mover el cursor a la fila especifica relative(n): Mover el cursor n filas a partir de la actual (n puede ser un numero entero positivo o negativo). Para obtener los datos de la fila donde esta el cursor, la interfaz ResultSet también proporciona varios métodos, algunos de ellos y básicamente los mas utilizados son:
  • 46. RECUPERAR DATOS DE LA BASE DE DATOS getString(String): Recupera el dato de la columna especificada por String getString(int): Recupera el dato de la columna indicada por el índice especificado Existen algunos métodos análogos a los anteriores que son utilizados cuando se sabe que el dato dela columna de la fila actual es entero o real, por ejemplo: getInt, getLong, getFloat y getDouble
  • 47. NAVEGAR POR LA BASE DE DATOS Hemos visto anteriormente que una vez obtenido un conjunto de resultados, podemos utilizar los métodos proporcionados por la interfaz ResultSet para movernos por dicho conjunto Para ello debemos conocer que un objeto ResultSet, por omisión y dependiendo del sistema administrador de bases de datos, no es actualizable y tiene un cursor que solo se mueve hacia adelante No obstante, es posible crear objetos ResultSet actualizables y que permitan moverse hacia atrás o adelante. Para poder hacer esto, se necesita mandarle 2 argumentos al método createStatement de la clase Statement, a la hora de crear este tipo de objeto.
  • 48. NAVEGAR POR LA BASE DE DATOS Estos argumentos son constantes enteras definidas en la interfaz ResultSet, los argumentos son: TYPE_SCROLL_INSENSITIVE. Crea un conjunto de resultados en el que el cursor se puede mover en ambas direcciones (desplazable) CONCUR_UPDATABLE. Indica que la hoja de resultados es actualizable Quedando de la siguiente forma la creación del Statement: Objeto Statement = objetoConnection.createStatement(ResulSet.TYPE_SCROL L_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
  • 49. CERRAR OBJETOS Entra dentro de practicas buenas de programación,cerrar los objetos Statement, ResultSet y Connection una ves que ya no serán usados, por ejemplo cuando se cierre la aplicación Java o cuando se termine de usar un ResultSet Cada una de estas clases contiene un método para hacer dicho proceso, el método se llama close(), fácil de usar, por ejemplo: Nombre Objeto.close();
  • 50. EN RESUMEN PARA CREAR UNA CONEXIÓN A BASE DE DATOS CON JAVA Registrar el ODBC Direccionar el controlador con Driver Manager Registrar la conexión con Connection Crear un objeto Statement para poder ejecutar instrucciones SQL Utilizar Resultset, ResultSet y MetaData para recuperar información de la base de datos. Cerrar objetos.
  • 51. EJEMPLO: DESCRIPCIÓN DE LOS COMPONENTES JAVA La aplicación que se construyo tiene los siguientes componentes, que se encuentran en el paquete javax.Swing: JFrame; ventana principal. JPanel; contenedor. JTable; para mostrar los registros. JButton; accionar las diferentes operaciones. JToolbar; para acomodar los botones. DefaultTableModel; para controlar la tabla. JTextField; para capturar información. JLabel; mostrar textos. JOptionPane; para mandar mensajes. Border; para pintar los bordes en los paneles, con un texto. JScrollPane; para desplazarse por los registros de la tabla cuando estos sean demasiados y ya no puedan visualizarse todos. Interfaces, actionListener y keyListener; para darle la capacidad de escuchar eventos a los botones y cajas de texto
  • 52. r sto Pa lo za on Prof.: José Molina G CIUDAD BOLIVAR 09/10/2012 . Lic
  • 53. ¿Qué es PHP? • HiperText Preprocesor • Tecnologia para servidor interpretada ¿Cómo Nace PHP? • Nace en Otoño de 1994 ¿Cómo se crea y sobre que base? • Basado en C y C++ aunque su primera versión fue escrita en Perl • Paradigma Imperativo y OO Rasmus Lerdorf Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 54. En la actualidad: • PHP 1, 1995 • PHP 2, 1995-1997 • PHP 3, 1997-2000… • PHP 4, Mayo 2000 • PHP 5, Julio 2004 VERSION ACTUAL Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 55. Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web mediante formularios Ventajas – Proporcionar información actualizada – Software libre bajo licencia GPL ( Codigo Fuentes y Modificable) – Facilitar la realización de búsquedas mediante formularios – Disminuir los costes de mantenimiento (mantenimiento lado cliente) – Multiplataforma (Unix, Win32, Mac) – Multitud Framewoks nos centramos en Logica de Negocios – Soporta más de 20 Sistemas de gestion de bases de datos: – MySQL mejor integracion con PHP – Oracle – SyBase Prof.: José Molina – PostgreSQL… CIUDAD BOLIVAR 09/10/2012
  • 56. Servidor web Cliente (navegador) Página Página Página PHP HTML HTML internet Intérprete PHP <?PHP $nombre = “micromante"; print ("<P>Hola, $nombre</P>"); ?> Hola,micromante <P>Hola, micromante</P> Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 57. FORM orden SQL PHP Base de resultado datos PASOS DEL PROCESO • Lado Cliente • Cliente pide mediante formulario HTML actualizar contenido • Lado Servidor • HTML mediante PHP conecta a la base de datos y hace la query • La BD devuelve variable con contenido y PHP la procesa • PHP rederiza el contenido a mostrar • Lado Cliente • Muestra la web renderizada en formato HTML en el navegador Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 58. Conectar con el servidor de bases de datos: mysql_connect() Seleccionar una base de datos: mysql_select_db() Enviar la instrucción SQL a la base de datos: mysql_query() Obtener y procesar los resultados: mysql_num_rows() y mysql_fetch_array() Cerrar la conexión con el servidor de bases de datos: mysql_close() Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 59. Mediante $_GET[‘variable’] • Normalmente, GET es usado para obtener un archivo u otro recurso, posiblemente con parámetros especificando más exactamente lo que se necesita. El contenido de la variable es visible en navegador Mediante $_POST[‘variable’] • Normalmente POST es usado para enviar un pedazo de datos al servidor para ser procesado, cualquier cosa que esto signifique. Gestion de contraseñas y variables importantes. De forma oculta en cabecera HTML Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 60. Seleccionar una base de datos: mysql_connect() Devuelve true en caso de éxito y false en caso contrario Sintaxis: $ CONEXIÓN = mysql_connect(SERVER,USER,PASS) Ejemplo: mysql_connect(“localhost",“carlos", “1234") or die("No se pudo conectar a la base "); Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 61. Seleccionar una base de datos: mysql_select_db() Devuelve true en caso de éxito y false en caso contrario Sintaxis: mysql_select_db (database); Ejemplo: mysql_select_db (“usuarios”) or die (“No se puede seleccionar la base de datos”); Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 62. Enviar la instrucción SQL a la base de datos: mysql_query() • Devuelve un identificador o true (dependiendo de la instrucción) si la instrucción se ejecuta correctamente y false en caso contrario Sintaxis: $consulta = mysql_query (instrucción, $conexion); Ejemplo: $consulta = mysql_query (“select * from noticias”, $conexion) or die (“Fallo en la consulta”); $consulta = mysql_query (VARIABLECADENA, $conexion) or die (“Fallo en la consulta”); Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 63. mysql_real_escape_string(): funcion para el escapado de caracteres antes de enviar la query. Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 64. Obtener y procesar los resultados: mysql_num_rows(), mysql_fetch_array() • mysql_query() devuelve las filas de la tabla afectadas por la instrucción • mysql_num_rows() devuelve el número de filas afectadas • mysql_fetch_array(), que obtiene una fila del resultado en un array asociativo cada vez que se invoca Sintaxis: $nfilas = mysql_num_rows ($consulta); $fila = mysql_fetch_array ($consulta); Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 65. Cerrar la conexión con el servidor de bases de datos: mysql_close() Sintaxis: mysql_close ($IDCONEXION); Ejemplo mysql_close ($conexion); “MUY IMPORTANTE SIEMPRE DEBEMOS CERRAR LA CONEXIÓN PARA EVITAR POSIBLES HACKS A NUESTRA BASE DE DATOS” Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 66. Requisitos •Servidor web Apache (www.apache.org) • con el módulo PHP (www.php.net) • y la base de datos MySQL (www.mysql.com) si se desea crear páginas dinámicas • Utilidades Recomendadas • XAMPP es una distribución de Apache que incluye MySQL, PHP y otras herramientas para el desarrollo de aplicaciones web, como phpMyAdmin. (http://es.wikipedia.org/wiki/XAMPP) • Editores de PHP, como DevPHP (www.sourceforge.net), • Manuales de PHP y MySQL Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  • 67. BASE DE DATOS DISTRIBUIDAS ORACLE r sto Pa lo za on Prof.: José Molina G CIUDAD BOLIVAR 09/10/2012 . Lic
  • 68. Se trata de una base de datos a nivel lógico, pero que en realidad (físicamente) está implementada en varias ubicaciones físicas, incluso en máquinas diferentes y distantes. Cada máquina ejecuta su propia instancia y conjuntos de archivos y todas se conectan en red para hacer que el usuario no tenga que cambiar su código para reflejar esta distribución. La dificultad de esta estructura suele estar aliviada por medio de instantáneas que graban momentáneamente os datos de las tablas distantes. Permiten trabajar con los datos copiados y se programan para que cada cierto tiempo recojan nuevamente los datos a fin de reflejar sus cambios. Posee arquitectura  cliente/servidor.
  • 69. Utiliza el software de redOracl e Net8 para comunicación entre bases de datos. Net8 permite a las bases de datos comunicarse a través de redes para  soportar transacciones distribuidas y remotas. Empaqueta sentencias SQL en uno de los muchos protocolos de comunicación para facilitar al cliente la comunicación con el servidor y después empaqueta y devuelve los resultados de forma similar al cliente
  • 70. DATABASE LINKS Concepto central en las BD distribuidas en ORACLE. Un DB Link define un camino unidireccional desde una BD ORACLE a otra. Un usuario local puede acceder a través de un link a objetos de esquemas de otros usuarios en BD remotas (siempre que tenga permiso suficient e para hacerlo) como si se tratara de una única BD. Se almacenan en el catálogo:  SELECT db_link FROM user_db_links;
  • 71. CREACIÓN Y BORRADO DB LINK Creación:  Crea un link público de nombre nombreLink que establece un enlace a una BD remota cuya ubicación está descrita en el nombre de servicio a través un usuario y contraseña de dicha BD. CREATE PUBLIC DATABASE LINK nombreLink CONNECT TO usuario IDENTIFIED BY contraseña USING 'nombre de servicio'; Borrado: DROP [PUBLIC] DATABASE LINK nombreLink
  • 72. NOMBRE DE SERVICIO Cada BD es identificada unívocamente en una BD distribuida por un nombre global de BD. Este consta del nombre de la BD junto con el nombre del host en la red en la que esta BD está ubicada. Este nombre se hace transparente al usuario mediante el uso de nombres de servicio (service names) en la definición de los enlaces (links). Los nombres de servicio se definen en el archivo tnsnames.ora de Oracle, cuya ubicación depende del ordenador:  c:oracleora92networkadmintnsnames.ora
  • 73. EJEMPLO NombreServiceName = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST= NombreOrdenadorEnRed)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = NombreBD) ) )
  • 74. TIPOS DE DBLINKS USUARIOS ENLACES  PRIVADOS: Sólo lo  FIXED: Hay que puede usar el que los indicar en la crea. definición usuario y (CREATE contraseña. DATABASELINK ....)  CONNECTED USER(SIN  PÚBLICOS: Lo pueden CONNECT): Válido usar todos los usuarios para el usuario de la BD. conectado. Debe tener en la BD remota una cuenta con el (CREATEPUBLICDATABA mismo nombre de SELINK ....) usuario y misma contraseña.
  • 75. LINKS El nombre de un objeto en una BD es unívoco dentro del esquema de su propietario. Sin embargo, en una BD remota puede existir un esquema con el mismo nombre, que puede tener un objeto con el mismo nombre.  Acceso a través de un link a un objeto remoto de un determinado propietario en una BD remota: propietario.nombreObjeto@nombreLink O bien nombreObjeto@nombreLink  Si el usuario que accede al objeto es el propietario del mismo.
  • 76. CONSULTA A BDD REMOTAS Para realizar consultas en una BD distribuida podemos utilizar objetos situados en una BD remota. Se utiliza para ello los links previamente creados.  SELECT nombre  FROM dbb.autor@link  WHERE nacionalidad = "Francia“  SELECT nombre  FROM dbb.autor@link, libro  WHERE dbb.autor.idautor@link = libro.idautor  AND nacionalidad = "Francia“ También es posible realizar operaciones de actualización (insert, update, delete) en la BD remota, siempre que tengamos el permiso necesario para realizarlas.
  • 77. SINONIMOS Las referencias a las tablas de la BD remota en las anteriores consultas no son transparentes al usuario : necesita conocer el nombre del link y el propietario dela tabla. Para hacerlas totalmente transparentes se pueden definir sinónimos. CREACIÓN: CREATE [PUBLIC] SYNONYM nombreSinomimo FOR nombreObjeto; Permite referirse a un nombre global de un objeto a través del sinónimo. Esconde el acceso remoto a la tabla haciendo transparente su acceso. El parámetro PUBLIC hace disponible el sinónimo para todos los usuarios.
  • 78. EJEMPLO DE CREAR/BORRAR SINÓNIMO CREATE SYNONYM autores FOR dbb.autor@link Autores actúa como sinónimo de dbb.autor@link . Ahora podemos definir consultas totalmente transparentes al usuario: SELECT nombre FROM autores WHERE nacionalidad = "Francia" DROP[PUBLIC] SYNONYM autores;
  • 79. WIKI: •APACHE: http://wiki.apache.org/general/ •PHP: http://es.wikipedia.org/wiki/PHP •MYSQL: http://es.wikipedia.org/wiki/MySQL LIBROS y REFERENCIA: •DREAMWEAVER 8 Y PHP | Ed.ANAYA (David Powers) •PHP Y MYSQL | Ed.RA-MA (Jacobo Pavon Puertas) •FLASH CS3 DINAMICO, AS3, PHP, XML Y BD | Ed.ANAYA •PHP, XML Y BASES DE DATOS | Ed.ANAYA Referencia http://es.scribd.com/lvillacorta_1/d/48466088BASE-DE-DATO Prof.: José Molina CIUDAD BOLIVAR 09/10/2012