Este documento proporciona instrucciones sobre cómo conectar una aplicación Java a una base de datos. Explica que JDBC es la API de Java para conectividad de bases de datos y describe los pasos para establecer una conexión utilizando DriverManager, incluyendo la creación de un objeto Connection y luego utilizando este objeto para crear objetos Statement y ResultSet para ejecutar consultas SQL y recuperar 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
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
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
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