Acceso a BD Con Java
-
Upload
julio-rodriguez -
Category
Documents
-
view
68 -
download
3
Transcript of Acceso a BD Con Java
![Page 1: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/1.jpg)
1Bases de Datos en Java
Bases de datos con Java
![Page 2: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/2.jpg)
2Bases de Datos en Java
Conectividad abierta de bases de datos Conectividad abierta de bases de datos
● La conectividad abierta de bases de datos (ODBC, Open Database Connectivity) es una de las interfaces más populares en el mundo de las PC
● ODBC es la implementación de Microsoft de la especificación X/OPEN y SQL Access Group (SAG) Call Level Interface (CLI)
● El diseño de JDBC es basado en ODBC
● Una aplicación ODBC tiene cinco capas lógicas: aplicación, interfaz ODBC, administrador de controladores, controlador y origen de datos. La capa de aplicación proporciona la GUI y la lógica de la aplicación y se escribe en lenguajes como Java, Visual Basic o C++
![Page 3: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/3.jpg)
3Bases de Datos en Java
● El controlador es el componente real que tiene el conocimiento acerca de bases de datos específicas
● el origen de los datos puede ser un sistema administrador de base de datos, o simplemente el almacén de datos
Conectividad abierta de bases de datos Conectividad abierta de bases de datos
![Page 4: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/4.jpg)
4Bases de Datos en Java
Conectividad de bases de datos en Java Conectividad de bases de datos en Java
Las facilidades que ofrece JDBC son las siguientes:
● Ofrece una interfaz común SQL a las aplicaciones Java que acceden Bases de datos remotas
● Permite desarrollar aplicaciones de bases de datos con las ventajas de Java: seguridad, confiabilidad y portabilidad
● Se basa en X/Open SQL CLI y en Microsoft ODBC
● Soporta como mínimo ANSI SQL 92 Entry Level
● Puede aprovechar toda la funcionalidad de un motor de base de datos
![Page 5: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/5.jpg)
5Bases de Datos en Java
Arquitectura de JDBC Arquitectura de JDBC
● JDBC define un conjunto de objetos y métodos API para interactuar con la base de datos subyacente
● Un programa Java primero abre una conexión con una base de datos, hace un objeto de instrucción, pasa instrucciones SQL al DBMS subyacente a través del objeto de instrucción y recupera los resultados así como la información sobre el conjunto de resultados
● Los archivos de la clase JDBC y el applet/aplicación de Java por lo general residen en el cliente y el sistema administrador de base de datos (DBMS) y el origen de datos se ubican por lo regular en un servidor remoto
![Page 6: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/6.jpg)
6Bases de Datos en Java
● El Applet/aplicación y las capas JDBC se comunican en el sistema cliente, y el controlador se hace cargo de interactuar con la base de datos a través de la red
● Las clases JDBC están en el paquete java.sql para leer y escribir al origen de datos
● los applets sólo pueden conectarse al servidor desde el cual se cargan
● los applets remotos no pueden conectarse a bases de datos locales
● Las aplicaciones no tienen restricciones de conexión
Arquitectura de JDBC Arquitectura de JDBC
![Page 7: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/7.jpg)
7Bases de Datos en Java
Implementación de JDBC Implementación de JDBC
Controlador java.sql.Driver java.sql.DriverManager java.sql.PropertyInfo
Conexión java.sql.Connection
Instrucciones java.sql.Statement java.sql.PreparedStatement java.sql.CallableStatementConjunto de resultados java.sql.ResulSetErrores/Advertencias java.sql.Exception java.sql.SQLWarning
Metadatos java.sql.DatabaseMetaData java.sql.ResultSetMetaData
Fecha/Hora java.sql.Date java.sql.Time java.sql.Timestamp
Varios java.sql.Numeric
TIPO CLASES
java.sql.Types
![Page 8: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/8.jpg)
8Bases de Datos en Java
Anatomía de una aplicación JDBC Anatomía de una aplicación JDBC
● Primero el programa carga el driver mediante Class.forName()
● Segundo llama al método getConnection() para obtener el objeto Connection
● Después crea el objeto Statement y prepara una instrucción SQL
● Una instrucción SQL se puede ejecutar de inmediato (objeto Statement)
● o puede tratarse de una instrucción compilada (objeto PreparedStatement)
● o una llamada a un procedimiento almacenado (objeto CallableStatement)
● Dentro de los métodos que se deben de ejecutar para realizar un acceso a la base de datos tenemos:
● el método executeQuery(),que devuelve un objeto ResulSet
![Page 9: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/9.jpg)
9Bases de Datos en Java
● Para las instrucciones de SQL como ubpdate y delete se utiliza el método executeUpdate(), el cual devuelve un entero que indica el número de filas afectadas por la instrucción SQL
● ResulSet contiene filas de datos que se analizan mediante el método next()
● En el caso de una aplicación de proceso de transacciones, se pueden utilizar métodos como rollback() y commit() ya sea para deshacer los cambios realizados por instrucciones SQL, o afectar de manera permanente dichos cambios
Anatomía de una aplicación JDBC Anatomía de una aplicación JDBC
![Page 10: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/10.jpg)
10Bases de Datos en Java
Clases componentes del API JDBC Clases componentes del API JDBC
● Se encuentra en el paquete java.sql
● La clase que está en la parte superior de la jerarquía es DriverManager
● Este administrador de controladores mantiene la información del controlador, información del estado y demás
● Cuando se carga cada uno de estos controladores se registra con el Driver Manager
● cuando se le requiere para abrir una conexión el DriverManager selecciona el controlador dependiendo del URL del JDBC
● JDBC identifica una base de datos con un URL. El URL es de la forma:
Jdbc:<subprotocolo>:<nombrerelacionado con el DBMS/protocol>
![Page 11: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/11.jpg)
11Bases de Datos en Java
Para bases de datos en Internet/Intranet:
● El nombre relacionado con el DBMS puede contener el URL de red//hostname:port/...
● El <subprotocolo> puede ser cualquier nombre que entienda una base de datos.
● El nombre del subprotocolo ODBC está reservado para orígenes de datos de tipo ODBC.
● Un URL de JDBC de una base de datos ODBC normal sería como el siguiente:
Jdbc:odbc:<ODBC DSN;User=<nombreusuario>;PW=<contraseña>
Conexión a la base de datosConexión a la base de datos
![Page 12: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/12.jpg)
12Bases de Datos en Java
● sirve para cargar los drivers ● provee soporte para conectarse a las bases de datos ● La instrucción para cargar el driver es la siguiente: Class.forName(driver);● Para inicializar y cargar el controlador JDBC-ODBC: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");El siguiente sería una porción de código para cargar el controlador:Try {
Class.forName(driver);Conexion = DriverManager.getConnection (bdURL,usuario,clave);
}catch (ClassNotFoundException e){System.out.println(“no se encontro el driver JDBC”+e);}catch (SQLException e){
System.out.println(“error al conectarse ”+a); }
La clase DriverManagerLa clase DriverManager
![Page 13: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/13.jpg)
13Bases de Datos en Java
Está dirigida a una base de datos específica con la que se puede interactuar mediante un determinado subprotocolo
● Maneja en forma interna todos los aspectos de una conexión y los detalles son transparentes para el programa
● Para poder realizar la conexión a una determinada base de datos es necesario primero especificar el URL ya que el comando getConnection lo requiere así
● El formato general del URL para poder conectarse a una base de datos es el siguiente:
jdbc:<protocolo>:subnombrebasededatos>
● Si el driver es para ODBC:
jdbc:odbc:fuente
● Si es otro driver, en general sería:
jdbc:driver://host:puerto/nombreBD
La clase ConnectionLa clase Connection
![Page 14: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/14.jpg)
14Bases de Datos en Java
el puerto es opcional y se usa cuando el motor de la base de
datos está instalado en un puerto que no es el estándar
● Si se usa un servidor de nombres:
jdbc:dcenaming:nombreBd
● Un ejemplo de un URL utilizando el driver JDBC-ODBC es:
String bdURL=”jdbc:odbc:fuentebd”;
● Una vez definido el URL se realiza la conexión la cual es estándar así:
Connection conexión;
Conexión=DriverManager.getConnection(bdURL,usuario,clave);
Debes de tener en cuenta que usuario y clave son las correspondientes identificaciones y claves que defines en el ODBC cuando lo estás configurando para la base de datos con la cual vas a trabajar, estos parámetros son de tipo String
La clase Connection (Continuación)La clase Connection (Continuación)
![Page 15: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/15.jpg)
15Bases de Datos en Java
● Se crea utilizando el método createStatement() del objeto Connection
● Los métodos más importantes son executeQuery(), executeUpdate() y execute()
● Al crear un objeto de este tipo con una instrucción SQL, el método executeQuery() toma una cadena SQL, la transfiere al origen de datos subyacente a través del administrador de controladores y obtiene el ResulSet de vuelta al programa de aplicación
● El método executeQuery() solo devuelve un ResulSet, si desea varios entonces se debe utilizar el método execute()
● Un ejemplo es como sigue, debes de tener en cuenta que primero se debió hacer una conexión a la fuente de datos:
Statement sentencia;
Sentencia= conexión.createStatement();
● Una vez creado el objeto Statement se realiza el query sobre la BD
La clase StatementLa clase Statement
![Page 16: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/16.jpg)
16Bases de Datos en Java
● Se utiliza para efectuar las respectivas operaciones sobre la base de datos activa una vez que se ha establecido la conexión y el respectivo objeto Statement
● El objeto ResulSet es un conjunto de datos tubular
● Consiste de filas de datos organizados en columnas uniformes
● En JDBC el programa Java puede ver sólo una fila de datos a la vez, para que se desee ver el resto de filas es necesario utilizar el método next() y así avanzar a la siguiente fila
● Una vez que el programa tiene una fila, puede usar el índice posicional (1 para la primera columna, 2 para la segunda, etc...), o el nombre de la columna para obtener el valor del campo mediante los métodos getXXXX(“nombrecampo”) donde XXXX corresponde al tipo de dato que está extrayendo y nombrecampo al nombre del campo en la tabla de la base de datos, ejemplo:
Procesamiento de resultados (ResultSet)Procesamiento de resultados (ResultSet)
![Page 17: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/17.jpg)
17Bases de Datos en Java
ResultSet resultado = null; query= new String("Select * from identif where ident='" + c1 + "'"); Statement s = conexion.createStatement();
resultado = s.executeQuery(query); if(resultado!=null){ if (resultado.next () ) { nombre.setText(resultado.getString(3)); clave.setText(resultado.getString(2)); resultado.close(); }
else { resultado.close();
} } else resultado.close();
Una vez terminado el query se debe cerrar el objeto ResultSet con close()
Procesamiento de resultados (ResultSet) - Ejemplo
Procesamiento de resultados (ResultSet) - Ejemplo
![Page 18: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/18.jpg)
18Bases de Datos en Java
Se realiza de la siguiente manera:
Try{
Conexión.close();
}
catch(SQLException e){
System.out.println(“error en la desconexion de la base de datos”+e);
}
Desconexión de la base de datosDesconexión de la base de datos
![Page 19: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/19.jpg)
19Bases de Datos en Java
Operaciones sobre las bases de datos o sobres sus tuplas Operaciones sobre las bases de datos o sobres sus tuplas
Existen operaciones que se pueden realizar sobre los datos (tuplas) de la
base de datos como sobre las bases de datos directamente:
1. Operaciones sobre tuplas de las bases de datos.
● Insertar tuplas
● Statement s=conexión.createStatement();
s.executeUpdate(“Insert Into identify values ('" + cod
"','"+nom+ "','"+clave + "')");
● Actualizar tuplas
● Statement s=conexión.createStatement();
s.executeUpdate(“UPDATE identify SET nombd='“+nombre+"',
clbd='"+clave+"' WHERE codbd='"+cod+"'");
![Page 20: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/20.jpg)
20Bases de Datos en Java
● Eliminar tuplas
● Statement s=conexion.createStatement();
s.executeUpdate(“Delete from identify WHERE
codbd='"+cod+"'");
● Consultar tuplas
● Statement s=conexion.createStatement();
s.executeUpdate(“("Select * from identif where
codbd='"+ cod + "'");
Operaciones sobre las bases de datos o sobres sus tuplas Operaciones sobre las bases de datos o sobres sus tuplas
![Page 21: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/21.jpg)
21Bases de Datos en Java
● creación / eliminación de una tabla
Statement s=conexión.createStatement();
s.executeUpdate(“CREATE TABLE tabla1”+”(cod
VARCHAR(15), nombre INT, valor REAL)”);
...
s.executeUpdate(“DROP TABLE tabla1”);
Operaciones sobre las bases de datos o sobres sus tuplas Operaciones sobre las bases de datos o sobres sus tuplas
![Page 22: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/22.jpg)
22Bases de Datos en Java
● otorgar / eliminar derechos sobre una tabla
Statement s=conexión.createStatement();
s.executeUpdate(“GRANT ALL ON tabla1 TO PUBLIC”);
…
s.executeUpdate(“REVOKE ALL ON tabla1 FROM PUBLIC”);
Operaciones sobre las bases de datos o sobres sus tuplas Operaciones sobre las bases de datos o sobres sus tuplas
![Page 23: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/23.jpg)
23Bases de Datos en Java
Correspondencia entre tipos SQL y tipos Java
Correspondencia entre tipos SQL y tipos Java
Tipo SQL Tipo Java
BIT boolean
DATE java.sql.Date
DOUBLE double
INTEGER/INT int
BIGINT long
BINARY byte[]
CHAR String
DECIMAL Numeric
FLOAT Double
REAL float
SMALLINT short
VARCHAR String
![Page 24: Acceso a BD Con Java](https://reader036.fdocuments.in/reader036/viewer/2022062513/5571fb584979599169949f66/html5/thumbnails/24.jpg)
24Bases de Datos en Java
Diferencia entre acceder a bases de datos desde una
aplicación vs desde un applet
Diferencia entre acceder a bases de datos desde una
aplicación vs desde un applet
● La única diferencia para acceder es que desde un applet se debe de definir unas políticas de acceso a la base de datos para poder otorgarle permisos de acceso, estas políticas se definen así:
grant {
permission java.security.AllPermission;
};
Las cuales tienes que hacer que se hagan efectivas con el paquete que
maneja la seguridad de Java, sino no te permitirá acceder a las bases de
datos. Sugerencia, guarde este comando en un archivo llamándolo por
ejemplo politicas.obl y luego cree un archivo .bat con el siguiente
comando, sálvelo y luego por intermedio de éste será más fácil correrlo.
appletviewer -J-Djava.security.policy=politicas.obl BDJava.htm
pause