coneccion

21
Carrera: Ingeniería de sistemas y telemática Curso: Desarrollo de software i. Tema: Java Docente: Marco Aurelio Porro Chulli Integrantes: Erlin Darwin herrera cieza. Yosmer Aguilar cabrera.

Upload: erlin-darwin-herrera-cieza

Post on 14-Feb-2017

19 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Coneccion

Carrera: Ingeniería de sistemas y telemáticaCurso: Desarrollo de software i.Tema: JavaDocente: Marco Aurelio Porro ChulliIntegrantes:

Erlin Darwin herrera cieza. Yosmer Aguilar cabrera.

Page 2: Coneccion

CONNECTION

representa una conexión con una base de datos. Una sesión de conexión incluye las sentencias SQL que se ejecutan y los resultados que son devueltos después de la conexión.Apertura de una conexiónLa forma estándar de establecer una conexión a la base de datos es mediante la llamada al método DriverManager.getConnection. Este método toma una cadena que contiene una URL. La clase DriverManager, referida como la capa de gestión JDBC, intenta localizar un driver que pueda conectar con la base de datos representada por la URL.El siguiente código muestra como ejemplo una conexión a la base de datosLocalizada en la URL “jdbc:odbc:wombat” con un user ID de “oboy” y password“12java”.String url = "jdbc:odbc:wombat";Connection con = DriverManager.getConnection(url, "oboy", "12Java");

Page 3: Coneccion

JDBC y URL’sUna URL JDBC suministra una forma de identificar una base de datos para que el driver apropiado pueda reconocerla y establecer la conexión con ella. Dado que los JDBC URL se usan con varios tipos de drivers, las convenciones son necesariamente muy flexibles. Primero, permiten a diferentes drivers usar diferentes esquemas para nombrar las bases de datos. EL subprotocolo odbc, por ejemplo, permite que las URL contengan valores de atributos (pero no los requieren).Segundo, las URL’s JDBC permiten a los desarrolladores de drivers codificar toda la información de la conexión dentro de ella. por ejemplo, para un applet que quiera hablar con una base de datos dada el abrir la conexión sin necesitar que el usuario realice ninguna tarea de administración de sistemas.Tercero, las URL’s JDBC permiten un nivel de indirección. Esto quiere decir que la URL JDBC puede referirse a una base de datos lógica o un host lógico que se traduce dinámicamente al nombre actual por el sistema de nombramiento de la red.

Page 4: Coneccion

La sintaxis para las URL’s JDBC que se muestra a continuación tiene tres partes separadas por dos puntos:jdbc:<subprotocol>:<subname>1 jdbc – el protocolo. El protocolo en una URL JDBC es siempre jdbc2 - <subprotocol> - el nombre del driver o el nombre del mecanismo deconectividad con la base de datos, que puede estar soportado por uno o más drivers. Un ejemplo sobresaliente de un subprotocolo es “odbc”, que ha sido reservado para URL’s que especifican nombres de fuentes de datos estilo ODBC.jdbc:odbc:fredEn este ejemplo, el subprotocolo es “odbc” y el subnombre “fred” es el nombre de la fuente de datos ODBC local.

Page 5: Coneccion

3 <subname> - una forma de identificar la base de datos. El subnombre puedevariar dependiendo del subprotocolo, y puede tener un subnombre con cualquier sintaxis interna que el fabricante del driver haya escogido.El subprotocolo “odbc”El subprotocolo “odbc” es un caso especial. Ha sido reservado para URL’s queespecifican el estilo ODBC de nombres de fuentes de datos y que tiene lacaracterística de permitir especificar cualquier número de valores de atributosdespués del subnombre (el nombre de la fuente de datos) La sintaxis completa para el protocolo “odbc” es:jdbc:odbc:<data-source-name>[;<attribute-name>=<attribute-value>]*Todos los siguientes son nombres válidos jdbc:odbcjdbc:odbc:qeor7jdbc:odbc:wombatjdbc:odbc:wombat;CacheSize=20;ExtensionCase=LOWERjdbc:odbc:qeora;UID=kgh;PWD=fooey

Page 6: Coneccion

Registro de subprotocolosUn desarrollador de drivers puede reservar un nombre para usar como elsubprotocolo en una URL JDBC. Cuando la clase DriverManager presenta este nombre a su lista de drivers registrados, el driver para el que este nombre está reservado debería reconocerlo y establecer una conexión a la base de datos que lo identifica.lo identifica. Por ejemplo odbc está reservado para el puente JDBC-ODBC. Si fuera, por poner otro ejemplo, Miracle Corporation, y quisiera registrar “miracle” como el subprotocolo para el driver JDBC que conecte a su DBMS Miracle no tiene que usar sino ese nombre.

Page 7: Coneccion

Envío de Sentencias SQLUna vez que la conexión se haya establecido, se usa para pasar sentencias SQL a la base de datos subyacente. JDBC no pone ninguna restricción sobre los tipos de sentencias que pueden enviarse.JDBC suministra tres clases para el envío de sentencias SQL y tres métodos en la interfaz Connection para crear instancias de estas tres clases. Estas clases y métodos son los siguientes:1. El método createStatement se usa para: Sentencias SQL simples (sin parámetros).2.El método prepareStatement se usa para: Sentencias SQL con uno ó más parámetros IN. Sentencias SQL simples que se ejecutan frecuentemente.• El método prepareCall se usa para:Llamar a procedimientos almacenados.

Page 8: Coneccion

Transacciones• Una transacción consiste en una o más sentencias que han sido

ejecutadas,completas y, o bien se ha hecho commit o bien roll-back. Cuando se llama al método commit o rollback , la transacción actúal finaliza y comienza otra.

El método commit hace permanente cualquier cambio que una sentencia SQL realiza en la base de datos, y libera cualquier bloqueo mantenido por la transacción.El método rollback descarta estos cambios.Muchos drivers JDBC soportan transacciones. De hecho, un driver JDBC-compliant debe soportar transacciones. DatabaseMetaData suministra información que describe el nivel de transacción soportado por el DBMS.

Page 9: Coneccion

Niveles de aislamiento de transacciones. El usuario puede especificar un nivel de aislamiento para indicar que nivel de precaución debería ejercitar el DBMS para la resolución de estos conflictos. Por ejemplo, ¿que ocurrirá cuando una transacción cambia un valor y una segunda transacción lee el valor antes de que el cambio haya sido ‘commitado’ o descartado?. ¿Debería permitirse, dado que el valor cambiado leído por la segunda transacción será invalido si la primera transacción ha hecho rollback?. Un usuario JDBC puede instruir a la DBMS para que un valor que ha sido leído antes del ‘commit’ (“dirty reads”) con el siguiente código donde con es el objeto de la actual conexión:con.setTransactionIsolation(TRANSACTION_READ_UNCOMMITTED);El nivel de aislamiento más alto, el que más cuidado toma para evitar conflictos. La interfase Connection define cinco niveles de aislamiento con el nivel más bajo que especifica que no soporte transacciones hasta el más alto que especifica que mientras una transacción esté abierta ninguna otra transacción puede realizar cambios en los datos leídos por esa transacción. Normalmente, el nivel de transacción más alto es el más lento en la ejecución de la aplicación.(debido a que se incrementan los bloqueos y se disminuye la concurrencia de los usuarios).

Page 10: Coneccion

Ejemplo: cargar el controlador JDBC nativo// Cargar el controlador JDBC nativo en DriverManager para hacerlo // disponible para peticiones getConnection.Class.forName("com.ibm.db2.jdbc.app.DB2Driver");Los controladores JDBC están diseñados para informar a DriverManager acerca de sí mismos automáticamente cuando se carga su clase de implementación de controlador. Una vez que se ha procesado la línea de código mencionada anteriormente, el controlador JDBC nativo está disponible para la DriverManager con la que debe trabajar. La línea de código siguiente solicita un objeto Connection que utiliza el URL de JDBC nativo:

Page 11: Coneccion

Ejemplo: solicitar un objeto Connection// Obtener una conexión que utiliza el controlador JDBC nativo.Connection c = DriverManager.getConnection("jdbc:db2:*local");También puede suministrarse un nombre de sistema específico, de la forma siguiente:Connection c = DriverManager.getConnection("jdbc:db2:rchasmop");Así se crea una conexión con el sistema rchasmop. Si el sistema al que intenta conectarse es un sistema remoto (por ejemplo, a través de Distributed Relational Database architecture), debe utilizarse el nombre de sistema del directorio de bases de datos relacionales.

Page 12: Coneccion

PropiedadesEl método DriverManager.getConnection toma un URL de una sola serie indicado anteriormente, y solo es uno de los métodos de DriverManager destinado a obtener un objeto Connection. También existe otra versión del método DriverManager.getConnection que toma un ID de usuario y una contraseña. Ejemplo: método DriverManager.getConnection que toma un ID de usuario y una contraseña// Obtener una conexión que utiliza el controlador JDBC nativo.Connection c = DriverManager.getConnection("jdbc:db2:*local", "cujo", "newtiger");La línea de código intenta conectarse con la base de datos local como usuario cujo con la contraseña newtiger sin importar quién ejecuta la aplicación.

Page 13: Coneccion

También existe una versión del método DriverManager.getConnection que toma un objeto java.util.Properties que permite una mayor personalización.Ejemplo: método DriverManager.getConnection que toma un objeto java.util.Properties// Obtener una conexión que utiliza el controlador JDBC nativo.Properties prop = new java.util.Properties();prop.put("user", "cujo");prop.put("password","newtiger");Connection c = DriverManager.getConnection("jdbc:db2:*local", prop);El código es funcionalmente equivalente a la versión mencionada anteriormente que ha pasado el ID de usuario y la contraseña como parámetros.

Page 14: Coneccion

Propiedades JDBC de IBM Toolbox para Java Propiedades generales:Las propiedades generales son atributos del sistema que especifican el usuario, la contraseña y si se necesita una solicitud para conectarse al servidor.

"password“:Especifica la contraseña para conectarse al servidor. "prompt“:Especifica si debe presentarse al usuario una solicitud en el caso de que sea necesario un nombre de usuario o una contraseña para conectarse al servidor."user“:Especifica el nombre de usuario para conectarse al servidor

Page 15: Coneccion

Propiedades de servidorLas propiedades de servidor especifican atributos que rigen las transacciones, las bibliotecas y las bases de datos."auto commit“:Especifica si la modalidad de compromiso automático es la modalidad de conexión predeterminada para las nuevas conexiones."concurrent access resolution“:Especifica si se utiliza el acceso "currently committed" en la conexión. "cursor hold“: Especifica si se debe retener el cursor entre transacciones. "cursor sensitivity“:Especifica la sensibilidad de cursor que se solicita desde la base de datos. "database name“:Especifica la base de datos que debe utilizarse para la conexión con una agrupación de almacenamiento auxiliar (ASP) independiente."decfloat rounding mode“:Especifica la modalidad de redondeo que debe utilizarse al trabajar con el tipo de datos decfloat.

Page 16: Coneccion

Propiedades de formato"date format“:Especifica el formato de fecha utilizado en los literales de fecha dentro de las sentencias SQL."date separator“:Especifica el separador de fecha utilizado en los literales de fecha dentro de las sentencias SQL. "decimal separator“:Especifica el separador decimal utilizado en los literales numéricos dentro de las sentencias SQL."naming“:Especifica el convenio de denominación utilizado al hacer referencia a las tablas." time format“:Especifica el formato de hora utilizado en los literales de hora dentro de las sentencias SQL."time separator“:Especifica el separador de hora utilizado en los literales de hora dentro de las sentencias SQL.

Page 17: Coneccion

Ejemplos: utilización del controlador JDBC para conectarse a un servidorEjemplo: utilizar un URL en el que no se especifica un nombre de sistemaEste ejemplo hace que se solicite al usuario que escriba el nombre del sistema al que desea conectarse. // Conéctese al sistema sin nombre. // Se solicita al usuario que escriba el nombre del sistema. Connection c = DriverManager.getConnection("jdbc:as400:");Ejemplo: conectarse a la base de datos del servidor; no se especifica ningún esquema SQL predeterminado ni ninguna propiedad // Conéctese al sistema 'mySystem'. No // se especifica ningún esquema SQL predeterminado ni ninguna propiedad. Connection c = DriverManager.getConnection("jdbc:as400://mySystem");

Page 18: Coneccion

Propiedades de rendimiento"big decimal“:Especifica si se utiliza un objeto java.math.BigDecimal intermedio para conversiones de decimal empaquetado y con zona."block criteria“:Especifica los criterios para recuperar datos del servidor en bloques de registros. "block size“:Especifica el tamaño de bloque (en kilobytes) que debe recuperarse del servidor y colocarse en la memoria caché del cliente."lazy close“:Especifica si hay que diferir el cierre de los cursores hasta las peticiones ulteriores. "lob threshold“:Especifica el tamaño máximo de LOB (objeto de gran tamaño) en bytes que puede recuperarse como parte de un conjunto de resultados. "package“:Especifica el nombre base del paquete SQL. Estas son algunas propiedades

Page 19: Coneccion

Propiedades de ordenación"sort“:Especifica cómo ordena el servidor los registros antes de enviarlos al cliente."sort language“:Especifica un ID de idioma de tres caracteres que debe utilizarse para la selección de una secuencia de ordenación."sort table“:Especifica la biblioteca y el nombre de archivo de una tabla de secuencia de ordenación almacenada en el servidor."sort weight“:Especifica cómo trata el servidor las mayúsculas/minúsculas al ordenar registros.

Estas solo son algunas propiedades

Page 20: Coneccion

Ejemplo: conectarse a la base de datos del servidor; se especifica un esquema SQL predeterminado // Conéctese al sistema 'mySys2'. Se // Especifica el esquema SQL predeterminado 'myschema'. Connection c2 = DriverManager.getConnection("jdbc:as400://mySys2/mySchema");

Ejemplo: conectarse a la base de datos del servidor y utilizar un URL (localizador uniforme de recursos) para especificar las propiedades // Conéctese utilizando las propiedades. Se // propiedades se establecen en el URL, // en lugar de mediante un objeto propiedades. Connection c = DriverManager.getConnection( "jdbc:as400://mySystem;naming=sql;errors=full");

Page 21: Coneccion

GRASIAS