You are on page 1of 211

IBM Informix

Versin 3.5

IBM Data Server Driver para JDBC y SQLJ para IDS

SC11-3675-00

IBM Informix

Versin 3.5

IBM Data Server Driver para JDBC y SQLJ para IDS

SC11-3675-00

Nota: Antes de utilizar esta informacin y el producto al que da soporte, lea la informacin contenida en el apartado Avisos en la pgina B-1.

Esta publicacin es la traduccin del original ingls IBM Informix IBM Data Server Driver for JDBC and SQLJ for IDS Version 3.5, (SC23-7687-00). Este documento contiene informacin sobre productos patentados de IBM. Se proporciona segn un acuerdo de licencia y est protegido por la ley de la propiedad intelectual. La informacin contenida en esta publicacin no incluye ninguna garanta de producto, por lo que ninguna declaracin proporcionada en este manual deber interpretarse como tal. Cuando enva informacin a IBM, otorga a IBM un derecho no exclusivo a utilizar o distribuir dicha informacin en la forma en que considere adecuada, sin contraer por ello ninguna obligacin con el remitente. Copyright International Business Machines Corporation 2007. Reservados todos los derechos.

Contenido
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
Acerca de esta publicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v Tipos de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v Supuestos sobre la configuracin local . . . . . . . . . . . . . . . . . . . . . . . . . . v Convenios de la documentacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v Convenios tipogrficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi Sealizacin para funciones, productos y plataformas . . . . . . . . . . . . . . . . . . . . vi Convenios para cdigo de ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . vi Documentacin adicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii Cumplimiento de los estndares industriales . . . . . . . . . . . . . . . . . . . . . . . . vii Diagramas de sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii Cmo leer un diagrama de sintaxis de lnea de mandatos . . . . . . . . . . . . . . . . . . viii Palabras clave y signos de puntuacin . . . . . . . . . . . . . . . . . . . . . . . . . . x Identificadores y nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x IBM agradece sus comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x

IBM Data Server Driver para JDBC y SQLJ para IDS . . . . . . . . . . . . . . . . 1-1
Restricciones de IBM Data Server Driver para JDBC y SQLJ para IDS . . . . . . . . . . . . . . . . 1-1 Controladores soportados para JDBC y SQLJ . . . . . . . . . . . . . . . . . . . . . . . . 1-1 Instalacin de IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . . . . . . . . . . . . 1-3 Personalizacin de propiedades de configuracin de IBM Data Server Driver para JDBC y SQLJ . . . . . . 1-3 Programacin de aplicaciones JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5 Ejemplo de una aplicacin JDBC simple . . . . . . . . . . . . . . . . . . . . . . . . 1-5 Conexin de las aplicaciones JDBC a una fuente de datos . . . . . . . . . . . . . . . . . . . 1-7 Paquetes Java para el soporte JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . 1-14 Obtencin de informacin acerca de una fuente de datos mediante mtodos DatabaseMetaData . . . . . 1-15 Variables en aplicaciones JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-17 Interfaces JDBC para ejecutar SQL . . . . . . . . . . . . . . . . . . . . . . . . . . 1-17 Control de transacciones en aplicaciones JDBC . . . . . . . . . . . . . . . . . . . . . . 1-41 Excepciones y avisos cuando se utiliza IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . . 1-43 Desconexin respecto de fuentes de datos en aplicaciones JDBC . . . . . . . . . . . . . . . . 1-50 Seguridad cuando se utiliza IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . . . . . . 1-51 Seguridad basada en ID de usuario y contrasea cuando se utiliza IBM Data Server Driver para JDBC y SQLJ 1-52 Seguridad mediante los ID de usuario cuando se utiliza IBM Data Server Driver para JDBC y SQLJ . . . . 1-53 Seguridad por contrasea cifrada, seguridad por ID de usuario cifrado o seguridad por ID de usuario cifrado y contrasea cifrada cuando se utiliza IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . . 1-54 Diagnstico de problemas con IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . . . . . . 1-55 Ejemplo de utilizacin de propiedades de configuracin para iniciar un rastreo de JDBC . . . . . . . . 1-57 Ejemplo de un programa de rastreo que se ejecuta bajo IBM Data Server Driver para JDBC y SQLJ . . . . 1-58 Supervisin del sistema para IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . . . . . . 1-61 Java 2 Platform, Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-64 Soporte para componentes de aplicacin de Java 2 Platform, Enterprise Edition . . . . . . . . . . . 1-64 Contenedores de Java 2 Platform Enterprise Edition . . . . . . . . . . . . . . . . . . . . 1-65 Servidor Java 2 Platform Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . . 1-66 Requisitos de la base de datos de Java 2 Platform Enterprise Edition . . . . . . . . . . . . . . 1-66 Java Naming and Directory Interface (JNDI) . . . . . . . . . . . . . . . . . . . . . . . 1-66 Gestin de transacciones Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-66 Enterprise Java Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-71 Soporte para sondeo de conexiones JDBC y SQLJ . . . . . . . . . . . . . . . . . . . . . . 1-73 Informacin de consulta sobre JDBC y SQLJ . . . . . . . . . . . . . . . . . . . . . . . . 1-74 Tipos de datos que se correlacionan con tipos de datos de base de datos en aplicaciones Java . . . . . . 1-74 Propiedades de IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . . . . . . . . . . 1-79 Propiedades de configuracin del IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . . . 1-107 Soporte de controladores para las API de JDBC . . . . . . . . . . . . . . . . . . . . . 1-109 Extensiones para JDBC de IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . . . . . . 1-130
Copyright IBM Corp. 2007

iii

Diferencias entre IBM Data Server Driver para JDBC y SQLJ y el IBM Informix JDBC Driver . . . Cdigos de error emitidos por IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . Estados de SQL emitidos por IBM Data Server Driver para JDBC y SQLJ . . . . . . . . . . Bsqueda de informacin de versin y de entorno sobre IBM Data Server Driver para JDBC y SQLJ

. . . .

. . . .

. . . .

1-166 1-173 1-180 1-182

Apndice. Accesibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1


Funciones de accesibilidad de IBM Informix Dynamic Server Funciones de accesibilidad . . . . . . . . . . . Navegacin mediante el teclado . . . . . . . . . Informacin afn sobre accesibilidad . . . . . . . . IBM y accesibilidad . . . . . . . . . . . . . Diagramas de sintaxis en formato decimal con puntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1 A-1 A-1 A-1 A-1 A-1

Avisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1
Marcas registradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-3

ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X-1

iv

IBM Data Server Driver para JDBC y SQLJ para IDS

Introduccin
Acerca de esta publicacin
Esta publicacin es una gua para utilizar el IBM Data Server Driver para JDBC y SQLJ para conectar a los servidores de datos IBM Informix Dynamic Server.

Tipos de usuarios
Esta gua est destinada a los programadores de Java que utilizan la API de JDBC para conectar con bases de datos Informix utilizando el IBM Data Server Driver para JDBC y SQLJ. Para utilizar esta gua, debe tener conocimientos sobre programacin Java y en particular debe conocer las clases y los mtodos de la API JDBC.

Supuestos sobre la configuracin local


Los productos IBM Informix pueden dar soporte a varios idiomas, culturas y juegos de cdigos. Toda la informacin relacionada con conjuntos de caracteres, clasificacin y representacin de datos numricos, moneda, fecha y hora se rene en un solo entorno, que recibe el nombre de configuracin local de Soporte Global de Idiomas (GLS). Esta publicacin asume que su base de datos utiliza por omisin el entorno local. Este valor por omisin es en_us.8859-1 (ISO 8859-1) en las plataformas UNIX o en_us.1252 (Microsoft 1252) en entornos Windows. Esta configuracin local da soporte a los convenios de formato de ingls de EE.UU. para visualizar los valores de fecha, hora, nmero y moneda. Esta configuracin local tambin da soporte al juego de cdigos ISO 8859-1 (en UNIX and Linux) o Microsoft 1252 (en Windows), que incluye el juego de cdigos ASCII ms muchos caracteres de 8 bits como por ejemplo , y . Si tiene intencin de utilizar caracteres que no sean los caracteres por omisin en sus datos o identificadores de SQL, o si piensa utilizar otras reglas de intercalacin para clasificar datos de tipo carcter, tiene que especificar la configuracin local que no es la configuracin por omisin adecuada. Para ver instrucciones sobre cmo especificar una configuracin local que no es la configuracin por omisin, la sintaxis adicional y otras consideraciones relacionadas con configuraciones locales de GLS, consulte el manual IBM Informix Gua del usuario de GLS.

Convenios de la documentacin
Esta seccin describe los convenios siguientes, los cuales se utilizan en la documentacin de producto de IBM Informix Dynamic Server: v Convenios tipogrficos v Convenios para componentes, productos y plataformas v Diagramas de sintaxis v Convenios de la lnea de mandatos v Convenios para cdigo de ejemplo

Copyright IBM Corp. 2007

Convenios tipogrficos
Esta publicacin utiliza los convenios siguientes para presentar trminos nuevos, mostrar capturas de pantalla, describir la sintaxis de mandatos, etc.
Convenio PALABRA CLAVE cursiva Significado Las palabras clave de SQL, SPL y algunos otros lenguajes de programacin aparecen escritos en maysculas, con un font con remate. En el texto, aparecen en cursiva trminos nuevos y palabras que se destacan. En la sintaxis y ejemplos de cdigo, aparecen en cursiva valores de variable que debe especificar el usuario. Aparecen en negrita los nombres de entidades de programas (tales como clases, sucesos y tablas), las variables de entorno, los nombres de archivos, las vas de acceso y los elementos de la interfaz (tales como iconos, opciones de men y botones). La informacin que visualiza el producto y la informacin que especifica el usuario aparecen con el tipo de letra de monoespaciado. Las teclas que debe pulsar aparecen en letras maysculas escritas con un font sin remate (sans serif). Este smbolo indica un elemento de men. Por ejemplo, Elija Herramientas > Opciones significa que tiene que elegir el elemento Opciones en el men Herramientas.

negrita

monoespaciado PULSACIN >

Sealizacin para funciones, productos y plataformas


La sealizacin para componentes, productos y plataformas identifica prrafos que contienen informacin especfica de un componente, producto o plataforma. A continuacin, se muestran algunos ejemplos de esta sealizacin: Dynamic Server Identifica informacin que es especfica de IBM Informix Dynamic Server Fin de Dynamic Server Windows solamente Identifica informacin que es especfica del sistema operativo Windows Fin de Windows solamente Esta sealizacin puede aplicarse a uno o ms prrafos de un apartado. Cuando un apartado completo es aplicable a un producto o plataforma determinados, esto se indica en el texto de cabecera; por ejemplo: Ordenacin de tablas (Windows)

Convenios para cdigo de ejemplo


Esta publicacin contiene ejemplos de cdigo de SQL a lo largo de toda ella. Excepto cuando se indique, el cdigo no es especfico de ninguna herramienta individual de desarrollo de aplicaciones de IBM Informix. Si el ejemplo solamente contiene sentencias de SQL, las sentencias no estn delimitadas por signos de punto y coma. A continuacin sigue un cdigo de ejemplo:

vi

IBM Data Server Driver para JDBC y SQLJ para IDS

CONNECT TO stores_demo ... DELETE FROM customer WHERE customer_num = 121 ... COMMIT WORK DISCONNECT CURRENT

Para utilizar este cdigo de SQL para un producto especfico, debe aplicar las reglas de sintaxis de ese producto. Por ejemplo, si est utilizando DBAccess, debe delimitar varias sentencias con signos de punto y coma. Si est utilizando una API de SQL, debe utilizar EXEC SQL al principio de cada sentencia y un signo de punto y coma (u otro delimitador apropiado) al final de la sentencia. Consejo: Los puntos suspensivos en un ejemplo de cdigo indican que se aadira ms cdigo en una aplicacin completa, pero no es necesario mostrarlo para describir el concepto que se explica. Para obtener instrucciones detalladas sobre la utilizacin de sentencias de SQL para una herramienta determinada de desarrollo de aplicaciones o para una API de SQL, consulte la documentacin correspondiente al producto.

Documentacin adicional
Puede ver, buscar e imprimir toda la documentacin del producto desde el Centro de informacin de IBM Informix Dynamic Server, situado en esta direccin de la Web: http://publib.boulder.ibm.com/infocenter/idshelp/v111/index.jsp. Para obtener documentacin adicional sobre IBM Informix Dynamic Server y productos asociados, tales como notas de release, notas de mquina y notas de documentacin, consulte la pgina de la biblioteca de productos en lnea, situada en http://www.ibm.com/software/data/informix/pubs/library/. Como alternativa, puede consultar o instalar la documentacin del producto a partir del CD de Iniciacin rpida que se proporciona con el producto.

Cumplimiento de los estndares industriales


Las instituciones American National Standards Institute (ANSI) e International Organization of Standardization (ISO) han establecido conjuntamente un conjunto de normas de la industria para el Lenguaje de consulta estructurado (SQL). Los productos basados en SQL de IBM Informix se ajustan totalmente a la norma SQL-92 Entry Level (publicada como ANSI X3.135-1992), que es idntica a ISO 9075:1992. Adems, muchas funciones de los servidores de bases de datos IBM Informix cumplen las normas SQL-92 Intermediate y Full Level y X/Open SQL de Common Applications Environment (CAE).

Diagramas de sintaxis
Esta gua utiliza diagramas de sintaxis creados con los componentes siguientes para describir la sintaxis de las sentencias y todos los mandatos distintos de los que estn en el nivel del sistema.

Introduccin

vii

Tabla 1. Componentes del diagrama de sintaxis Componente representado en PDF Componente representado en HTML >>---------------------Significado Comienza la sentencia.

----------------------->

La sentencia contina en la lnea siguiente. La sentencia contina desde la lnea anterior. La sentencia finaliza. Elemento necesario. Elemento opcional.

>---------------------------------------------><

SELECT

--------SELECT-----------+-----------------+--------LOCAL------ ---+-----ALL-------+--+--DISTINCT-----+ ---UNIQUE------

LOCAL

ALL DISTINCT UNIQUE

Elemento necesario a elegir. Debe haber un solo elemento.

FOR UPDATE FOR READ ONLY NEXT PRIOR PREVIOUS

---+------------------+--+--FOR UPDATE-----+ --FOR READ ONLY-- .---NEXT---------. ----+----------------+--+---PRIOR--------+ ---PREVIOUS-----

Los elementos opcionales a elegir se muestran debajo de la lnea principal, de los cuales puede especificar uno. Los valores debajo de la lnea principal son opcionales, de los cuales puede especificar uno. Si no especifica uno, se utilizar como valor por omisin el valor por encima de la lnea. Elementos opcionales. Estn permitidos varios elementos; cada repeticin debe ir precedida de una coma.

nombre_ndice nombre_tabla

.-------,-----------. V | ---+-----------------+--+--nombre_ndice-+ --nombre_tabla--

Referencia a tabla Referencia a tabla

>>-| Referencia a tabla |->< Referencia a tabla |--+-----view--------+--| +------table------+ ----synonym------

Referencia a un segmento de la sintaxis. Segmento de sintaxis.

view table
synonym

Cmo leer un diagrama de sintaxis de lnea de mandatos


El siguiente diagrama de sintaxis de lnea de mandatos utiliza algunos de los elementos listados en la tabla contenida en Diagramas de sintaxis.

viii

IBM Data Server Driver para JDBC y SQLJ para IDS

Creacin de un trabajo sin conversin


onpladm create job trabajo -p proyecto -n -d dispositivo -D base de datos -t tabla

(1) Establecimiento de la modalidad de ejecucin -S servidor -T destino

Notas: 1 Vea la pgina Z-1

La segunda lnea de este diagrama contiene un segmento definido como Establecimiento de la modalidad de ejecucin, que de acuerdo con la nota al pie del diagrama, se encuentra en la pgina Z-1. Si se trataba de una referencia cruzada real, debera encontrar este segmento en la primera pgina del apndice Z. En lugar de ello, este segmento se muestra en el diagrama de segmento siguiente. Observe que el diagrama utiliza componentes de comienzo y de final de segmento. Establecimiento de la modalidad de ejecucin:
l c -f d p a u n N

Para ver el modo de construir un mandato correctamente, comience por la parte superior izquierda del diagrama principal. Siga el diagrama hacia la derecha, incluyendo los elementos que desee. Los elementos de este diagrama son sensibles a may/mn debido a que ilustran la sintaxis de programas de utilidad. Otros tipos de sintaxis, como por ejemplo de SQL, no son sensibles a may/mn. diagrama Creacin de un trabajo sin conversin ilustra los pasos siguientes: Escriba onpladm create job y, a continuacin, el nombre del trabajo. Opcionalmente, escriba -p y, a continuacin, el nombre del proyecto. Escriba los siguientes elementos necesarios: v -n v -d y el nombre del dispositivo v -D y el nombre de la base de datos v -t y el nombre de la tabla 4. Opcionalmente, puede elegir uno o ms de los elementos siguientes y repetirlos un nmero arbitrario de veces: v -S y el nombre del servidor v -T y el nombre del servidor de destino v La modalidad de ejecucin. Para establecerla, siga el diagrama de segmento Establecimiento de la modalidad de ejecucin hasta escribir -f, escriba opcionalmente, d, p o bien a, y, a continuacin, escriba opcionalmente l o bien u.
Introduccin

El 1. 2. 3.

ix

5. Siga el diagrama hasta el elemento final.

Palabras clave y signos de puntuacin


Las palabras clave son palabras reservadas para las sentencias y todos los mandatos, excepto los mandatos de nivel del sistema. Cuando aparece una palabra clave en un diagrama de sintaxis, se muestra en letras maysculas. Cuando utilice una palabra clave en un mandato, puede escribirla en letras maysculas o minsculas, pero debe representar la palabra clave exactamente tal como aparezca en el diagrama de sintaxis. Tambin debe utilizar cualquier smbolo de puntuacin en las sentencias y mandatos exactamente tal como se muestre en los diagramas de sintaxis.

Identificadores y nombres
Las variables sirven de contenedores para los identificadores y nombres en los diagramas de sintaxis y ejemplos. Puede sustituir una variable por un nombre, identificador o literal arbitrario, segn el contexto. Las variables tambin se utilizan para representar elementos de sintaxis complejos que se amplan en diagramas de sintaxis adicionales. Cuando aparece una variable en un diagrama de sintaxis, ejemplo o texto, se muestra en cursiva en minsculas. En el diagrama de sintaxis siguiente se utilizan variables para ilustrar el formato general de una sentencia SELECT simple.
SELECT nombre_columna FROM nombre_tabla

Cuando escribe una sentencia SELECT de esta forma, debe sustituir las variables nombre_columna y nombre_tabla por el nombre de una columna y tabla determinadas.

IBM agradece sus comentarios


Deseamos conocer cualquier correccin o clarificacin que considere que pueda ser til en nuestros manuales, lo cual nos ayudar a mejorar las ediciones futuras. Incluya la informacin siguiente: v Nombre y versin de la publicacin que est utilizando v Apartado y nmero de pgina v Sus sugerencias sobre la publicacin Envenos sus comentarios a la siguiente direccin de correo electrnico: hojacom@es.ibm.com Esta direccin de correo electrnico est reservada para notificar errores y omisiones de nuestra documentacin. Para obtener ayuda inmediata para un problema tcnico, pngase en contacto con el Centro de soporte tcnico de IBM. Para obtener instrucciones, visite el sitio Web de Soporte tcnico de IBM Informix que se encuentra en http://www.ibm.com/planetwide/. Valoramos en gran medida sus sugerencias.

IBM Data Server Driver para JDBC y SQLJ para IDS

IBM Data Server Driver para JDBC y SQLJ para IDS


IBM Data Server Driver para JDBC y SQLJ, Versin 3.50 proporciona soporte a las aplicaciones cliente que se escriben en Java utilizando JDBC. El controlador, que est basado en el protocolo de Distributed Relational Database Architecture (DRDA), est asimismo integrado con DB2. Esta capacidad significa que las funciones comunes de IBM Data Server Driver para JDBC y SQLJ le permiten escribir aplicaciones clientes que puedan utilizar tanto servidores de datos IDS como DB2. IBM Informix Dynamic Server slo da soporte a la versin de tipo 4 de IBM Data Server Driver para JDBC y SQLJ, lo que significa que las sesiones se conectan directamente a la base de datos o servidor de datos, sin una capa intermedia. IBM Data Server Driver para JDBC y SQLJ satisface la especificacin de Sun Microsystems JDBC 3.0.

Restricciones de IBM Data Server Driver para JDBC y SQLJ para IDS
Antes de efectuar la instalacin y utilizar la IBM Data Server Driver para JDBC y SQLJ en IDS, debera tener en cuenta las restricciones siguientes: v Las conexiones deben estar basadas en DRDA; el protocolo patentado Informix no est soportado. v Requiere IBM Informix Dynamic Server, Versin 11.10. v SQLJ no est soportado para IBM Data Server Driver para JDBC y SQLJ en este release para IDS. v Las conexiones de tipo 2 no estn soportadas. Slo se da soporte a las conexiones de tipo 4. v Ciertos tipos de datos Informix no estn soportados: INTERVAL, tipos de datos opacos, tipos de datos definidos por el usuario y tipos de datos de recopilacin. IBM Data Server Driver para JDBC y SQLJ es diferente del controlador IBM Informix JDBC 3.10. Para obtener ms informacin, consulte el apartado Diferencias entre IBM Data Server Driver para JDBC y SQLJ y el IBM Informix JDBC Driver en la pgina 1-166.

Controladores soportados para JDBC y SQLJ


El producto IDS incluye soporte para un solo tipo de arquitectura de controlador JDBC. De acuerdo con la especificacin JDBC, existen cuatro tipos de arquitecturas de controlador JDBC: Tipo 1 Son controladores que implementan la API de JDBC como una correlacin con otra API de acceso a datos, como por ejemplo Open Database Connectivity (ODBC). Los controladores de este tipo generalmente dependen de una biblioteca nativa, lo cual limita su portabilidad. El sistema de bases de datos IDS no es compatible con el controlador de tipo 1.

Copyright IBM Corp. 2007

1-1

Tipo 2 Son controladores que estn escritos parcialmente en el lenguaje de programacin Java y parcialmente en cdigo nativo. Estos controladores utilizan una biblioteca cliente nativa que es especfica de la fuente de datos a la que se conectan. Debido al cdigo nativo, la portabilidad de estos controladores es limitada. Tipo 3 Son controladores que utilizan un cliente Java puro y se comunican con una base de datos utilizando un protocolo independiente de la base de datos. A continuacin, la base de datos transmite las peticiones del cliente a la fuente de datos. El sistema de bases de datos IDS no es compatible con un controlador de tipo 3. Tipo 4 Estos controladores son Java puro e implementan el protocolo de red de una fuente de datos determinada. El cliente se conecta directamente con la fuente de datos. IBM Informix Dynamic Server (IDS) es compatible con los controladores siguientes:
Nombre de controlador IBM Informix JDBC Driver IBM Data Server Driver para JDBC y SQLJ Tipo de controlador Tipo 4 Tipo 2 y Tipo 4

IBM Data Server Driver para JDBC y SQLJ (tipo 4)


El IBM Data Server Driver para JDBC y SQLJ es un controlador individual que incluye comportamiento propio de los tipos 2 y 4 de JDBC. Para las conexiones con bases de datos IDS, solamente est permitida la funcionalidad del tipo 4. La funcionalidad del controlador de tipo 4 de IBM Data Server Driver para JDBC y SQLJ se denomina IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4. El IBM Data Server Driver para JDBC y SQLJ es compatible con estas funciones de JDBC: v Todos los mtodos que se describen en las especificaciones de JDBC 3.0. Consulte Soporte de controlador para las API de JDBC. v Conexiones que estn habilitadas para la agrupacin de conexiones. WebSphere Application Server u otro servidor de aplicaciones realiza la agrupacin de conexiones. v Soporte para la gestin de transacciones distribuidas. Este soporte implementa las especificaciones Java 2 Platform, Enterprise Edition (J2EE) Java Transaction Service (JTS) y Java Transaction API (JTA), que se ajustan al estndar de X/Open para transacciones distribuidas (vea la publicacin Distributed Transaction Processing: The XA Specification en el sitio Web http://www.opengroup.org).

IBM Informix JDBC Driver (tipo 4)


IBM Informix JDBC Driver es un controlador Java puro, de protocolo nativo. nicamente IDS 11.10 da soporte a IBM Informix JDBC Driver 3.10. Consulte la publicacin IBM Informix JDBC Driver Programmers Guide para obtener ms informacin sobre IBM Informix JDBC Driver.

1-2

IBM Data Server Driver para JDBC y SQLJ para IDS

Instalacin de IBM Data Server Driver para JDBC y SQLJ


Despus de instalar IBM Data Server Driver para JDBC y SQLJ, podr compilar y ejecutar aplicaciones JDBC. Requisito de SDK: Antes de instalar IBM Data Server Driver para JDBC y SQLJ, debe tener un SDK para Java, 1.4.2 o posterior instalado en el sistema. Siga estos pasos para instalar IBM Data Server Driver para JDBC y SQLJ: 1. Descargue el archivo de controlador (db2_db2driver_for_jdbc_sqlj.zip) en: https://www14.software.ibm.com/webapp/iwm/web/ preLogin.do?lang=en_US&source=swg-informixfpd. 2. Extriga el archivo zip en un directorio vaco. El archivo zip contiene un archivo db2jcc.jar, un archivo db2jcc4.jar y un archivo sqlj.zip. Importante: IBM Informix Dynamic Server slo da soporte a db2jcc.jar, que es IBM Data Server Driver para JDBC y SQLJ, Versin 3.50. 3. Modifique la variable de entorno CLASSPATH para incluir el archivo db2jcc.jar: Importante: Incluya slo db2jcc.jar en CLASSPATH. No incluya db2jcc4.jar para las conexiones con IBM Informix Dynamic Server. v En Windows, para establecer la CLASSPATH para una sesin, en el indicador de mandatos escriba:
java -classpath <dir>\db2jcc.jar

Donde <dir> es la ubicacin del archivo db2jcc.jar. Para establecer permanentemente la variable de entorno CLASSPATH utilice el programa de utilidad del sistema en el panel de control. v En UNIX, para establecer la CLASSPATH para una sesin, en el indicador de mandatos escriba:
java -classpath <dir>/db2jcc.jar

Donde <dir> es la ubicacin del archivo db2jcc.jar. Para establecer permanentemente la variable de entorno CLASSPATH, pdale al administrador del sistema UNIX para actualizar el perfil. 4. Configure un nuevo alias de servidor en el archivo SQLHOSTS o el registro de Windows que utiliza el protocolo de conexiones drtlitcp o drsoctcp. Para obtener ms informacin, consulte el tema sobre Configuracin del servidor dinmico para las conexiones con IBM Data Server Clients (Configuring Dynamic Server for Connections to IBM Data Server Clients) en la IBM Informix Administrators Guide. 5. Personalice las propiedades de configuracin del controlador, si resultan inapropiados algunos de los valores por omisin. Consulte el apartado Personalizacin de propiedades de configuracin de IBM Data Server Driver para JDBC y SQLJ para ver detalles.

Personalizacin de propiedades de configuracin de IBM Data Server Driver para JDBC y SQLJ
Las propiedades de configuracin del IBM Data Server Driver para JDBC y SQLJ permiten establecer los valores de las propiedades que tienen un mbito a nivel de

IBM Data Server Driver para JDBC y SQLJ para IDS

1-3

controlador. Estos valores se aplican en las aplicaciones e instancias de DataSource. Puede cambiar los valores sin tener que cambiar el cdigo fuente de aplicacin ni las caractersticas de DataSource. Cada valor de propiedad de configuracin del IBM Data Server Driver para JDBC y SQLJ tiene este formato:
propiedad=valor

propiedad puede tener uno o varios de los formatos siguientes: v db2.jcc.override.nombre_propiedad v db2.jcc.nombre_propiedad v db2.jcc.default.nombre_propiedad Si la propiedad de configuracin comienza por db2.jcc.override, esta propiedad se aplica a todas las conexiones y prevalece sobre cualquier propiedad de Connection o DataSource con el mismo valor nombre_propiedad. Si la propiedad de configuracin comienza por db2.jcc o db2.jcc.default, el valor de la propiedad de configuracin es un valor por omisin. Los valores de las propiedades de Connection o DataSource prevalecen sobre ese valor. Puede establecer las propiedades de configuracin de estas formas: v Establezca las propiedades de configuracin como propiedades del sistema Java. Estos valores prevalecen sobre cualquier otro. En el caso de las aplicaciones Java autnomas, puede establecer las propiedades de configuracin como propiedades del sistema Java; para ello, especifique -Dpropiedad=valor para cada propiedad de configuracin cuando ejecute el mandato java. v Establezca las propiedades de configuracin en un recurso cuyo nombre se especifica en la propiedad del sistema Java db2.jcc.propertiesFile. Por ejemplo, puede especificar un nombre de va de acceso absoluta para el valor db2.jcc.propertiesFile. En el caso de las aplicaciones Java autnomas, puede establecer las propiedades de configuracin especificando la opcin -Ddb2.jcc.propertiesFile=va_acceso cuando ejecute el mandato java. v Establezca las propiedades de configuracin en un recurso denominado DB2JccConfiguration.properties. Se utiliza una bsqueda de recursos Java estndar para localizar DB2JccConfiguration.properties. El IBM Data Server Driver para JDBC y SQLJ busca este recurso solamente si no ha establecido la propiedad del sistema Java db2.jcc.propertiesFile. DB2JccConfiguration.properties puede ser un archivo autnomo o puede estar incluido en un archivo JAR. Si el archivo DB2JccConfiguration.properties tiene el esquema de codificacin ISO 8859-1 (Latin-1) o si tiene el esquema de codificacin Latin-1 con algunos caracteres Unicode (\udddd), no es necesario realizar la conversin de los caracteres para que el IBM Data Server Driver para JDBC y SQLJ pueda utilizar el archivo. Si el archivo DB2JccConfiguration.properties tiene algn otro esquema de codificacin, debe utilizar el conversor Java native2ascii para convertir el contenido a Latin-1 o Unicode. Si DB2JccConfiguration.properties es un archivo autnomo, la va de acceso de DB2JccConfiguration.properties debe estar en la concatenacin CLASSPATH. Si DB2JccConfiguration.properties est en un archivo JAR, el archivo JAR debe estar en la concatenacin CLASSPATH.

1-4

IBM Data Server Driver para JDBC y SQLJ para IDS

Programacin de aplicaciones JDBC


La escritura de una aplicacin JDBC tiene mucho en comn con la escritura de una aplicacin SQL en cualquier otro lenguaje. En general, es necesario que realice las acciones siguientes: v Acceda a los paquetes de Java donde residen los mtodos JDBC. v Declare variables para enviar datos a tablas de IDS o recuperar datos de ellas. v Conecte con una fuente de datos. v Ejecute sentencias de SQL. v Trate los errores y avisos de SQL. v Desconecte de la fuente de datos. Aunque las tareas que necesita realizar son similares a las que se ejecutan en otros lenguajes, la forma de ejecutarlas es algo diferente.

Ejemplo de una aplicacin JDBC simple


Aplicacin JDBC simple que muestra los elementos bsicos que es necesario incluir en una aplicacin JDBC.

Figura 1-1. Aplicacin JDBC sencilla import java.sql.*; public class EzJava { public static void main(String[] args) { String urlPrefix = "jdbc:ids:"; String url; String empNo; Connection con; Statement stmt; ResultSet rs; System.out.println ("**** Especificar clase EzJava"); // // // // // // // // if { Comprobar que el primer argumento tenga el formato correcto para la parte del URL jdbc:ids:, tal como se describe en el tema Conexin a una fuente de datos utilizando la interfaz DriverManager con IBM Data Server Driver para JDBC y SQLJ. Por ejemplo, para la conectividad de tipo 4 de IBM Data Server Driver para JDBC y SQLJ, args[0] podra ser myhost:9999/idsdb. (args.length==0) System.err.println ("Valor no vlido. Primer argumento aadido a "+ "jdbc:ids: debe especificar un URL vlido."); System.exit(1); } url = urlPrefix + args[0]; try { // Cargar el controlador Class.forName("com.ibm.db2.jcc.DB2Driver"); System.out.println("**** Controlador JDBC cargado"); 1

3a

IBM Data Server Driver para JDBC y SQLJ para IDS

1-5

// Crear conexin utilizando IBM Data Server Driver para JDBC y SQLJ con = DriverManager.getConnection (url); 3b // Confirmar los cambios manualmente con.setAutoCommit(false); System.out.println("**** Creada una conexin JDBC con la fuente de datos"); // Crear el objeto Statement stmt = con.createStatement(); System.out.println("**** Creado el objeto Statement de JDBC"); 4a

// Ejecutar una consulta y generar instancia del conjunto de resultados rs = stmt.executeQuery("SELECT EMPNO FROM EMPLOYEE"); 4b System.out.println("**** Creado el objeto JDBC ResultSet"); // Imprimir todos los nmeros de empleado en el dispositivo de salida estndar while (rs.next()) { empNo = rs.getString(1); System.out.println("Nmero de empleado = " + empNo); } System.out.println("**** Buscadas todas las filas del conjunto de resultados de JDBC"); // Cerrar el conjunto de resultados rs.close(); System.out.println("**** Cerrado el conjunto de resultados de JDBC"); // Cerrar el objeto Statement stmt.close(); System.out.println("**** Cerrado el objeto Statement de JDBC"); // La conexin debe estar en un lmite de unidad de trabajo para permitir el cierre con.commit(); System.out.println ( "**** Transaccin confirmada" ); // Cierre la conexin con.close(); System.out.println("**** Desconectado de la fuente de datos"); 6

System.out.println("**** Salida de JDBC de la clase EzJava - sin errores"); } catch (ClassNotFoundException e) { System.err.println("No se pudo cargar el controlador JDBC"); System.out.println("Exception: " + e); e.printStackTrace(); } catch(SQLException ex) { System.err.println("Informacin sobre SQLException"); while(ex!=null) { System.err.println ("Mensaje de error: " + ex.getMessage()); System.err.println ("SQLSTATE: " + ex.getSQLState()); System.err.println ("Cdigo de error: " + ex.getErrorCode()); ex.printStackTrace(); ex = ex.getNextException(); // Para controladores que soportan // excepciones encadenadas } } } // Fin main } // Fin EzJava 5

1-6

IBM Data Server Driver para JDBC y SQLJ para IDS

Nota para la Figura 1-1 en la pgina 1-5:


Nota 1 Descripcin Esta sentencia importa el paquete java.sql, el cual contiene la API bsica de JDBC. Para obtener informacin sobre otros paquetes Java que puede ser necesario acceder, consulte Paquetes Java para soporte de JDBC. La variable empNo de tipo String realiza la funcin de una variable del lenguaje principal. Es decir, se utiliza para contener datos obtenidos en una consulta de SQL. Consulte Variables en aplicaciones JDBC para obtener ms informacin. Estos dos conjuntos de sentencias muestran cmo conectar con una fuente de datos utilizando una de dos interfaces disponibles. Consulte Cmo las aplicaciones JDBC conectan con una fuente de datos para conocer ms detalles. Estos dos conjuntos de sentencias muestran cmo ejecutar una operacin SELECT en JDBC. Para obtener informacin sobre cmo realizar otras operaciones de SQL, consulte Interfaces de JDBC para ejecutar SQL. Este bloque try/catch muestra el uso de la clase SQLException para el manejo de errores de SQL. Para obtener ms informacin sobre el manejo de errores de SQL, consulte Manejo de una excepcin de SQL cuando se utiliza IBM Data Server Driver para JDBC y SQLJ. Para obtener informacin sobre el manejo de avisos de SQL, consulte Manejo de un aviso de SQL cuando se utiliza IBM Data Server Driver para JDBC y SQLJ. Esta sentencia desconecta la aplicacin respecto de la fuente de datos. Consulte Desconexin de fuente de datos en aplicaciones JDBC.

3a y 3b

4a y 4b

Conexin de las aplicaciones JDBC a una fuente de datos


Para poder ejecutar sentencias de SQL en un programa SQL cualquiera, debe estar conectado con una fuente de datos. El IBM Data Server Driver para JDBC y SQLJ es compatible con la conectividad de tipo 2 y tipo 4. Las conexiones con bases de datos DB2 pueden utilizar conectividad de tipo 2 o tipo 4. Las conexiones con bases de datos IBM Informix Dynamic Server (IDS) pueden utilizar conectividad de tipo 4. La figura siguiente muestra cmo una aplicacin Java se conecta a una fuente de datos mediante IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-7

Figura 1-2. Flujo de una aplicacin Java para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4

Conexin con una fuente de datos utilizando la interfaz DriverManager con IBM Data Server Driver para JDBC y SQLJ
Una aplicacin JDBC puede establecer una conexin con una fuente de datos utilizando la interfaz DriverManager de JDBC, la cual forma parte del paquete java.sql. Estos son los pasos para establecer una conexin: 1. Cargue el controlador JDBC invocando el mtodo Class.forName. Para IBM Data Server Driver para JDBC y SQLJ, el controlador se carga invocando el mtodo Class.forName con este argumento:
com.ibm.db2.jcc.DB2Driver

El cdigo de programa siguiente muestra la carga del IBM Data Server Driver para JDBC y SQLJ:
try { // Cargar IBM Data Server Driver para JDBC y SQLJ mediante DriverManager Class.forName("com.ibm.db2.jcc.DB2Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); }

El bloque catch se utiliza para imprimir un error si se no se encuentra el controlador. 2. Conecte con una fuente de datos invocando el mtodo DriverManager.getConnection. Puede utilizar uno de los formatos siguientes de getConnection:

1-8

IBM Data Server Driver para JDBC y SQLJ para IDS

getConnection(String url); getConnection(String url, usuario, contrasea); getConnection(String url, java.util.Properties info);

Para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4, el mtodo getConnection debe especificar un ID de usuario y una contrasea mediante parmetros o valores de propiedad. El argumento url representa una fuente de datos e indica el tipo de conectividad JDBC que se est utilizando. El argumento info es un objeto de tipo java.util.Properties que contiene un conjunto de propiedades de controlador correspondientes a la conexin. Especificar el argumento info es una alternativa a especificar series de caracteres propiedad=valor; en el URL. Consulte Propiedades de IBM Data Server Driver para JDBC y SQLJ para conocer las propiedades que puede especificar. Existen varias maneras de especificar un ID de usuario y una contrasea para una conexin: v Utilice la modalidad del mtodo getConnection donde se especifica el url con clusulas propiedad=valor;, e incluya las propiedades correspondientes al usuario y la contrasea en el URL. v Utilice el formato del mtodo getConnection en el que se especifica el usuario y la contrasea. v Utilice la modalidad del mtodo getConnection donde se especifica info, despus de establecer la propiedades correspondientes al usuario y la contrasea en un objeto java.util.Properties. Ejemplo: establecimiento de una conexin y especificacin del ID de usuario y la contrasea en un URL:
String url = "jdbc:ids://myhost:5021/mydb:" + "user=dbadm;password=dbadm;"; // Definir URL para fuente de datos Connection con = DriverManager.getConnection(url); // Crear conexin

Ejemplo: establecimiento de una conexin y especificacin del ID de usuario y la contrasea en parmetros de usuario y contrasea:
String url = "jdbc:ids://myhost:5021/mydb"; // Definir URL para fuente de datos String user = "dbadm"; String password="dbadm"; Connection con = DriverManager.getConnection(url, user, password); // Crear conexin

Ejemplo: establecimiento de una conexin y especificacin del ID de usuario y la contrasea en un objeto java.util.Properties:
Properties properties = new Properties(); // Crear objeto Properties properties.put("user", "dbadm"); // Definir ID de usuario para la conexin properties.put("password", "dbadm"); // Definir contrasea para la conexin String url = "jdbc:ids://myhost:5021/mydb"; // Definir URL para fuente de datos Connection con = DriverManager.getConnection(url, properties); // Crear conexin

Formato del URL para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4:

IBM Data Server Driver para JDBC y SQLJ para IDS

1-9

Si est utilizando la conectividad de tipo 4 en su aplicacin JDBC y crea una conexin mediante la interfaz DriverManager, debe especificar un URL en la llamada a DriverManager.getConnection que indique el uso de la conectividad de tipo 4. IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4Sintaxis del URL
jdbc:db2: jdbc:db2j:net: jdbc:ids: // servidor : puerto : propiedad = valor ; / basedatos

IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4Descripciones de las opciones para el URL Los elementos del URL tienen los significados siguientes: jdbc:db2: o jdbc:db2j:net: El significado de la porcin inicial del URL es el siguiente: jdbc:db2: Indica que la conexin es con un servidor DB2 para z/OS, DB2 Database para Linux, UNIX y Windows. Tambin se puede utilizar jdbc:db2: para conexin con una base de datos IBM Informix Dynamic Server (IDS), para permitir la portabilidad de aplicaciones. jdbc:db2j:net: Indica que la conexin es con un servidor IBM Cloudscape remoto. jdbc:ids: Indica que la conexin es con una fuente de datos IDS. jdbc:informix-sqli: tambin indica que la conexin es con una fuente de datos IDS, sin embargo, se debera utilizar jdbc:ids: servidor Nombre de dominio o direccin IP de la fuente de datos. puerto Nmero de puerto del servidor TCP/IP que est asignado a la fuente de datos. Es un valor entero comprendido entre 0 y 65535. Hay que especificar un valor para el puerto. basedatos Nombre de la fuente de datos. v Si la conexin es con un servidor DB2 para z/OS, basedatos es el nombre de ubicacin de DB2 que se define durante la instalacin. Todos los caracteres del nombre de ubicacin de DB2 deben estar en maysculas. El IBM Data Server Driver para JDBC y SQLJ no convierte en maysculas para el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4 los caracteres de la base de datos que estn en minsculas. Puede determinar el nombre de ubicacin ejecutando la sentencia de SQL siguiente en el servidor:
SELECT CURRENT SERVER FROM SYSIBM.SYSDUMMY1;

v Si la conexin es con un servidor DB2 para z/OS, todos los caracteres de la basedatos deben estar en maysculas.

1-10

IBM Data Server Driver para JDBC y SQLJ para IDS

v Si la conexin es con un servidor DB2 Database para Linux, UNIX y Windows, basedatos es el nombre de la base de datos que se define durante la instalacin. v Si la conexin es con un servidor IDS, basedatos es el nombre de la base de datos. El nombre no es sensible a las maysculas y las minsculas. El servidor convierte el nombre a minsculas. v Si la conexin es con un servidor IBM Cloudscape, basedatos es el nombre totalmente calificado del archivo donde reside la base de datos. Este nombre se debe incluir entre comillas dobles (). Por ejemplo:
"c:/basedatos/testdb"

propiedad=valor; Propiedad y su valor para la conexin JDBC. Puede especificar uno o ms pares propiedad-valor. Cada par propiedad-valor, incluido el ltimo, debe terminar con un signo de punto y coma (;). No incluye espacios en blanco dentro de la lista de pares propiedad-valor. Algunas propiedades con un tipo de datos int tienen valores de campo constante predefinidos. Hay que resolver los valores de campo constante predefinidos con sus valores enteros antes de utilizar dichos valores en el parmetro url. Por ejemplo, no se puede utilizar com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL en un parmetro url. Sin embargo, se puede crear una serie URL que incluya com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL, y asignar la serie URL a una variable String. A continuacin, se puede utilizar la variable String en el parmetro url.
String url = "jdbc:ids://sysmvs1.stl.ibm.com:5021" + "user=dbadm;password=dbadm;" + "traceLevel=" + (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL) + ";"; Connection con = java.sql.DriverManager.getConnection(url);

Conexin con una fuente de datos mediante la interfaz DataSource


Si es necesario que sus aplicaciones se puedan migrar de una fuente de datos a otra, debe utilizar la interfaz DataSource. El uso de DriverManager para conectar con una fuente de datos reduce la portabilidad, pues la aplicacin debe identificar un nombre de clase y URL determinados para el controlador JDBC. El nombre de clase y el URL del controlador son especficos de un proveedor de JDBC, de la implementacin del controlador y de la fuente de datos. Cuando se conecta a una fuente de datos utilizando la interfaz DataSource, utiliza un objeto DataSource. La forma ms sencilla de utilizar un objeto DataSource es crear y utilizar el objeto en la misma aplicacin, tal como hace en la interfaz DriverManager. Sin embargo, este mtodo no proporciona portabilidad. La mejor forma de utilizar un objeto DataSource es que el administrador del sistema cree y gestione el objeto por separado, utilizando WebSphere Application Server o alguna otra herramienta. El programa por el que se crea y gestiona un objeto DataSource tambin utiliza Java Naming and Directory Interface (JNDI) para asignar un nombre lgico al objeto DataSource. La aplicacin JDBC que hace uso
IBM Data Server Driver para JDBC y SQLJ para IDS

1-11

del objeto DataSource puede luego referirse al objeto utilizando su nombre lgico, y no necesita ninguna informacin sobre la fuente de datos subyacente. Adems, el administrador del sistema puede modificar los atributos de la fuente de datos y el usuario no necesita cambiar su programa de aplicacin. Para obtener ms informacin sobre cmo utilizar WebSphere para desplegar objetos DataSource, dirjase al URL siguiente de la Web:
http://www.ibm.com/software/webservers/appserv/

Para conocer cmo desplegar objetos DataSource por s mismo, consulte Creacin y despliegue de objetos DataSource. Puede utilizar la interfaz DataSource y la interfaz DriverManager en la misma aplicacin, pero para lograr una portabilidad mxima es recomendable que utilice solo la interfaz DataSource para obtener conexiones. Para obtener una conexin utilizando un objeto DataSource que cre el administrador del sistema y al que ste asign un nombre lgico, siga estos pasos: 1. Consulte al administrador del sistema para obtener lgico de la fuente de datos con la que desee conectar. 2. Cree un objeto Context para utilizarlo en el paso siguiente. La interfaz Context forma parte de Java Naming and Directory Interface (JNDI) y no de JDBC. 3. En su programa de aplicacin, utilice JNDI para obtener el objeto DataSource que est asociado al nombre lgico de la fuente de datos. 4. Utilice el mtodo DataSource.getConnection para obtener la conexin. Puede utilizar uno de los formatos siguientes del mtodo getConnection:
getConnection(); getConnection(String usuario, String contrasea);

Utilice la segunda forma si necesita especificar un ID de usuario y una contrasea para la conexin que sean diferentes de los que se especificaron al desplegar el objeto DataSource. Ejemplo de obtencin de una conexin utilizando un objeto DataSource que fue creado por el administrador del sistema: en este ejemplo, el nombre lgico de la fuente de datos con la que desea conectar es jdbc/sampledb. Los nmeros situados a la derecha de determinadas sentencias corresponden a pasos descritos anteriormente.
import java.sql.*; import javax.naming.*; import javax.sql.*; ... Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("jdbc/sampledb"); Connection con=ds.getConnection();

2 3 4

Figura 1-3. Obtencin de una conexin utilizando un objeto DataSource

Ejemplo de creacin y utilizacin de un objeto DataSource en la misma aplicacin:


Figura 1-4. Creacin y utilizacin de un objeto DataSource en la misma aplicacin import java.sql.*; // Base JDBC import javax.sql.*; // Mtodos para JDBC import com.ibm.db2.jcc.*; // Interfaces de IBM Data Server Driver // para JDBC y SQLJ DB2SimpleDataSource dbds=new DB2SimpleDataSource();

1 2

1-12

IBM Data Server Driver para JDBC y SQLJ para IDS

dbds.setDatabaseName("dbloc1"); // Asignar el nombre de ubicacin dbds.setDescription("Our Sample Database"); // Descripcin de la documentacin dbds.setUser("john"); // Asignar el ID de usuario dbds.setPassword("dbadm"); // Asignar la contrasea Connection con=dbds.getConnection(); // Crear un objeto Connection Nota 1 2

Descripcin Importa el paquete donde reside la implementacin de la interfaz DataSource. Crea un objeto DB2SimpleDataSource. DB2SimpleDataSource es una de las implementaciones para IBM Data Server Driver para JDBC y SQLJ de la interfaz DataSource. Consulte Creacin y despliegue de objetos DataSource para obtener informacin sobre las implementaciones de DataSource de DB2. Los mtodos setDatabaseName, setDescription, setUser y setPassword asignan atributos al objeto DB2SimpleDataSource. Consulte Propiedades del IBM Data Server Driver para JDBC y SQLJ para conocer los atributos que puede definir para un objeto DB2SimpleDataSource cuando se utiliza el IBM Data Server Driver para JDBC y SQLJ. Establece una conexin con la fuente de datos representada por el objeto DB2SimpleDataSource.

Objetos de conexin JDBC


Cuando se conecta a una fuente de datos mediante cualquiera de los dos mtodos de conexin, crea un objeto Connection, que representa la conexin con la fuente de datos. Utilice este objeto Connection para realizar lo siguiente: v Crear objetos Statement, PreparedStatement, y CallableStatement para ejecutar sentencias de SQL. Este tema se trata en Ejecucin de sentencias de SQL en aplicaciones JDBC. v Reunir informacin sobre la fuente de datos a la que est conectado. Este proceso se describe en Conocer sobre una fuente de datos utilizando mtodos DatabaseMetaData. v Confirmar o retrotraer transacciones. Puede confirmar transacciones de forma manual o automtica. Estas operaciones se describen en Confirmar o retrotraer una transaccin JDBC. v Cerrar la conexin con la fuente de datos. Esta operacin se describe en Desconexin de fuentes de datos en aplicaciones JDBC.

Creacin y despliegue de objetos DataSource


A partir de la versin 2.0, JDBC proporciona la interfaz DataSource para conectar con una fuente de datos. La utilizacin de la interfaz DataSource es la forma preferida de conectar con una fuente de datos. La utilizacin de la interfaz DataSource comprende dos etapas: v Crear y desplegar objetos DataSource. Normalmente, esto lo hace un administrador del sistema utilizando una herramienta como WebSphere Application Server. v Utilizar objetos DataSource para crear una conexin. Esto se realiza en el programa de aplicacin. Este tema contiene informacin necesaria para que el propio usuario pueda crear y desplegar objetos DataSource.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-13

IBM Data Server Driver para JDBC y SQLJ proporciona las siguientes implementaciones de DataSource: v com.ibm.db2.jcc.DB2SimpleDataSource, que no es compatible con la agrupacin de conexiones. v com.ibm.db2.jcc.DB2ConnectionPoolDataSource, que es compatible con la agrupacin de conexiones. v com.ibm.db2.jcc.DB2XADataSource, que da soporte a la agrupacin de conexiones y a las transacciones distribuidas. La agrupacin de conexiones es proporcionada por WebSphere Application Server u otro servidor de aplicaciones. Cuando crea y despliega un objeto DataSource, debe efectuar estas tareas: 1. Crear una instancia de la implementacin de DataSource apropiada. 2. Establecer las propiedades del objeto DataSource. 3. Registrar el objeto en el servicio de denominacin de Java Naming and Directory Interface (JNDI). El ejemplo siguiente muestra cmo realizar estas tareas.
import import import import java.sql.*; // Base JDBC javax.naming.*; // Servicios de denominacin de JNDI javax.sql.*; // Mtodos adicionales para JDBC com.ibm.db2.jcc.*; // Implementacin de IBM Data // Server para JDBC y SQLJ // de APIs de extensin // estndar de JDBC 1 2

DB2SimpleDataSource dbds = new com.ibm.db2.jcc.DB2SimpleDataSource(); dbds.setDatabaseName("db2loc1"); dbds.setDescription("Our Sample Database"); dbds.setUser("john"); dbds.setPassword("mypw"); ... Context ctx=new InitialContext(); Ctx.bind("jdbc/sampledb",dbds); Figura 1-5. Ejemplo de creacin y despliegue de un objeto DataSource Nota 1 2 3 4

3 4

Descripcin Crea una instancia de la clase DB2SimpleDataSource. Esta sentencia y las tres sentencias siguientes definen valores para propiedades del objeto DB2SimpleDataSource. Crea un contexto para su utilizacin por JNDI. Asocia el objeto dbds de DBSimple2DataSource con el nombre lgico jdbc/sampledb. Una aplicacin que haga uso de este objeto puede hacer referencia a l utilizando el nombre jdbc/sampledb.

Paquetes Java para el soporte JDBC


Para invocar mtodos de JDBC necesita poder acceder a todos los paquetes Java (o parte de ellos) donde residen estos mtodos. Puede hacerlo importando los paquetes o clases especficas, o bien utilizando los nombres de clase totalmente calificados. Puede necesitar los paquetes o clases siguientes para su programa de JDBC:

1-14

IBM Data Server Driver para JDBC y SQLJ para IDS

java.sql Contiene la API bsica de JDBC. javax.naming Contiene clases e interfaces para Java Naming and Directory Interface (JNDI), que se suele utilizar para implementar una DataSource (fuente de datos). javax.sql Contiene mtodos para producir aplicaciones de servidor mediante Java javax.transaction Contiene soporte de JDBC para transacciones distribuidas para el controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows (controlador JDBC de DB2 de tipo 2). com.ibm.db2.jcc Contiene la implementacin de JDBC para IBM Data Server Driver para JDBC y SQLJ. COM.ibm.db2.jdbc Contiene la implementacin del controlador JDBC de DB2 de tipo 2.

Obtencin de informacin acerca de una fuente de datos mediante mtodos DatabaseMetaData


La interfaz DatabaseMetaData contiene mtodos para recuperar informacin sobre una fuente de datos. Estos mtodos son tiles cuando escribe aplicaciones genricas que pueden acceder a diversas fuentes de datos. En las aplicaciones genricas que pueden acceder a diversas fuentes de datos, debe comprobar si una fuente de datos puede manejar diversas operaciones de base de datos antes de ejecutarlas. Por ejemplo, debe determinar si el controlador de una fuente de datos se encuentra en el nivel JDBC 3.0 antes de invocar mtodos JDBC 3.0 para ese controlador. Los mtodos de DatabaseMetaData proporcionan los tipos de informacin siguientes: v Caractersticas soportadas por la fuente de datos, tales como el nivel SQL de ANSI v Informacin especfica sobre el controlador JDBC, tal como el nivel del controlador v Lmites, tales como el nmero mximo de columnas que puede tener un ndice v Indicacin de si la fuente de datos soporta sentencias de definicin de datos (CREATE, ALTER, DROP, GRANT, REVOKE) v Lista de objetos contenidos en la fuente de datos, tales como tablas, ndices o procedimientos v Indicacin de si la fuente de datos soporta diversas funciones JDBC, tales como las actualizaciones por lotes o los conjuntos de resultados desplazables ResultSet v Lista de funciones escalares soportadas por el controlador Para los sistemas IDS, puede tambin ser necesario: v Indicacin de si la base de datos es compatible con ANSI v Indicacin de si la base de datos es compatible con el registro cronolgico Para obtener esta informacin, utilice los mtodos DB2DatabaseMetaData.isIDSDatabaseAnsiCompliant y DB2DatabaseMetaData.isIDSDatabaseLogging especficos de IBM Data Server Driver para JDBC y SQLJ.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-15

Para invocar mtodos DatabaseMetaData, siga estos pasos bsicos: 1. Cree un objeto DatabaseMetaData invocando el mtodo getMetaData para la conexin. 2. Invoque mtodos de DatabaseMetaData para obtener informacin sobre la fuente de datos. 3. Si el mtodo devuelve un conjunto de resultados: a. En un bucle, posicione el cursor utilizando el mtodo next y recupere datos de cada columna de la fila actual del objeto ResultSet utilizando mtodos getXXX. b. Invoque el mtodo close para cerrar el objeto ResultSet. Ejemplo: el cdigo de programa siguiente muestra cmo utilizar mtodos DatabaseMetaData para determinar la versin del controlador, obtener una lista de los procedimientos almacenados existentes en la fuente de datos, y obtener una lista de funciones de fecha y hora compatibles con el controlador. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
Figura 1-6. Uso de mtodos DatabaseMetaData para obtener informacin sobre una fuente de datos Connection con; DatabaseMetaData dbmtadta; ResultSet rs; int mtadtaint; String procSchema; String procName; String dtfnList; ... dbmtadta = con.getMetaData(); // Crear el objeto DatabaseMetaData 1 mtadtaint = dmtadta.getDriverVersion(); 2 // Comprobar la versin del controlador System.out.println("Versin de controlador: " + mtadtaint); rs = dbmtadta.getProcedures(null, null, "%"); // Obtener informacin de todos los procedimientos while (rs.next()) { // Situar el cursor 3a procSchema = rs.getString("PROCEDURE_SCHEM"); // Obtener el esquema del procedimiento procName = rs.getString("PROCEDURE_NAME"); // Obtener el nombre del procedimiento System.out.println(procSchema + "." + procName); // Imprimir nombre de procedimiento calificado } dtfnList = dbmtadta.getTimeDateFunctions(); // Obtener lista de las funciones // de fecha y hora permitidas System.out.println("Funciones de fecha y hora soportadas:"); System.out.println(dtfnList); // Imprimir la lista de las funciones // de fecha y hora rs.close(); // Cerrar el conjunto de resultados 3b

Ejemplo: el cdigo de programa siguiente muestra cmo utilizar mtodos DB2DatabaseMetaData para determinar si una base de datos IDS es compatible con ANSI y permite el registro cronolgico.
com.ibm.db2.jcc.DB2Connection db2c = (com.ibm.db2.jcc.DB2Connection) c; // // // // dbmd c es el objeto java.sql.Connection existente que es necesario convertir en un objeto DB2Connection para que se puedan utilizar mtodos DB2DatabaseMetaData sobre el objeto. =

com.ibm.db2.jcc.DB2DatabaseMetaData

1-16

IBM Data Server Driver para JDBC y SQLJ para IDS

(com.ibm.db2.jcc.DB2DatabaseMetaData) db2c.getMetaData(); // Recuperar el objeto DB2DatabaseMetaData. if (dbmd.isIDSDatabaseLogging ()) // Comprobar si la base de datos permite el // registro cronolgico. En caso afirmativo, // puede realizar una operacin commit. c.createStatement.executeUpdate("commit"); if (dbmd.isIDSDatabaseAnsiCompliant()) // Comprobar si la base de datos // es compatible con ANSI. System.out.println("La base de datos IDS actual es compatible con ANSI...");

Variables en aplicaciones JDBC


Al igual que en cualquier otra aplicacin Java, cuando escribe aplicaciones JDBC, debe declarar variables. En las aplicaciones Java, esas variables se conocen como identificadores Java. Algunos de estos identificadores tienen la misma funcin que las variables de lenguaje principal tienen en otros lenguajes: contienen datos que se pasan a tablas de base de datos o que se reciben de ellas. En el cdigo de programa siguiente, el identificador empNo contiene los datos recuperados de la columna de tabla EMPNO, cuyo tipo de datos es CHAR.
String empNo; // Ejecutar una consulta y generar instancia del conjunto de resultados rs = stmt.executeQuery("SELECT EMPNO FROM EMPLOYEE"); while (rs.next()) { String empNo = rs.getString(1); System.out.println("Nmero de empleado = " + empNo); }

Su eleccin de tipos de datos Java puede afectar al rendimiento, pues IDS selecciona mejores vas de acceso cuando los tipos de datos de las variables Java se corresponden estrechamente con los tipos de datos IDS.

Interfaces JDBC para ejecutar SQL


Puede ejecutar sentencias de SQL dentro de un programa SQL tpico para insertar, actualizar, suprimir o fusionar datos de tablas, recuperar datos de tablas o llamar procedimientos almacenados. Para ejecutar las mismas funciones en un programa JDBC, debe invocar mtodos. Esos mtodos estn definidos en las interfaces siguientes: v La interfaz Statement soporta la ejecucin de todas las sentencias de SQL. Las interfaces siguientes heredan mtodos de la interfaz Statement: La interfaz PreparedStatement soporta cualquier sentencia de SQL que contenga marcadores de parmetros de entrada. Los marcadores de parmetros representan variables de entrada. La interfaz PreparedStatement tambin se puede utilizar para sentencias de SQL sin marcadores de parmetros. Con el IBM Data Server Driver para JDBC y SQLJ, la interfaz PreparedStatement permite invocar procedimientos almacenados que tienen parmetros de entrada y ningn parmetro de salida, y que no devuelven ningn conjunto de resultados. Sin embargo, la interfaz preferida es CallableStatement. La interfaz CallableStatement soporta la invocacin de un procedimiento almacenado. La interfaz CallableStatement permite invocar procedimientos almacenados con parmetros de entrada, parmetros de salida, con ambas clases de parmetros o sin parmetros. Con el IBM Data Server Driver para JDBC y
IBM Data Server Driver para JDBC y SQLJ para IDS

1-17

SQLJ, tambin se puede utilizar la interfaz Statement para llamar a procedimientos almacenados, pero stos no deben tener parmetros. v La interfaz ResultSet proporciona acceso a los resultados generados por una consulta. La interfaz ResultSet tiene la misma finalidad que el cursor utilizado en las aplicaciones de SQL para otros lenguajes de programacin.

Creacin y modificacin de objetos de base de datos utilizando el mtodo Statement.executeUpdate


El mtodo Statement.executeUpdate es uno de los mtodos JDBC que puede utilizar para actualizar tablas e invocar procedimientos almacenados. Puede utilizar el mtodo Statement.executeUpdate para realizar las acciones siguientes: v Ejecutar sentencias de definicin de datos, tales como CREATE, ALTER, DROP, GRANT y REVOKE v Ejecutar sentencias INSERT, UPDATE, DELETE, y MERGE que no contienen marcadores de parmetros v Con el IBM Data Server Driver para JDBC y SQLJ, ejecutar la sentencia CALL para invocar procedimientos almacenados que carecen de parmetros y no devuelven conjuntos de resultados. Para ejecutar esas sentencias de SQL, debe seguir estos pasos: 1. Invoque el mtodo Connection.createStatement para crear un objeto Statement. 2. Invoque el mtodo Statement.executeUpdate para ejecutar la operacin de SQL. 3. Invoque el mtodo Statement.close para cerrar el objeto Statement. Suponga que desea ejecutar esta sentencia de SQL:
UPDATE EMPLOYEE SET PHONENO=4657 WHERE EMPNO=000010

El cdigo siguiente crea el objeto Statement denominado stmt, ejecuta la sentencia UPDATE y devuelve en numUpd el nmero de filas que fueron actualizadas. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
Connection con; Statement stmt; int numUpd; ... stmt = con.createStatement(); // Crear un objeto Statement numUpd = stmt.executeUpdate( "UPDATE EMPLOYEE SET PHONENO=4657 WHERE EMPNO=000010"); // Ejecutar la actualizacin stmt.close(); // Cerrar el objeto Statement Figura 1-7. Utilizacin de Statement.executeUpdate

1 2 3

Actualizacin de datos de tablas utilizando el mtodo PreparedStatement.executeUpdate


El mtodo Statement.executeUpdate es efectivo si actualiza tablas IDS con valores constantes. Sin embargo, las actualizaciones a menudo suponen pasar a tablas IDS valores contenidos en variables. Para hacer esto, utilice el mtodo PreparedStatement.executeUpdate. Con el IBM Data Server Driver para JDBC y SQLJ, puede tambin utilizar PreparedStatement.executeUpdate para invocar procedimientos almacenados que tienen parmetros de entrada y ningn parmetro de salida, y que no devuelven ningn conjunto de resultados.

1-18

IBM Data Server Driver para JDBC y SQLJ para IDS

DB2 para z/OS no es compatible con la ejecucin dinmica de la sentencia CALL. Para las llamadas a procedimientos almacenados que residen en fuentes de datos DB2 para z/OS, los parmetros pueden ser marcadores de parmetros o literales, pero no expresiones. Se pueden utilizar los tipos de literales siguientes: v Integer v Double v Decimal v Character v Hexadecimal v Graphic Para las llamadas a procedimientos almacenados que residen en fuentes de datos IBM Informix Dynamic Server, el objeto PreparedStatement puede ser una sentencia CALL o una sentencia EXECUTE PROCEDURE. Cuando ejecuta una sentencia de SQL muchas veces, puede obtener un mejor rendimiento creando la sentencia de SQL en forma de objeto PreparedStatement. Por ejemplo, la siguiente sentencia UPDATE permite actualizar la tabla de empleados (EMPLOYEE) solamente para un nico nmero de telfono y nmero de empleado:
UPDATE EMPLOYEE SET PHONENO=4657 WHERE EMPNO=000010

Suponga que desea generalizar la operacin para poder actualizar la tabla de empleados para un conjunto cualquiera de nmeros de telfono y nmeros de empleado. Para ello es necesario que sustituya los valores constantes del nmero de telfono y nmero de empleado por variables:
UPDATE EMPLOYEE SET PHONENO=? WHERE EMPNO=?

Las variables de esta clase se denominan marcadores de parmetros. Para ejecutar una sentencia de SQL con marcadores de parmetros, debe seguir estos pasos: 1. Invoque el mtodo Connection.prepareStatement para crear un objeto PreparedStatement. 2. Invoque mtodos PreparedStatement.setXXX para pasar valores a las variables. 3. Invoque el mtodo PreparedStatement.executeUpdate para actualizar la tabla con los valores variables. 4. Invoque el mtodo PreparedStatement.close para cerrar el objeto PreparedStatement cuando termine de utilizar ese objeto. El cdigo siguiente ejecuta los pasos anteriores para actualizar el nmero de telfono 4657 del empleado cuyo nmero de empleado es 000010. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-19

Connection con; PreparedStatement pstmt; int numUpd; ... pstmt = con.prepareStatement( "UPDATE EMPLOYEE SET PHONENO=? WHERE EMPNO=?"); // Crear un objeto PreparedStatement 1 pstmt.setString(1,"4657"); // Asignar primer valor a primer parmetro 2 pstmt.setString(2,"000010"); // Asignar primer valor a segundo parmetro numUpd = pstmt.executeUpdate(); // Realizar primera actualizacin 3 pstmt.setString(1,"4658"); // Asignar segundo valor a primer parmetro pstmt.setString(2,"000020"); // Asignar segundo valor a segundo parmetro numUpd = pstmt.executeUpdate(); // Ejecutar segunda actualizacin pstmt.close(); // Cerrar el objeto PreparedStatement 4 Figura 1-8. Uso de PreparedStatement.executeUpdate para una sentencia de SQL con marcadores de parmetros

Puede tambin utilizar el mtodo PreparedStatement.executeUpdate para sentencias que no tienen marcadores de parmetros. Los pasos para ejecutar un objeto PreparedStatement sin marcadores de parmetros son similares a los pasos para ejecutar el objeto PreparedStatement con marcadores de parmetros, excepto que se omite el paso 2 en la pgina 1-19. El ejemplo siguiente muestra estos pasos.
Connection con; PreparedStatement pstmt; int numUpd; ... pstmt = con.prepareStatement( "UPDATE EMPLOYEE SET PHONENO=4657 WHERE EMPNO=000010"); // Crear un objeto PreparedStatement numUpd = pstmt.executeUpdate(); // Realizar la actualizacin pstmt.close(); // Cerrar el objeto PreparedStatement Figura 1-9. Uso de PreparedStatement.executeUpdate para una sentencia de SQL sin marcadores de parmetros

1 3 4

Realizacin de actualizaciones por lotes en aplicaciones JDBC


En las actualizaciones de proceso por lotes, en lugar de actualizar filas de una tabla de forma individual, puede hacer que JDBC ejecute un grupo de actualizaciones al mismo tiempo. Las sentencias que se pueden incluir en un mismo lote de actualizaciones se denominan sentencias procesables por lotes. Si una sentencia tiene parmetros de entrada o expresiones de lenguaje principal, puede incluir esa sentencia solo en un lote que tenga otras instancias de la misma sentencia. Este tipo de lote se denomina lote homogneo. Si una sentencia carece de parmetros de entrada, puede incluir esa sentencia en un lote solo si las dems sentencias del lote no tienen parmetros de entrada ni expresiones de lenguaje principal. Este tipo de lote se denomina lote heterogneo. Dos sentencias que se puedan incluir en el mismo lote se dice que son compatibles por lote. Utilice los siguientes mtodos de Sentencia para crear, ejecutar y eliminar un lote de actualizaciones SQL: v addBatch v executeBatch v clearBatch Utilice el siguiente mtodo de sentencia preparada y sentencia invocable para crear un lote de parmetros para que una sentencia individual se pueda ejecutar varias veces en un lote, con un conjunto de parmetros diferente para cada ejecucin. v addBatch

1-20

IBM Data Server Driver para JDBC y SQLJ para IDS

Restricciones en la ejecucin de las sentencias de un lote: v Si intenta ejecutar una sentencia SELECT en un lote, se emite una excepcin BatchUpdateException. v Un objeto CallableStatement que ejecute en un lote puede contener parmetros de salida. Sin embargo, no puede recuperar los valores de los parmetros de salida. Si intenta hacerlo, se emite una excepcin BatchUpdateException. v No puede recuperar objetos ResultSet de un objeto CallableStatement que ejecute en un lote. En ese caso no se emite una excepcin BatchUpdateException, pero la invocacin del mtodo getResultSet devuelve un valor nulo. Para realizar actualizaciones por lotes utilizando varias sentencias sin parmetros de entrada, siga estos pasos bsicos: 1. Para cada sentencia de SQL que desee ejecutar en el lote, invoque el mtodo addBatch. 2. Invoque el mtodo executeBatch para ejecutar el lote de sentencias. 3. Compruebe si se han producido errores. Si no han ocurrido errores: a. Obtenga el nmero de filas afectadas por cada sentencia de SQL a partir de la matriz devuelta por la invocacin de executeBatch. Este nmero no incluye las filas afectadas por activadores o por la aplicacin de la integridad referencial. b. Si AutoCommit est inhabilitado para el objeto Connection, invoque el mtodo commit para confirmar los cambios. Si AutoCommit est habilitado para el objeto Connection, el IBM Data Server Driver para JDBC y SQLJ aade un mtodo commit al final del proceso por lotes. Para realizar actualizaciones por lotes utilizando una sola sentencia con varios conjuntos de parmetros de entrada, siga estos pasos bsicos: 1. Invoque el mtodo createStatement para crear un objeto Statement. 2. Para cada conjunto de valores de parmetros de entrada: a. Ejecute mtodos setXXX para asignar valores a los parmetros de entrada. b. Invoque el mtodo addBatch para aadir el conjunto de parmetros de entrada al lote. 3. Invoque el mtodo executeBatch para ejecutar las sentencias con todos los conjuntos de parmetros. 4. Compruebe si se han producido errores. Si no han ocurrido errores: a. Obtenga el nmero de filas afectadas por cada ejecucin de la sentencia de SQL a partir de la matriz devuelta por la invocacin de executeBatch. b. Si AutoCommit est inhabilitado para el objeto Connection, invoque el mtodo commit para confirmar los cambios. Si AutoCommit est habilitado para el objeto Connection, el IBM Data Server Driver para JDBC y SQLJ aade un mtodo commit al final del proceso por lotes. En el siguiente fragmento de cdigo de programa, se procesan por lotes dos conjuntos de parmetros. Luego, una sentencia UPDATE que admite dos parmetros de entrada se ejecuta dos veces, una vez con cada conjunto de parmetros. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-21

try { ... PreparedStatement prepStmt = con.prepareStatement( "UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?"); prepStmt.setString(1,mgrnum1); prepStmt.setString(2,deptnum1); prepStmt.addBatch();

1 2a 2b

prepStmt.setString(1,mgrnum2); prepStmt.setString(2,deptnum2); prepStmt.addBatch(); int [] numUpdates=prepStmt.executeBatch(); 3 for (int i=0; i < numUpdates.length; i++) { 4a if (numUpdates[i] == SUCCESS_NO_INFO) System.out.println("Execution " + i + ": unknown number of rows updated"); else System.out.println("Execution " + i + "successful: " numUpdates[i] + " rows updated"); } con.commit(); 4b } catch(BatchUpdateException b) { // process BatchUpdateException } Figura 1-10. Realizacin de una actualizacin de proceso por lotes

Obtencin de informacin acerca de parmetros de PreparedStatement mediante mtodos ParameterMetaData


El IBM Data Server Driver para JDBC y SQLJ incluye soporte para la interfaz ParameterMetaData. La interfaz ParameterMetaData contiene mtodos obtienen informacin sobre los marcadores de parmetros de un objeto PreparedStatement. Los mtodos de ParameterMetaData proporcionan los tipos de informacin siguientes: v Los tipos de datos de los parmetros, incluida la precisin y escala de los parmetros decimales. v Los nombres de tipos de los parmetros, especficos de la base de datos. Para los parmetros que corresponden a columnas de tabla que estn definidas con tipos diferenciados, estos nombres son los nombres de los tipos diferenciados. v Indicacin de si los parmetros pueden contener nulos. v Indicacin de si los parmetros son parmetros de entrada o de salida. v Indicacin de si los valores de un parmetro numrico pueden tener signo. v El nombre de clase Java totalmente calificado que el objeto PreparedStatement.setObject utiliza cuando define un valor de parmetro. Para invocar mtodos de ParameterMetaData, debe seguir estos pasos bsicos: 1. Invoque el mtodo Connection.prepareStatement para crear un objeto PreparedStatement. 2. Invoque el mtodo PreparedStatement.getParameterMetaData para obtener un objeto ParameterMetaData. 3. Invoque ParameterMetaData.getParameterCount para determinar el nmero de parmetros de PreparedStatement. 4. Invoque mtodos de ParameterMetaData para parmetros individuales. El cdigo de programa siguiente muestra cmo utilizar mtodos ParameterMetaData para determinar el nmero y los tipos de datos de los parmetros de una sentencia UPDATE de SQL. Los nmeros que aparecen a la

1-22

IBM Data Server Driver para JDBC y SQLJ para IDS

derecha de algunas sentencias corresponden a los pasos descritos anteriormente.


Connection con; ParameterMetaData pmtadta; int mtadtacnt; String sqlType; ... pstmt = con.prepareStatement( "UPDATE EMPLOYEE SET PHONENO=? WHERE EMPNO=?"); // Crear un objeto PreparedStatement pmtadta = pstmt.getParameterMetaData(); // Crear un objeto ParameterMetaData mtadtacnt = pmtadta.getParameterCount(); // Determinar el nmero de parmetros System.out.println("Nmero de parmetros de sentencia: " + mtadtacnt); for (int i = 1; i <= mtadtacnt; i++) { sqlType = pmtadta.getParameterTypeName(i); // Obtener tipo de datos de SQL para // cada parmetro System.out.println("Tipo de SQL del parmetro " + i " es " + sqlType); } ... pstmt.close(); // Cerrar PreparedStatement

1 2 3

Figura 1-11. Uso de mtodos de ParameterMetaData para obtener informacin sobre un objeto PreparedStatement

Recuperacin de datos en aplicaciones JDBC


Utilice objetos ResultSet para recuperar datos en las aplicaciones JDBC. Un ResultSet representa el conjunto de resultados de una consulta. Recuperacin de datos de tablas utilizando el mtodo Statement.executeQuery: Para recuperar datos de una tabla utilizando una sentencia SELECT sin marcadores de parmetros, puede utilizar el mtodo Statement.executeQuery. Este mtodo devuelve una tabla de resultados en un objeto ResultSet. Una vez obtenida la tabla de resultados, debe utilizar mtodos de ResultSet para desplazarse por la tabla de resultados y obtener los valores individuales de cada columna de cada fila. Con el IBM Data Server Driver para JDBC y SQLJ, tambin puede utilizar el mtodo Statement.executeQuery para obtener un conjunto de resultados de una llamada de procedimiento almacenado, si ese procedimiento almacenado devuelve un solo conjunto de resultados. Si el procedimiento almacenado devuelve varios conjuntos de resultados, debe utilizar el mtodo Statement.execute. Este tema describe la modalidad ms sencilla de ResultSet, que es un objeto ResultSet de solo lectura en el que el usuario solo puede desplazarse hacia delante, una fila cada vez. IBM Data Server Driver para JDBC y SQLJ tambin permite utilizar ResultSet actualizables y desplazables. Para recuperar filas de una tabla utilizando una sentencia SELECT sin marcadores de parmetros, siga estos pasos: 1. Invoque el mtodo Connection.createStatement para crear un objeto Statement. 2. Invoque el mtodo Statement.executeQuery para obtener la tabla de resultados de la sentencia SELECT en un objeto ResultSet.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-23

3. En un bucle, posicione el cursor utilizando el mtodo next y recupere datos de cada columna de la fila actual del objeto ResultSet utilizando mtodos getXXX. XXX representa un tipo de datos. 4. Invoque el mtodo ResultSet.close para cerrar el objeto ResultSet. 5. Invoque el mtodo Statement.close para cerrar el objeto Statement cuando termine de utilizar ese objeto. El cdigo de programa siguiente muestra cmo recuperar todas las filas de la tabla EMPLOYEE. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
String empNo; Connection con; Statement stmt; ResultSet rs; ... stmt = con.createStatement(); // Crear un objeto Statement 1 rs = stmt.executeQuery("SELECT EMPNO FROM EMPLOYEE"); 2 // Obtener tabla de resultados de la consulta while (rs.next()) { // Situar el cursor 3 empNo = rs.getString(1); // Obtener solo el valor de la primera columna System.out.println("Nmero de empleado = " + empNo); // Imprimir el valor de columna } rs.close(); // Cerrar el conjunto de resultados 4 stmt.close(); // Cerrar la sentencia 5 Figura 1-12. Utilizacin de Statement.executeQuery

Recuperacin de datos de tablas utilizando el mtodo PreparedStatement.executeQuery: Para obtener datos de una tabla utilizando una sentencia SELECT con marcadores de parmetros, utilice el mtodo PreparedStatement.executeQuery. Este mtodo devuelve una tabla de resultados en un objeto ResultSet. Una vez obtenida la tabla de resultados, debe utilizar mtodos de ResultSet para desplazarse por la tabla de resultados y obtener los valores individuales de cada columna de cada fila. Con el IBM Data Server Driver para JDBC y SQLJ, tambin puede utilizar el mtodo PreparedStatement.executeQuery para obtener un conjunto de resultados de una llamada de procedimiento almacenado, si ese procedimiento almacenado devuelve un solo conjunto de resultados y tiene solamente parmetros de entrada. Si el procedimiento almacenado devuelve varios conjuntos de resultados, debe utilizar el mtodo Statement.execute. Consulte Recuperacin de varios conjuntos de resultados a partir de un procedimiento almacenado en una aplicacin JDBC para obtener ms informacin. Puede tambin utilizar el mtodo PreparedStatement.executeQuery para sentencias que no tienen marcadores de parmetros. Cuando ejecuta una consulta muchas veces, puede obtener un mejor rendimiento creando la sentencia de SQL en forma de objeto PreparedStatement. Para obtener filas de una tabla utilizando una sentencia SELECT con marcadores de parmetros, siga estos pasos: 1. Invoque el mtodo Connection.prepareStatement para crear un objeto PreparedStatement.

1-24

IBM Data Server Driver para JDBC y SQLJ para IDS

2. Invoque mtodos PreparedStatement.setXXX para pasar valores a los parmetros de entrada. 3. Invoque el mtodo PreparedStatement.executeQuery para obtener la tabla de resultados de la sentencia SELECT en un objeto ResultSet. 4. En un bucle, posicione el cursor utilizando el mtodo ResultSet.next y recupere datos de cada columna de la fila actual del objeto ResultSet utilizando mtodos getXXX. 5. Invoque el mtodo ResultSet.close para cerrar el objeto ResultSet. 6. Invoque el mtodo PreparedStatement.close para cerrar el objeto PreparedStatement cuando termine de utilizar ese objeto. El cdigo de programa siguiente muestra cmo recuperar filas de la tabla EMPLOYEE para un empleado determinado. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
String empnum, phonenum; Connection con; PreparedStatement pstmt; ResultSet rs; ... pstmt = con.prepareStatement( "SELECT EMPNO, PHONENO FROM EMPLOYEE WHERE EMPNO=?"); // Crear un objeto PreparedStatement pstmt.setString(1,"000010"); // Asignar valor a parmetro de entrada rs = pstmt.executeQuery(); // Obtener tabla resultados de consulta while (rs.next()) { // Situar el cursor empnum = rs.getString(1); // Obtener el valor de la primera columna phonenum = rs.getString(2); // Obtener el valor de la primera columna System.out.println("Nmero de empleado = " + empnum + "Nmero de telfono = " + phonenum); // Imprimir valores de columnas } rs.close(); // Cerrar el conjunto de resultados pstmt.close(); // Cerrar PreparedStatement Figura 1-13. Ejemplo de utilizacin de PreparedStatement.executeQuery

1 2 3 4

5 6

Obtencin de informacin acerca de un conjunto de resultados utilizando mtodos ResultSetMetaData: No puede suponer que conoce el nmero de columnas y tipos de datos de las columnas de una tabla o conjunto de resultados. Esto es especialmente cierto cuando est recuperando datos de una fuente de datos remota. Cuando escriba programas que obtienen conjuntos de resultados desconocidos, es necesario utilizar mtodos de ResultSetMetaData para determinar las caractersticas de los conjuntos de resultados antes de poder recuperar datos de ellos. Los mtodos de ResultSetMetaData proporcionan los tipos de informacin siguientes: v El nmero de columnas de un conjunto de resultados v El calificador de la tabla subyacente del conjunto de resultados v Informacin sobre una columna, tal como el tipo de datos, la longitud, la precisin, la escala y la posibilidad de contener nulos v La indicacin de si una columna es de solo lectura

IBM Data Server Driver para JDBC y SQLJ para IDS

1-25

Despus de invocar el mtodo executeQuery para generar el conjunto de resultados de una consulta sobre una tabla, siga estos pasos bsicos para determinar el contenido del conjunto de resultados: 1. Invoque el mtodo getMetaData para el objeto ResultSet para crear un objeto ResultSetMetaData. 2. Invoque el mtodo getColumnCount para determinar el nmero de columnas del conjunto de resultados. 3. Para cada columna del ResultSet, ejecute mtodos de ResultSetMetaData para determinar las caractersticas de las columnas. Los resultados de la llamada ResultSetMetaData.getColumnName reflejan la informacin sobre el nombre de la columna y que est almacenada en el catlogo de IDS de dicha fuente de datos. El cdigo de programa siguiente muestra cmo determinar los tipos de datos de todas las columnas de la tabla EMPLOYEE. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
String s; Connection con; Statement stmt; ResultSet rs; ResultSetMetaData rsmtadta; int colCount int mtadtaint; int i; String colName; String colType; ... stmt = con.createStatement(); // Crear un objeto Statement rs = stmt.executeQuery("SELECT * FROM EMPLOYEE"); // Obtener conjunto de resultados de la consulta rsmtadta = rs.getMetaData(); // Crear un objeto ResultSetMetaData 1 colCount = rsmtadta.getColumnCount(); 2 // Encontrar nmero de columnas de EMP for (i=1; i<= colCount; i++) { 3 colName = rsmtadta.getColumnName(); // Obtener nombre de columna colType = rsmtadta.getColumnTypeName(); // Obtener tipo de datos de la columna System.out.println("Columna = " + colName + " es del tipo de datos " + colType); // Imprimir el valor de columna } Figura 1-14. Uso de mtodos de ResultSetMetaData para obtener informacin sobre un conjunto de resultados

Caractersticas de un conjunto de resultados de JDBC cuando se utiliza el IBM Data Server Driver para JDBC y SQLJ: El IBM Data Server Driver para JDBC y SQLJ es compatible con cursores desplazables, actualizables y con capacidad de retencin. Adems de avanzar fila a fila por un ResultSet, puede ser deseable poder hacer lo siguiente: v Retroceder o ir directamente a una fila especfica v Actualizar, suprimir o insertar filas en un ResultSet v Dejar abierto el ResultSet despus de una operacin COMMIT Los trminos siguientes describen caractersticas de un ResultSet:

1-26

IBM Data Server Driver para JDBC y SQLJ para IDS

capacidad de desplazamiento Capacidad del cursor del ResultSet para avanzar solamente, o avanzar una o ms filas, retroceder una o ms filas o ir hasta una fila determinada. Si un cursor de un ResultSet es desplazable, tambin tiene un atributo de sensibilidad, que describe si el cursor es sensible a los cambios producidos en la tabla subyacente. capacidad de actualizacin Capacidad de poder utilizar el cursor para actualizar o suprimir filas. Esta caracterstica no es aplicable a un ResultSet devuelto por un procedimiento almacenado, pues un ResultSet de un procedimiento almacenado no se puede actualizar. Para las fuentes de datos de IBM Informix Dynamic Server, los cursores no pueden ser actualizables. capacidad de retencin Capacidad del cursor para permanecer abierto despus de una operacin COMMIT. Las caractersticas de un ResultSet correspondientes a la capacidad de actualizacin, capacidad de desplazamiento y capacidad de retencin se definen mediante parmetros en los mtodos Connection.prepareStatement o Connection.createStatement. Los valores de un ResultSet se corresponden con atributos de un cursor en la base de datos. La tabla siguiente muestra los valores de capacidad de desplazamiento, capacidad de actualizacin y capacidad de retencin en JDBC y los correspondientes atributos de cursor.
Tabla 1-1. Caractersticas de un conjunto de resultados en JDBC y los atributos de cursor en SQL Valor de JDBC CONCUR_READ_ONLY CONCUR_UPDATABLE HOLD_CURSORS_OVER_COMMIT TYPE_FORWARD_ONLY TYPE_SCROLL_INSENSITIVE TYPE_SCROLL_SENSITIVE Valor de cursor de DB2 FOR READ ONLY FOR UPDATE WITH HOLD SCROLL no especificado INSENSITIVE SCROLL SENSITIVE STATIC, SENSITIVE DYNAMIC o ASENSITIVE, dependiendo de la propiedad cursorSensitvity para Connection y DataSource Valor de cursor de IBM Informix Dynamic Server FOR READ ONLY FOR UPDATE WITH HOLD SCROLL no especificado SCROLL No soportado

Si un ResultSet de JDBC es esttico, el tamao de la tabla de resultados y el orden de las filas en la tabla de resultados no cambian despus de abrir el cursor. Por tanto, si inserta filas en la tabla subyacente, la tabla de resultados para un ResultSet esttico no cambia. Si suprime una fila de la tabla de resultados, se produce un hueco por supresin. No puede actualizar ni suprimir un hueco por supresin. Especificacin de la capacidad de actualizacin, desplazamiento y mantenimiento de ResultSets en aplicaciones JDBC: Utilice los parmetros especiales de los mtodos Connection.prepareStatement o Connection.createStatement para especificar la capacidad de actualizacin, desplazamiento o retencin de ResultSet.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-27

Por omisin, los objetos ResultSet son no desplazables y no actualizables. La capacidad de retencin por omisin depende de la fuente de datos y se puede determinar a partir del mtodo DatabaseMetaData.getResultSetHoldability. Para cambiar los atributos de capacidad de desplazamiento, actualizacin y retencin para un ResultSet, siga estos pasos: 1. Si la sentencia SELECT por la que se define el conjunto de resultados no tiene parmetros de entrada, invoque el mtodo createStatement para crear un objeto Statement. En otro caso, invoque el mtodo prepareStatement para crear un objeto PreparedStatement. Ha de especificar formas de los mtodos createStatement o prepareStatement que incluyan los parmetros resultSetType, resultSetConcurrency o resultSetHoldability. Esta es la modalidad del mtodo createStatement que da soporte a la capacidad de desplazamiento y a la capacidad de actualizacin:
createStatement(int resultSetType, int resultSetConcurrency);

Esta es la modalidad del mtodo createStatement que da soporte a la capacidad de desplazamiento, la capacidad de actualizacin y la capacidad de retencin:
createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability);

Esta es la modalidad del mtodo prepareStatement que da soporte a la capacidad de desplazamiento y a la capacidad de actualizacin:
prepareStatement(String sql, int resultSetType, int resultSetConcurrency);

Esta es la modalidad del mtodo prepareStatement que da soporte a la capacidad de desplazamiento, la capacidad de actualizacin y la capacidad de retencin:
prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability);

La tabla siguiente contiene una lista de los valores vlidos para resultSetType y resultSetConcurrency.
Tabla 1-2. Combinaciones vlidas de valores de resultSetType y resultSetConcurrency para conjuntos de resultados desplazables Valor de resultSetType TYPE_FORWARD_ONLY TYPE_FORWARD_ONLY TYPE_SCROLL_INSENSITIVE TYPE_SCROLL_SENSITIVE TYPE_SCROLL_SENSITIVE Valor de resultSetConcurrency CONCUR_READ_ONLY CONCUR_UPDATABLE CONCUR_READ_ONLY CONCUR_READ_ONLY CONCUR_UPDATABLE

resultSetHoldability tiene dos valores posibles: HOLD_CURSORS_OVER_COMMIT y CLOSE_CURSORS_AT_COMMIT. Cualquiera de estos dos valores se puede especificar con cualquier combinacin de resultSetConcurrency y resultSetHoldability. El valor que defina prevalece sobre la capacidad de retencin por omisin de la conexin. Restriccin: si el conjunto de resultados es desplazable y se utiliza para seleccionar columnas de una tabla en un servidor de DB2 Database para Linux, UNIX y Windows, la sentencia SELECT que sirve para definir el conjunto de resultados no puede incluir columnas que tengan los tipos de datos siguientes:

1-28

IBM Data Server Driver para JDBC y SQLJ para IDS

BLOB CLOB XML Un tipo diferenciado que est basado en cualquiera de los tipos de datos anteriores de esta lista 2. Si la sentencia SELECT tiene parmetros de entrada, invoque mtodos setXXX para pasar valores a los parmetros de entrada. 3. Invoque el mtodo executeQuery para obtener la tabla de resultados de la sentencia SELECT en un objeto ResultSet. 4. Para cada fila a la que desee acceder: a. Posicione el cursor utilizando uno de los mtodos listados en la tabla siguiente. v v v v
Tabla 1-3. Mtodos para posicionar un cursor desplazable en un conjunto de resultados Mtodo first last next
1 2 3

Sita el cursor En la primera fila del conjunto de resultados En la ltima fila del conjunto de resultados En la fila siguiente del conjunto de resultados En la fila anterior del conjunto de resultados Si n>0, en la fila n del conjunto de resultados. Si n<0 y m es el nmero de filas del conjunto de resultados, en la fila m+n+1 del conjunto de resultados. Si n>0, en la fila que est n filas despus de la fila actual. Si n<0, en la fila que est situada n filas antes de la fila actual. Si n=0, en la fila actual. Despus de la ltima fila del conjunto de resultados Antes de la primera fila del conjunto de resultados

previous

absolute(int n)

relative(int n)4,5

afterLast beforeFirst Notas:

1. Si el cursor est situado antes de la primera fila del conjunto de resultados, este mtodo posiciona el cursor en la primera fila. 2. Si el cursor est situado despus de la ltima fila del conjunto de resultados, este mtodo posiciona el cursor en la ltima fila. 3. Si el valor absoluto de n es mayor que el nmero de filas del conjunto de resultados, este mtodo posiciona el cursor despus de la ltima fila si n es positivo, o antes de la primera fila si n es negativo. 4. El cursor debe estar en una fila vlida del conjunto de resultados para poder utilizar este mtodo. Si el cursor est antes de la primera fila o despus de la ltima fila, el mtodo emite una excepcin de SQL. 5. Suponga que m es el nmero de filas del conjunto de resultados y x es la fila actual del conjunto de resultados. Si n>0 y x+n>m, el controlador posiciona el cursor antes de la primera fila. Si n<0 y x+n<1, el controlador posiciona el cursor antes de la primera fila.

b. Si necesita conocer la posicin actual del cursor, utilice el mtodo getRow, isFirst, isLast, isBeforeFirst o isAfterLast para obtener esa informacin. c. Si para resultSetType ha especificado un valor de TYPE_SCROLL_SENSITIVE en el paso 1 en la pgina 1-28 y necesita ver los valores ms recientes de la fila actual, invoque el mtodo refreshRow. Recomendacin: Debido a que la renovacin de las filas de un conjunto de resultados puede afectar negativamente al rendimiento de las aplicaciones, debe invocar refreshRow solo cuando necesite ver los datos ms recientes. d. Ejecute una o ms de las operaciones siguientes:
IBM Data Server Driver para JDBC y SQLJ para IDS

1-29

v Para recuperar datos de cada columna de la fila actual del objeto ResultSet, utilice mtodos getXXX. v Para actualizar la fila actual de la tabla subyacente, utilice mtodos updateXXX para asignar valores de columna a la fila actual del conjunto de resultados. Luego utilice updateRow para actualizar la fila correspondiente de la tabla subyacente. Si decide no actualizar la tabla subyacente, invoque el mtodo cancelRowUpdates en lugar del mtodo updateRow. El valor resultSetConcurrency del conjunto de resultados debe ser CONCUR_UPDATABLE para poder utilizar estos mtodos. v Para suprimir la fila actual de la tabla subyacente, utilice el mtodo deleteRow. La invocacin de deleteRow hace que el controlador sustituya la fila actual del conjunto de resultados espacio vaco. El valor resultSetConcurrency del conjunto de resultados debe ser CONCUR_UPDATABLE para utilizar este mtodo. 5. Invoque el mtodo close para cerrar el objeto ResultSet. 6. Invoque el mtodo close para cerrar el objeto Statement o PreparedStatement. El cdigo siguiente recupera todas las filas de la tabla de empleados en orden inverso, y actualiza el nmero de telfono para el nmero de empleado 000010. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
String s; Connection con; Statement stmt; ResultSet rs; ... stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // Crear un objeto Statement // para un Resultset desplazable // y actualizable rs = stmt.executeQuery("SELECT EMPNO FROM EMPLOYEE FOR UPDATE OF PHONENO"); // Crear el conjunto de resultados rs.afterLast(); // Posicionar el cursor al final // del conjunto de resultados while (rs.previous()) { // Retroceder el cursor s = rs.getString("EMPNO"); // Recuperar el nmero de empleado // (columna 1 de la tabla de // resultados) System.out.println("Employee number = " + s); // Imprimir el valor de columna if (s.compareTo("000010") == 0) { // Buscar empleado 000010 rs.updateString("PHONENO","4657"); // Actualizar su nmero de telfono rs.updateRow(); // Actualizar la fila } } rs.close(); // Cerrar el conjunto de resultados stmt.close(); // Cerrar la sentencia Figura 1-15. Uso de un cursor desplazable

3 4a 4d

5 6

Insercin de una fila en un ResultSet de una aplicacin JDBC: Si un ResultSet tiene el valor CONCUR_UPDATABLE para el atributo resultSetConcurrency, puede insertar filas en el ResultSet. Para insertar una fila en un ResultSet, siga estos pasos:

1-30

IBM Data Server Driver para JDBC y SQLJ para IDS

1. Efecte los siguientes pasos para cada fila que desee insertar. a. Invoque el mtodo ResultSet.moveToInsertRow para crear la fila que desea insertar. La fila se crea en un almacenamiento intermedio fuera del ResultSet. Si ya existe un almacenamiento intermedio de insercin, se borran todos los valores antiguos del almacenamiento intermedio. b. Invoque mtodos ResultSet.updateXXX para asignar valores a la fila que desea insertar. Se debe asignar un valor como mnimo a una columna en el ResultSet. Si no se hace as, se emite una SQLException cuando se inserta la fila en el ResultSet. Si no se asigna un valor a una columna en el ResultSet, al actualizar la tabla subyacente, la fuente de datos inserta el valor por omisin de la columna de la tabla asociada. Si se asigna un valor nulo a una columna definida como NOT NULL, el controlador JDBC emite una SQLException. c. Invoque ResultSet.insertRow para insertar la fila en el ResultSet. Despus de llamar a ResultSet.insertRow, siempre se borran todos los valores del almacenamiento intermedio de insercin, incluso si ResultSet.insertRow falla. 2. Reposicin del cursor dentro del ResultSet. Para mover el cursor desde la fila de insercin en el ResultSet, llame a cualquiera de los mtodos que colocan el cursor en una fila especfica, como ResultSet.first, ResultSet.absolute, o ResultSet.relative. Otra posibilidad es llamar a ResultSet.moveToCurrentRow para que mueva el cursor a la fila en el ResultSet que era la fila actual antes de que se realizase la operacin de insercin. Despus de llamar a ResultSet.moveToCurrentRow, se borran todos los valores del almacenamiento intermedio de insercin. Ejemplo: el cdigo que aparece a continuacin muestra la forma en que insertar una fila en un ResultSet que est formado por todas las filas en la tabla DEPARTMENT de ejemplo. Despus de que se haya insertado la fila, el cdigo coloca el cursor donde se encontraba con anterioridad en el ResultSet de la operacin de insercin. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery("SELECT * FROM DEPARTMENT"); rs.moveToInsertRow(); 1a rs.updateString("DEPT_NO", "M13"); 1b rs.updateString("DEPTNAME", "TECHNICAL SUPPORT"); rs.updateString("MGRNO", "000010"); rs.updateString("ADMRDEPT", "A00"); rs.insertRow(); 1c rs.moveToCurrentRow(); 2

Comprobacin de si la fila actual se insert en un ResultSet en una aplicacin JDBC: Si un ResultSet es dinmico, puede insertar filas en l. Despus de insertar filas en un ResultSet, puede ser necesario conocer qu filas se insertaron. Para comprobar si la fila actual se ha insertado en un ResultSet, siga estos pasos:

IBM Data Server Driver para JDBC y SQLJ para IDS

1-31

1. Invoque los mtodos DatabaseMetaData.ownInsertsAreVisible y DatabaseMetaData.othersInsertsAreVisible para determinar si las inserciones pueden ser visibles para el tipo dado de ResultSet. 2. Si las inserciones pueden ser visibles para el ResultSet, invoque el mtodo DatabaseMetaData.insertsAreDetected para determinar si el tipo dado de ResultSet puede detectar inserciones. 3. Si el ResultSet puede detectar inserciones, invoque el mtodo ResultSet.rowInserted para determinar si se ha insertado la fila actual. Operaciones de SQL sobre varias filas con el IBM Data Server Driver para JDBC y SQLJ: El IBM Data Server Driver para JDBC y SQLJ es compatible con las operaciones INSERT, UPDATE y FETCH sobre varias filas para las conexiones con fuentes de datos que son compatibles con esas operaciones. INSERT de varias filas Cuando ejecuta un lote de sentencias INSERT y la fuente de datos es compatible con una operacin INSERT de varias filas, el IBM Data Server Driver para JDBC y SQLJ utiliza la operacin INSERT de varias filas para insertar las filas. La operacin INSERT de varias filas puede proporcionar un mejor rendimiento que las sentencias INSERT individuales. No puede ejecutar una operacin de insercin de varias filas mediante la inclusin de una sentencia INSERT de varias filas en una aplicacin JDBC. FETCH de varias filas Cuando utiliza un cursor desplazable para realizar una operacin FETCH en una aplicacin JDBC, y el valor de la propiedad useRowsetCursor es true o no est definido, el IBM Data Server Driver para JDBC y SQLJ utiliza la operacin FETCH de varias filas para recuperar las filas, si la fuente de datos es compatible con esa operacin. La operacin FETCH de varias filas puede proporcionar un mejor rendimiento que las sentencias FETCH individuales. UPDATE o DELETE de posicin de varias filas El IBM Data Server Driver para JDBC y SQLJ es compatible con la ejecucin de operaciones UPDATE o DELETE de posicin que se ajustan al estndar JDBC 1. Esto supone utilizar el mtodo ResultSet.getCursorName para obtener el nombre del cursor para ResultSet, y definir una sentencia UPDATE o DELETE de posicin de esta manera:
UPDATE tabla SET col1=valor1,...coln=valorN WHERE CURRENT OF nombre_cursor DELETE FROM tabla WHERE CURRENT OF nombre_cursor

Si utiliza la tcnica JDBC 1 para actualizar o suprimir datos en una fuente de datos que es compatible con FETCH de varias filas, la sentencia UPDATE o DELETE de posicin podra actualizar o suprimir varias filas cuando solamente se desea actualizar o suprimir una fila individual. Para evitar actualizaciones o supresiones inesperadas, puede realizar una de estas acciones: v Utilice un ResultSet actualizable para recuperar y actualizar una sola fila cada vez.

1-32

IBM Data Server Driver para JDBC y SQLJ para IDS

v Utilice la clusula FOR ROW n OF ROWSET en las sentencia UPDATE o DELETE para especificar una fila determinada que se debe modificar o suprimir.

Llamada a procedimientos almacenados en aplicaciones JDBC


Para llamar a procedimientos almacenados, invoque mtodos contenidos en la clase CallableStatement. Los pasos bsicos para invocar procedimientos almacenados son: 1. Invoque el mtodo Connection.prepareCall con la sentencia CALL como argumento para crear un objeto CallableStatement. Restriccin: Los tipos de parmetros que estn permitidos dependen de si la fuente de datos es compatible con la ejecucin dinmica de la sentencia CALL. DB2 para z/OS no es compatible con la ejecucin dinmica de la sentencia CALL. Para una llamada a un procedimiento almacenado que reside en un servidor de bases de datos DB2 para z/OS, los parmetros pueden ser marcadores de parmetros o literales, pero no expresiones. La tabla siguiente lista los tipos de literales permitidos, y sus correspondientes tipos de JDBC.
Tabla 1-4. Tipos de literales permitidos en los parmetros de las llamadas a procedimientos almacenados DB2 para z/OS Tipo de parmetro literal Entero Decimal de coma flotante Decimal de coma fija Carcter Hexadecimal Serie de caracteres Unicode Tipo de JDBC java.sql.Types.INTEGER java.sql.Types.DOUBLE java.sql.Types.DECIMAL java.sql.Types.VARCHAR java.sql.Types.VARBINARY java.sql.Types.VARCHAR Ejemplos -122, 40022, +27 23E12, 40022E-4, +2723E+15, 1E+23, 0E0 -23.12, 40022.4295, 0.0, +2723.23, 10000000000 Grantham Lutz, OConner, ABcde?z? XC1C30427, X00CF18E0 UX0041, UX0054006500730074

2. Invoque los mtodos CallableStatement.setXXX para pasar valores a los parmetros de entrada (parmetros que se definen como IN en la sentencia CREATE PROCEDURE). Restriccin: Si la fuente de datos no es compatible con la ejecucin dinmica de la sentencia CALL, debe especificar los tipos de datos para los parmetros de entrada de la sentencia CALL exactamente tal como estn especificados en la definicin del procedimiento almacenado. 3. Invoque el mtodo CallableStatement.registerOutParameter para indicar qu parmetros son de solo salida (parmetros que se definen como OUT en la sentencia CREATE PROCEDURE) o cules son de entrada y salida (parmetros que se definen como INOUT en la sentencia CREATE PROCEDURE). Restriccin: Si la fuente de datos no es compatible con la ejecucin dinmica de la sentencia CALL, debe especificar los tipos de datos para los parmetros de salida, o de entrada y salida de la sentencia CALL exactamente tal como estn especificados en la definicin del procedimiento almacenado.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-33

4. Invoque uno de los mtodos siguientes para llamar al procedimiento almacenado: CallableStatement.executeUpdate Invoque este mtodo si el procedimiento almacenado no devuelve conjuntos de resultados. CallableStatement.executeQuery Invoque este mtodo si el procedimiento almacenado devuelve un solo conjunto de resultados. CallableStatement.execute Invoque este mtodo si el procedimiento almacenado devuelve varios conjuntos de resultados, o un nmero desconocido de conjuntos de resultados. Restriccin: Las fuentes de datos IBM Informix Dynamic Server (IDS) no son compatibles con la obtencin de varios conjuntos de resultados. 5. Si el procedimiento almacenado devuelve varios conjuntos de resultados, recupere los conjuntos de resultados. Restriccin: Las fuentes de datos IDS no son compatibles con la obtencin de varios conjuntos de resultados. 6. Invoque los mtodos CallableStatement.getXXX para recuperar valores a partir de los parmetros de salida (OUT) o entrada y salida (INOUT). 7. Invoque el mtodo CallableStatement.close para cerrar el objeto CallableStatement cuando termine de utilizar ese objeto. Ejemplo: el cdigo de programa siguiente muestra la invocacin de un procedimiento almacenado que tiene un solo parmetro de entrada, cuatro parmetros de salida y ningn ResultSet devuelto. Los nmeros situados a la derecha de determinadas sentencias corresponden a pasos descritos anteriormente.
int ifcaret; int ifcareas; int xsbytes; String errbuff; Connection con; CallableStatement cstmt; ResultSet rs; ... cstmt = con.prepareCall("CALL DSN8.DSN8ED2(?,?,?,?,?)"); 1 // Crear un objeto CallableStatement cstmt.setString (1, "DISPLAY THREAD(*)"); 2 // Establecer parmetro de entrada (mandato DB2) cstmt.registerOutParameter (2, Types.INTEGER); 3 // Registrar parmetros de salida cstmt.registerOutParameter (3, Types.INTEGER); cstmt.registerOutParameter (4, Types.INTEGER); cstmt.registerOutParameter (5, Types.VARCHAR); cstmt.executeUpdate(); // Invocar procedimiento almacenado 4 ifcaret = cstmt.getInt(2); // Obtener valores de parmetros de salida 6 ifcareas = cstmt.getInt(3); xsbytes = cstmt.getInt(4); errbuff = cstmt.getString(5); cstmt.close(); 7

1-34

IBM Data Server Driver para JDBC y SQLJ para IDS

Datos LOB en aplicaciones JDBC con IBM Data Server Driver para JDBC y SQLJ
El IBM Data Server Driver para JDBC y SQLJ es compatible con mtodos para actualizar y recuperar datos de columnas BLOB, CLOB y DBCLOB de una tabla, y para invocar procedimientos almacenados o funciones definidas por el usuario con parmetros BLOB o CLOB. Localizadores de LOB con IBM Data Server Driver para JDBC y SQLJ: El IBM Data Server Driver para JDBC y SQLJ puede utilizar localizadores de LOB para recuperar datos de columnas LOB. Debe utilizar localizadores de LOB solamente si la fuente de datos no es compatible con la modalidad continua progresiva. Para hacer que JDBC utilice localizadores de LOB para recuperar datos de columnas LOB, establezca la propiedad fullyMaterializeLobData en false y establezca la propiedad progressiveStreaming en NO (DB2BaseDataSource.NO en un programa de aplicacin). El efecto de fullyMaterializeLobData depende de si la fuente de datos es compatible con localizadores progresivos: v Si la fuente de datos no es compatible con localizadores progresivos: Si el valor de fullyMaterializeLobData es true, los datos LOB se materializarn completamente dentro del controlador JDBC cuando se capte una fila. Si el valor es false, los datos LOB se canalizarn. El controlador utiliza localizadores internamente para recuperar datos LOB en forma de bloques a medida que sea necesario. Es muy recomendable que establezca este valor en false cuando recupere datos LOB que contengan grandes volmenes de datos. El valor por omisin es true. v Si la fuente de datos es compatible con la modalidad continua progresiva: El controlador JDBC no tiene en cuenta el valor de fullyMaterializeLobData si la propiedad progressiveStreaming est establecida en YES (DB2BaseDataSource.YES en un programa de aplicacin) o la propiedad no est establecida. fullyMaterializeLobData no tiene ningn efecto sobre los parmetros de procedimientos almacenados. Como ocurre en cualquier otro lenguaje, un localizador de LOB de una aplicacin Java est asociado a una sola fuente de datos. No puede utilizar un mismo localizador de LOB para trasladar datos entre dos fuentes de datos diferentes. Para trasladar datos LOB entre dos fuentes de datos, debe materializar los datos LOB cuando los recupera de una tabla de la primera fuente de datos y luego insertar esos datos en la tabla de la segunda fuente de datos. Operaciones de LOB con IBM Data Server Driver para JDBC y SQLJ: El IBM Data Server Driver para JDBC y SQLJ es compatible con mtodos para actualizar y recuperar datos de columnas BLOB, CLOB y DBCLOB de una tabla, y para invocar procedimientos almacenados o funciones definidas por el usuario con parmetros BLOB o CLOB. Entre otras, puede ejecutar las operaciones siguientes sobre datos LOB cuando utiliza el IBM Data Server Driver para JDBC y SQLJ: v Especificar un BLOB o columna como argumento de los siguientes mtodos ResultSet para recuperar datos de una columna BLOB o CLOB:
IBM Data Server Driver para JDBC y SQLJ para IDS

1-35

Para columnas BLOB: getBinaryStream getBytes Para columnas CLOB: getAsciiStream getCharacterStream getString v Invocar los mtodos ResultSet siguientes para actualizar una columna BLOB o CLOB en un ResultSet actualizable: Para columnas BLOB: updateBinaryStream updateBlob Para columnas CLOB: updateAsciiStream updateCharacterStream updateClob Si especifica -1 para el parmetro length en cualquiera de los mtodos indicados anteriormente, el IBM Data Server Driver para JDBC y SQLJ lee los datos de entrada hasta que se acaban. v Utilizar los mtodos PreparedStatement siguientes para establecer los valores de parmetros que corresponden a columnas BLOB o CLOB: Para columnas BLOB: setBytes setBinaryStream setObject, donde el valor del parmetro Object es InputStream. Para columnas CLOB: setString setAsciiStream setCharacterStream setObject, donde el valor del parmetro Object es Reader Si especifica -1 para length, el IBM Data Server Driver para JDBC y SQLJ lee los datos de entrada hasta que se acaban. v Recuperar el valor de un parmetro CLOB de JDBC utilizando el mtodo CallableStatement.getString. Restriccin: Con el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2, no puede invocar un procedimiento almacenado que tenga parmetros DBCLOB OUT o INOUT. Tipos de datos Java para recuperar o actualizar datos de columnas LOB en aplicaciones JDBC: Cuando el controlador JDBC no puede determinar inmediatamente el tipo de datos de un parmetro que se utiliza con una columna LOB, es necesario elegir un tipo de datos para el parmetro que sea compatible con el tipo de datos LOB. Cuando la propiedad deferPrepares tiene el valor true, y el IBM Data Server Driver para JDBC y SQLJ procesa una llamada PreparedStatement.setXXX, el controlador puede necesitar realizar tareas adicionales de proceso para determinar los tipos de datos. Estas tareas adicionales de proceso pueden afectar al rendimiento del sistema.

1-36

IBM Data Server Driver para JDBC y SQLJ para IDS

Parmetros de entrada para columnas BLOB Para los parmetros de entrada de columnas BLOB, o parmetros de entrada/salida que se utilizan como entrada para columnas BLOB, puede utilizar uno de los mtodos siguientes: v Utilice una variable de entrada java.sql.Blob, que se corresponde exactamente con una columna BLOB:
cstmt.setBlob(parmIndex, blobData);

v Utilice una llamada CallableStatement.setObject que especifique que el tipo de datos de destino es BLOB:
byte[] byteData = {(byte)0x1a, (byte)0x2b, (byte)0x3c}; cstmt.setObject(parmInd, byteData, java.sql.Types.BLOB);

v Utilice un parmetro de entrada de tipo java.io.ByteArrayInputStream con una llamada CallableStatement.setBinaryStream. Un objeto java.io.ByteArrayInputStream es compatible con un tipo de datos BLOB. Para esta llamada es necesario especificar la longitud exacta de los datos de entrada:
java.io.ByteArrayInputStream byteStream = new java.io.ByteArrayInputStream(byteData); int numBytes = byteData.length; cstmt.setBinaryStream(parmIndex, byteStream, numBytes);

Parmetros de salida para columnas BLOB Para los parmetros de salida de columnas BLOB, o parmetros de entrada/salida que se utilizan como salida para columnas BLOB, puede utilizar uno de los mtodos siguientes: v Utilice la llamada CallableStatement.registerOutParameter para especificar que un parmetro de salida es de tipo BLOB. Luego puede recuperar el valor del parmetro e insertarlo en cualquier variable cuyo tipo de datos sea compatible con un tipo de datos BLOB. Por ejemplo, el cdigo siguiente permite recuperar un valor BLOB e insertarlo en una variable byte[]:
cstmt.registerOutParameter(parmIndex, java.sql.Types.BLOB); cstmt.execute(); byte[] byteData = cstmt.getBytes(parmIndex);

Parmetros de entrada para columnas CLOB Para los parmetros de entrada de columnas CLOB, o parmetros de entrada/salida que se utilizan como entrada para columnas CLOB, puede utilizar uno de los mtodos siguientes: v Utilice una variable de entrada java.sql.Clob, que se corresponde exactamente con una columna CLOB:
cstmt.setClob(parmIndex, clobData);

v Utilice una llamada CallableStatement.setObject que especifique que el tipo de datos de destino es CLOB:
String charData = "CharacterString"; cstmt.setObject(parmInd, charData, java.sql.Types.CLOB);

v Utilice uno de los tipos siguientes de parmetros de entrada: Un parmetro de entrada java.io.StringReader con una llamada cstmt.setCharacterStream:
java.io.StringReader reader = new java.io.StringReader(charData); cstmt.setCharacterStream(parmIndex, reader, charData.length);

Un parmetro java.io.ByteArrayInputStream con una llamada cstmt.setAsciiStream, para datos ASCII:


IBM Data Server Driver para JDBC y SQLJ para IDS

1-37

byte[] charDataBytes = charData.getBytes("US-ASCII"); java.io.ByteArrayInputStream byteStream = new java.io.ByteArrayInputStream (charDataBytes); cstmt.setAsciiStream(parmIndex, byteStream, charDataBytes.length);

Para estas llamadas es necesario especificar la longitud exacta de los datos de entrada. v Utilice un parmetro de entrada de tipo String con una llamada cstmt.setString:
cstmt.setString(charData);

Si la longitud de los datos es mayor que 32KB, y el controlador JDBC no tiene informacin de DESCRIBE sobre el tipo de datos del parmetro, el controlador JDBC asigna el tipo de datos CLOB a los datos de entrada. v Utilice un parmetro de entrada de tipo String con una llamada cstmt.setObject, y especifique el tipo de datos de destino como VARCHAR o LONGVARCHAR:
cstmt.setObject(parmIndex, charData, java.sql.Types.VARCHAR);

Si la longitud de los datos es mayor que 32KB, y el controlador JDBC no tiene informacin de DESCRIBE sobre el tipo de datos del parmetro, el controlador JDBC asigna el tipo de datos CLOB a los datos de entrada. Parmetros de salida para columnas CLOB Para los parmetros de salida de columnas CLOB, o parmetros de entrada/salida que se utilizan como salida para columnas CLOB, puede utilizar uno de los mtodos siguientes: v Utilice la llamada CallableStatement.registerOutParameter para especificar que un parmetro de salida es de tipo CLOB. Luego puede recuperar el valor del parmetro e insertarlo en cualquier variable cuyo tipo de datos sea compatible con un tipo de datos CLOB. Por ejemplo, el cdigo siguiente permite recuperar un valor CLOB e insertarlo en una variable de tipo String:
cstmt.registerOutParameter(parmIndex, java.sql.Types.CLOB); cstmt.execute(); String charData = cstmt.getString(parmIndex);

v Utilice la llamada CallableStatement.registerOutParameter para especificar que un parmetro de salida es de tipo VARCHAR o LONGVARCHAR:
cstmt.registerOutParameter(parmIndex, java.sql.Types.VARCHAR); cstmt.execute(); String charData = cstmt.getString(parmIndex);

Esta tcnica se debe utilizar solamente si sabe que la longitud de los datos recuperados es menor o igual que 32KB. En otro caso, los datos se truncan.

Recuperacin de claves de generacin automtica en aplicaciones JDBC


Mediante el IBM Data Server Driver para JDBC y SQLJ, puede recuperar claves de generacin automtica (tambin llamadas claves auto-generadas) a partir de una tabla utilizando mtodos de JDBC 3.0. Como alternativa, puede utilizar mtodos especficos de IBM Data Server Driver para JDBC y SQLJ para recuperar las claves de generacin automtica. Una columna SERIAL o SERIAL8 es una columna de tabla que proporciona un mecanismo para que la fuente de datos genere automticamente un valor numrico para cada fila. Puede definir una columna con el tipo de datos SERIAL o SERIAL8 en una sentencia CREATE TABLE o ALTER TABLE. Una tabla no puede tener ms de una columna de cada tipo, pero puede tener una columna de cada tipo.

1-38

IBM Data Server Driver para JDBC y SQLJ para IDS

Para habilitar la recuperacin de claves generadas automticamente a partir de una tabla, es necesario que al insertar filas indique que desear recuperar valores de claves generadas automticamente. Para ello debe establecer un distintivo en una llamada de mtodo Connection.prepareStatement, Statement.executeUpdate o Statement.execute. La sentencia que se ejecuta debe ser una sentencia INSERT o un INSERT dentro de una sentencia SELECT. De lo contrario, el controlador JDBC no tiene en cuenta el parmetro por el que se establece el distintivo. Restriccin: No puede preparar una sentencia de SQL para la recuperacin de claves generadas automticamente y utilizar el objeto PreparedStatement para actualizaciones de proceso por lotes. IBM Data Server Driver para JDBC y SQLJ Versin 3.50 o posterior emite un SQLException cuando el usuario invoca un mtodo addBatch o executeBatch para un objeto PreparedStatement que est preparado para devolver claves generadas automticamente. Para recuperar claves generadas automticamente a partir de una tabla utilizando mtodos de JDBC 3.0, debe seguir estos pasos: 1. Utilice uno de los mtodos siguientes para indicar que desea obtener claves generadas automticamente: v Si piensa utilizar el mtodo PreparedStatement.executeUpdate para insertar filas, invoque uno de estos formatos del mtodo Connection.prepareStatement para crear un objeto PreparedStatement:
Connection.prepareStatement(sentencia-sql, Statement.RETURN_GENERATED_KEYS); Connection.prepareStatement(sentencia-sql, String [] nombresColumnas); Connection.prepareStatement(sentencias-sql, int [] ndicescolumna);

Cuando utilice el primer formato, especifique si se deben devolver todas las claves generadas automticamente. Cuando utilice el segundo formato, especifique los nombres de las columnas para las que desee claves generadas automticamente. Cuando utilice el tercer formato, especifique las posiciones en la tabla de las columnas para las que desee claves generadas automticamente. v Si utiliza el mtodo Statement.executeUpdate para insertar filas, invoque uno de estos formatos del mtodo Statement.executeUpdate:
Statement.executeUpdate(sentencia-sql, Statement.RETURN_GENERATED_KEYS); Statement.executeUpdate(sentencia-sql, String [] nombresColumnas); Statement.executeUpdate(sentencia-sql, int [] ndicescolumna);

Cuando utilice el primer formato, especifique si se deben devolver todas las claves generadas automticamente. Cuando utilice el segundo formato, especifique los nombres de las columnas para las que desee claves generadas automticamente. Cuando utilice el tercer formato, especifique las posiciones en la tabla de las columnas para las que desee claves generadas automticamente. 2. Invoque el mtodo PreparedStatement.getGeneratedKeys o el mtodo Statement.getGeneratedKeys para recuperar un objeto ResultSet que contiene los valores de claves generadas automticamente. Si el tipo de datos de la columna es SERIAL, las claves que se generan de forma automtica en el ResultSet tienen un tipo de datos INT. Utilice ResultSet.getInt para recuperar los valores. Si el tipo de datos de la columna es
IBM Data Server Driver para JDBC y SQLJ para IDS

1-39

SERIAL8, las claves que se generan de forma automtica en el ResultSet tienen un tipo de datos BIGINT. Utilice ResultSet.getLong para recuperar los valores. El cdigo de programa siguiente crea una tabla con una columna SERIAL, inserta una fila en la tabla, y recupera el valor de la clave generada automticamente para la columna SERIAL. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
Figura 1-16. Ejemplo de recuperacin de claves generadas automticamente a partir de una tabla de IBM Informix Dynamic Server (IDS) import java.sql.*; import java.math.*; import com.ibm.db2.jcc.*; Connection con; Statement stmt; ResultSet rs; java.math.BigDecimal serColVar; ... stmt = con.createStatement();

// Crear un objeto Statement

stmt.executeUpdate( "CREATE TABLE EMP_PHONE (EMPNO CHAR(6), PHONENO CHAR(4), " + "SERIALCOL SERIAL)"); // Crear tabla con columna de identidad stmt.executeUpdate("INSERT INTO EMP_PHONE (EMPNO, PHONENO) " + 1 "VALUES (000010, 5555)", // Insertar una fila Statement.RETURN_GENERATED_KEYS); // Indicar que desea claves // generadas automticamente rs = stmt.getGeneratedKeys(); // Recupera los valores 2 // generados automticamente en un ResultSet. // Crear ResultSet para consulta while (rs.next()) { java.math.BigDecimal serColVar = rs.getBigDecimal(1); // Obtener claves generadas // automticamente System.out.println("Valor de clave generada automticamente = " + serColVar); } rs.close(); // Cerrar ResultSet stmt.close(); // Cerrar Statement

Recuperacin de claves de generacin automtica utilizando nicamente mtodos IBM Data Server Driver para JDBC y SQLJ: The IBM Data Server Driver para JDBC y SQLJ proporciona un conjunto de mtodos que puede utilizarse para recuperar automticamente claves generadas (claves de generacin automtica) desde las bases de datos de IBM Informix Dynamic Server (IDS). La utilizacin de estos mtodos es una alternativa a la utilizacin de los mtodos JDBC 3.0. Siga estos pasos para utilizar los mtodos especficos de IBM Data Server Driver para JDBC y SQLJ para recuperar claves generadas automticamente a partir de las fuentes de datos de IDS. 1. Ejecute una sentencia INSERT en una tabla que contenga columnas SERIAL o SERIAL8. 2. Ejecute el mtodo DB2Statement.getIDSSerial o DB2Statement.getIDSSerial8 para recuperar las claves generadas automticamente para la fila insertada.

1-40

IBM Data Server Driver para JDBC y SQLJ para IDS

El valor devuelto para DB2Statement.getIDSSerial tiene el tipo de datos int. El valor devuelto para DB2Statement.getIDSSerial8 tiene el tipo de datos largo (long). El cdigo de programa siguiente crea una tabla con una columna SERIAL, inserta una fila en la tabla y recupera el valor de la clave generada automticamente para la columna de identidad. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
Figura 1-17. Ejemplo de recuperacin de claves generadas automticamente a partir de una tabla IDS utilizando mtodos especficos de IBM Data Server Driver para JDBC y SQLJ import java.sql.*; import java.math.*; import com.ibm.db2.jcc.*; Connection con; Statement stmt; ResultSet rs; ... stmt = con.createStatement();

// Crear un objeto Statement

stmt.executeUpdate( "CREATE TABLE EMP_PHONE (EMPNO CHAR(6), PHONENO CHAR(4), " + "SERIALCOL SERIAL)"); // Crear tabla con columna de identidad stmt.executeUpdate("INSERT INTO EMP_PHONE (EMPNO, PHONENO) " + 1 "VALUES (000010, 5555)"); // Insertar una fila int serColVar = ((com.ibm.db2.jcc.DB2Statement)stmt).getIDSSerial(); 2 // Recuperar el valor de clave // generada automticamente System.out.println("Valor de clave generada automticamente = " + serColVar); rs.close(); // Cerrar ResultSet stmt.close(); // Cerrar Statement

Control de transacciones en aplicaciones JDBC


En las aplicaciones JDBC, al igual que en otros tipos de aplicaciones SQL, el control de transacciones supone la confirmacin y retrotraccin explcita o implcita de transacciones, y definir el nivel de aislamiento de las transacciones.

Niveles de aislamiento de IBM Data Server Driver para JDBC y SQLJ


IBM Data Server Driver para JDBC y SQLJ es compatible con varios niveles de aislamiento, que corresponden a niveles de aislamiento del servidor de bases de datos. Los niveles de aislamiento de JDBC se pueden definir para una unidad de trabajo dentro del programa JDBC, utilizando el mtodo Connection.setTransactionIsolation. El nivel de aislamiento por omisin se puede establecer mediante la propiedad defaultIsolationLevel. La tabla siguiente muestra los valores de level que puede especificar en el mtodo Connection.setTransactionIsolation y sus equivalentes para el servidor de bases de datos.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-41

Tabla 1-5. Niveles de aislamiento equivalentes para JDBC e IDS Valor para JDBC java.sql.Connection.TRANSACTION_SERIALIZABLE java.sql.Connection.TRANSACTION_REPEATABLE_READ java.sql.Connection.TRANSACTION_READ_COMMITTED java.sql.Connection.TRANSACTION_READ_UNCOMMITTED Nivel de aislamiento para IBM Informix Dynamic Server (IDS) Lectura repetible Lectura repetible Lectura confirmada Lectura sucia

com.ibm.db2.jcc.DB2Connection.TRANSACTION_IDS_CURSOR_STABILITY Estabilidad del cursor para IDS com.ibm.db2.jcc.DB2Connection.TRANSACTION_IDS_LAST_COMMITTED Lectura confirmada, ltima confirmada

Confirmacin o retrotraccin de transacciones JDBC


En JDBC, para confirmar o retrotraer explcitamente transacciones, utilice los mtodos commit o rollback. Por ejemplo:
Connection con; ... con.commit();

Si la modalidad de confirmacin automtica (autocommit) est activada, el gestor de bases de datos ejecuta una operacin de confirmacin despus de la ejecucin de cada sentencia de SQL. Para activar la modalidad de confirmacin automtica, invoque el mtodo Connection.setAutoCommit(true). Para desactivar la modalidad de confirmacin automtica, invoque el mtodo Connection.setAutoCommit(false). Para determinar si la modalidad de confirmacin automtica est activa, invoque el mtodo Connection.getAutoCommit. Las conexiones que intervienen en transacciones distribuidas no pueden invocar el mtodo setAutoCommit(true). Cuando el usuario cambia el estado de la confirmacin automtica, el gestor de bases de datos ejecuta una operacin de confirmacin si la aplicacin no se encuentra ya en un lmite de transaccin. Mientras una conexin participa en una transaccin distribuida, la aplicacin asociada no puede emitir los mtodos commit o rollback.

Modalidades de confirmacin automtica por omisin de JDBC


La modalidad de confirmacin automtica depende de la fuente de datos a la que se conecta la aplicacin JDBC.

Valor por omisin de la confirmacin automtica para fuentes de datos DB2


Para las conexiones con fuentes de datos DB2, la modalidad de confirmacin automtica por omisin es true.

Valor por omisin de la confirmacin automtica para fuentes de datos IDS


Para las conexiones con fuentes de datos IDS, la modalidad de confirmacin automtica por omisin depende del tipo de la fuente de datos. La tabla siguiente muestra los valores por omisin.

1-42

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-6. Modalidades de confirmacin automtica para fuentes de datos IDS Modalidad de confirmacin automtica para transacciones locales. Modalidad de confirmacin automtica para transacciones globales. false No aplicable

Tipo de fuente de datos

Base de datos compatible con true ANSI Base de datos no compatible con ANSI sin registro cronolgico Base de datos no compatible con ANSI con registro cronolgico false

true

false

Excepciones y avisos cuando se utiliza IBM Data Server Driver para JDBC y SQLJ
En las aplicaciones JDBC, los errores de SQL emiten excepciones, que el usuario trata mediante bloques try/catch. Los avisos de SQL no emiten excepciones, por lo que despus de ejecutar sentencias de SQL es necesario invocar mtodos para determinar si se han producido avisos. El IBM Data Server Driver para JDBC y SQLJ proporciona las clases e interfaces siguientes, las cuales proporcionan informacin sobre errores y avisos.

SQLException
La clase SQLException para el manejo de errores. Todos los mtodos de JDBC emiten una instancia de SQLException cuando se produce un error durante la ejecucin del mtodo. De acuerdo con la especificacin JDBC, un objeto SQLException contiene la informacin siguiente: v Un valor int que contiene un cdigo de error. SQLException.getErrorCode recupera este valor. v Un objeto String que contiene el SQLSTATE o el valor nulo. SQLException.getSQLState recupera este valor. v Un objeto String que contiene una descripcin del error o el valor nulo. SQLException.getMessage recupera este valor. v Un puntero que indica la ubicacin del objeto SQLException siguiente o un valor nulo. SQLException.getNextException recupera este valor. Cuando un mtodo JDBC emite una SQLException, esa SQLException puede ser debida a la excepcin Java subyacente que se produjo cuando el IBM Data Server Driver para JDBC y SQLJ proces el mtodo. En este caso, la SQLException engloba la excepcin subyacente, y se puede utilizar el mtodo SQLException.getCause para obtener informacin sobre el error.

DB2Diagnosable
La interfaz com.ibm.db2.jcc.DB2Diagnosable especfica del IBM Data Server Driver para JDBC y SQLJ ampla la clase SQLException. La interfaz DB2Diagnosable le proporciona ms informacin sobre los errores producidos al acceder a la fuente de datos. Si el controlador JDBC detecta un error, DB2Diagnosable le proporciona la misma informacin que la clase SQLException estndar. Sin embargo, si el servidor

IBM Data Server Driver para JDBC y SQLJ para IDS

1-43

de bases de datos detecta el error, DB2Diagnosable aade los mtodos siguientes, que proporcionan informacin adicional sobre el error: getSqlca Devuelve un objeto DB2Sqlca con la informacin siguiente: v Un cdigo de error de SQL v Los valores SQLERRMC v El valor SQLERRP v Los valores SQLERRD v Los valores SQLWARN v El estado de SQL (SQLSTATE) getThrowable Devuelve el objeto java.lang.Throwable que caus la excepcin SQLException o un valor nulo si ese objeto no existe. printTrace Imprime informacin de diagnstico.

aviso de SQL
El IBM Data Server Driver para JDBC y SQLJ acumula avisos cuando las sentencias de SQL devuelven cdigos de SQL positivos, y cuando devuelven cdigos de SQL iguales a 0 junto con estados de SQL distintos de cero. La invocacin de getWarnings hace que se recupere un objeto SQLWarning. Importante: Cuando una llamada a Statement.executeUpdate o PreparedStatement.executeUpdate no repercute sobre las filas, el IBM Data Server Driver para JDBC y SQLJ genera un SQLWarning con el cdigo de error +100. Cuando una llamada a ResultSet.next no devuelve ninguna fila, el IBM Data Server Driver para JDBC y SQLJ no genera un SQLWarning. Un objeto SQLWarning genrico contiene la informacin siguiente: v Un objeto String que contiene una descripcin del aviso o el valor nulo v Un objeto String que contiene el SQLSTATE o el valor nulo v Un valor int que contiene un cdigo de error v Un puntero que indica la ubicacin del objeto SQLWarning siguiente o un valor nulo Cuando se utiliza el IBM Data Server Driver para JDBC y SQLJ, al igual que ocurre con un objeto SQLException, un objeto SQLWarning puede contener tambin informacin especfica de IDS. La informacin especfica de IDS correspondiente a un objeto SQLWarning es la misma que la informacin especfica de IDS correspondiente a un objeto SQLException.

Manejo de una excepcin de SQL cuando se utiliza IBM Data Server Driver para JDBC y SQLJ
Al igual que ocurre en todos los programas Java, el manejo de errores para aplicaciones JDBC se realiza utilizando bloques try/catch. Los mtodos emiten excepciones cuando se producen errores, y el cdigo contenido en el bloque catch maneja esas excepciones. Estos son los pasos bsicos para el manejo de una excepcin SQLException en un programa JDBC que se ejecuta con el IBM Data Server Driver para JDBC y SQLJ:

1-44

IBM Data Server Driver para JDBC y SQLJ para IDS

1. Proporcione al programa acceso a la interfaz com.ibm.db2.jcc.DB2Diagnosable y a la clase com.ibm.db2.jcc.DB2Sqlca. Puede calificar al completo todas las referencias a esos elementos o puede importarlos:
import com.ibm.db2.jcc.DB2Diagnosable; import com.ibm.db2.jcc.DB2Sqlca;

2. Opcional: Durante una conexin con una fuente de datos DB2 para z/OS o IBM Informix Dynamic Server (IDS), establezca la propiedad setRetrieveMessagesFromServerOnGetMessage en true si desea obtener el texto de mensaje completo al invocar SQLException.getMessage. 3. Coloque cdigo que pueda generar una excepcin SQLException en un bloque try. 4. En el bloque catch, ejecute los pasos siguientes en un bucle: a. Determine si ha recuperado la ltima excepcin SQLException. En caso negativo, contine en el paso siguiente. b. Opcional: Para una sentencia de SQL que se ejecuta en una fuente de datos IDS, ejecute el mtodo com.ibm.db2.jcc.DB2Statement.getIDSSQLStatementOffSet para determinar las columnas con errores de sintaxis. DB2Statement.getIDSSQLStatementOffSet devuelve el desplazamiento dentro de la sentencia de SQL donde est situado el primer error de sintaxis. c. Compruebe si existe informacin especfica de IBM Data Server Driver para JDBC y SQLJ comprobando si SQLException es una instancia de DB2Diagnosable. En caso afirmativo: 1) Transforme el objeto en un objeto DB2Diagnosable. 2) Opcional: invoque el mtodo DB2Diagnosable.printTrace para escribir toda la informacin sobre SQLException en un objeto java.io.PrintWriter. 3) Invoque el mtodo DB2Diagnosable.getThrowable para determinar si un objeto java.lang.Throwable asociado ha causado la excepcin SQLException. 4) Invoque el mtodo DB2Diagnosable.getSqlca para recuperar el objeto DB2Sqlca. 5) Invoque el mtodo DB2Sqlca.getSqlCode para recuperar un valor de cdigo de error de SQL. 6) Invoque el mtodo DB2Sqlca.getSqlErrmc para recuperar una serie de caracteres que contiene todos los valores SQLERRMC, o invoque el mtodo DB2Sqlca.getSqlErrmcTokens para recuperar los valores SQLERRMC dentro de una matriz. 7) Invoque el mtodo DB2Sqlca.getSqlErrp para recuperar el valor SQLERRP. 8) Invoque el mtodo DB2Sqlca.getSqlErrd para recuperar los valores SQLERRD dentro de una matriz. 9) Invoque el mtodo DB2Sqlca.getSqlWarn para recuperar los valores SQLWARN dentro de una matriz. 10) Invoque el mtodo DB2Sqlca.getSqlState para recuperar el valor SQLSTATE. 11) Invoque el mtodo DB2Sqlca.getMessage para recuperar el texto del mensaje de error procedente de la fuente de datos. d. Invoque el mtodo SQLException.getNextException para recuperar la excepcin SQLException siguiente.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-45

El cdigo de programa siguiente muestra cmo obtener informacin especfica de IBM Data Server Driver para JDBC y SQLJ a partir de un SQLException proporcionado con IBM Data Server Driver para JDBC y SQLJ. Los nmeros situados a la derecha de determinadas sentencias corresponden a pasos descritos anteriormente.
Figura 1-18. Proceso de una excepcin de SQL cuando se utiliza el IBM Data Server Driver para JDBC y SQLJ import java.sql.*; // Importar paquete de la API de JDBC import com.ibm.db2.jcc.DB2Diagnosable; // Importar paquetes para DB2 1 import com.ibm.db2.jcc.DB2Sqlca; // Soporte de SQLException java.io.PrintWriter printWriter; // Para volcar toda la informacin // de excepciones de SQL String url = "jdbc:ids://myhost:9999/myDB:" + 2 "retrieveMessagesFromServerOnGetMessage=true;"; // Definir propiedades para recuperar // texto de mensaje completo String user = "db2adm"; String password = "db2adm"; java.sql.Connection con = java.sql.DriverManager.getConnection (url, user, password) // Conectar con una fuente de datos DB2 para z/OS ... try { 3 // Cdigo que podra generar excepciones de SQL ... } catch(SQLException sqle) { while(sqle != null) { // Comprobar si existen ms 4a // excepciones de SQL para procesar //=====> Proceso opcional de errores especficos de // IBM Data Server Driver para JDBC y SQLJ if (sqle instanceof DB2Diagnosable) { 4c // Comprobar si existe informacin especfica de // IBM Data Server Driver para JDBC y SQLJ com.ibm.db2.jcc.DB2Diagnosable diagnosable = (com.ibm.db2.jcc.DB2Diagnosable)sqle; 4c1 diagnosable.printTrace (printWriter, ""); 4c2 java.lang.Throwable throwable = diagnosable.getThrowable(); 4c3 if (throwable != null) { // Extraer informacin sobre java.lang.Throwable, // tal como mensaje o rastreo de pila. ... } DB2Sqlca sqlca = diagnosable.getSqlca(); 4c4 // Obtener objeto DB2Sqlca if (sqlca != null) { // Comprobar que DB2Sqlca no es nulo int sqlCode = sqlca.getSqlCode(); // Obtener cd. error SQL 4c5 String sqlErrmc = sqlca.getSqlErrmc(); 4c6 // Obtener el valor SQLERRMC completo String[] sqlErrmcTokens = sqlca.getSqlErrmcTokens(); // Tambin se pueden recuperar // distintivos SQLERRMC individuales String sqlErrp = sqlca.getSqlErrp(); 4c7 // Obtener el valor SQLERRP int[] sqlErrd = sqlca.getSqlErrd(); 4c8 // Obtener campos SQLERRD char[] sqlWarn = sqlca.getSqlWarn(); 4c9 // Obtener campos SQLWARN String sqlState = sqlca.getSqlState(); 4c10 // Obtener SQLSTATE String errMessage = sqlca.getMessage(); 4c11

1-46

IBM Data Server Driver para JDBC y SQLJ para IDS

// Obtener mensaje de error System.err.println ("Mensaje de error de servidor: " + errMessage); System.err.println ("--------------- SQLCA ---------------"); System.err.println ("Cdigo de error: " + sqlCode); System.err.println ("SQLERRMC: " + sqlErrmc); If (sqlErrmcTokens != null) { for (int i=0; i< sqlErrmcTokens.length; i++) { System.err.println (" token " + i + ": " + sqlErrmcTokens[i]); } } System.err.println ( "SQLERRP: " + sqlErrp ); System.err.println ( "SQLERRD(1): " + sqlErrd[0] + "\n" + "SQLERRD(2): " + sqlErrd[1] + "\n" + "SQLERRD(3): " + sqlErrd[2] + "\n" + "SQLERRD(4): " + sqlErrd[3] + "\n" + "SQLERRD(5): " + sqlErrd[4] + "\n" + "SQLERRD(6): " + sqlErrd[5] ); System.err.println ( "SQLWARN1: " + sqlWarn[0] + "\n" + "SQLWARN2: " + sqlWarn[1] + "\n" + "SQLWARN3: " + sqlWarn[2] + "\n" + "SQLWARN4: " + sqlWarn[3] + "\n" + "SQLWARN5: " + sqlWarn[4] + "\n" + "SQLWARN6: " + sqlWarn[5] + "\n" + "SQLWARN7: " + sqlWarn[6] + "\n" + "SQLWARN8: " + sqlWarn[7] + "\n" + "SQLWARN9: " + sqlWarn[8] + "\n" + "SQLWARNA: " + sqlWarn[9] ); System.err.println ("SQLSTATE: " + sqlState); // Porcin de excepcin de SQL } sqle=sqle.getNextException(); // Recup. excepcin SQL siguiente } } 4d

El cdigo de programa siguiente muestra cmo obtener la ubicacin de un error de sintaxis en una sentencia de SQL a partir de SQLException.
... Statement stmt=null; try { stmt = con.createStatement(); stmt.execute("select * fro tab1"); // Esta sentencia tiene un error de // sintaxis en el desplazamiento 10 } catch (SQLException e) { System.out.println ("Desplazamiento de error :"+ ((DB2Statement) stmt).getIDSSQLStatementOffSet()); // Este cdigo imprime Desplazamiento // de error : 10 }

Manejo de un aviso de SQL cuando se utiliza IBM Data Server Driver para JDBC y SQLJ
A diferencia de los errores de SQL, los avisos de SQL no hacen que los mtodos de JDBC emitan excepciones. En lugar de ello, las clases Connection, Statement, PreparedStatement, CallableStatement y ResultSet contienen mtodos getWarnings, que es necesario invocar despus de ejecutar sentencias de SQL para determinar si se han producido avisos de SQL.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-47

Estos son los pasos bsicos para recuperar informacin de aviso de SQL: 1. Opcional: Durante la conexin con el servidor de bases de datos, defina las propiedades que afectan a los objetos SQLWarning. Si desea recibir un texto de mensaje completo procedente de una fuente de datos DB2 para z/OS o IBM Informix Dynamic Server (IDS) al ejecutar llamadas a SQLWarning.getMessage, establezca la propiedad setRetrieveMessagesFromServerOnGetMessage en true. 2. Inmediatamente despus de invocar un mtodo para conectar con un servidor de bases de datos o ejecutar una sentencia de SQL, invoque el mtodo getWarnings para recuperar un objeto SQLWarning. 3. Ejecute en bucle los pasos siguientes: a. Determine si el objeto SQLWarning es nulo. En caso negativo, contine en el paso siguiente. b. Invoque el mtodo SQLWarning.getMessage para obtener la descripcin del aviso. c. Invoque el mtodo SQLWarning.getSQLState para obtener el valor SQLSTATE. d. Invoque el mtodo SQLWarning.getErrorCode para obtener el valor del cdigo de error. e. Si desea recibir informacin de aviso especfica de IDS, siga los mismos pasos que realiza para obtener informacin especfica de IDS para un SQLException. f. Invoque el mtodo SQLWarning.getNextWarning para recuperar el objeto SQLWarning siguiente. El cdigo siguiente muestra cmo obtener informacin genrica sobre SQLWarning. Los nmeros situados a la derecha de determinadas sentencias corresponden a pasos descritos anteriormente.

1-48

IBM Data Server Driver para JDBC y SQLJ para IDS

String url = "jdbc:ids://myhost:9999/informixdb:" + "retrieveMessagesFromServerOnGetMessage=true;"; // Definir propiedades para recuperar // texto de mensaje completo String user = "idsadm"; String password = "idsadm"; java.sql.Connection con = java.sql.DriverManager.getConnection (url, user, password) // Conectar con fuente de datos IDS SQLWarning warn = con.getWarnings(); while (warn != null) { System.out.println(" SQLMESSAGE : " + warn.getMessage ()); warn = warn.getNextWarning();

Statement stmt; ResultSet rs; SQLWarning sqlwarn; ... stmt = con.createStatement(); // Crear un objeto Statement rs = stmt.executeQuery("SELECT * FROM EMPLOYEE"); // Obtener tabla de resultados de la consulta sqlwarn = stmt.getWarnings(); // Obtener avisos producidos 2 while (sqlwarn != null) { // Mientras haya avisos, obtener e 3a // imprimir informacin de aviso System.out.println ("Descripcin del aviso: " + sqlwarn.getMessage()); 3b System.out.println ("SQLSTATE: " + sqlwarn.getSQLState()); 3c System.out.println ("Cdigo de error: " + sqlwarn.getErrorCode()); 3d sqlwarn=sqlwarn.getNextWarning(); // Obtener aviso de SQL siguiente 3f } Figura 1-19. Ejemplo de proceso de un aviso de SQL

Recuperacin de informacin de una excepcin BatchUpdateException


Cuando se produce un error durante la ejecucin de una sentencia de un lote de sentencias, el proceso contina. Pero executeBatch emite una excepcin BatchUpdateException. Para recuperar informacin de la excepcin BatchUpdateException, siga estos pasos: 1. Utilice el mtodo BatchUpdateException.getUpdateCounts para determinar el nmero de filas que cada sentencia de SQL del lote ha actualizado antes de que se produjera la excepcin. getUpdateCount devuelve una matriz con un elemento por cada sentencia del lote. Un elemento tiene uno de los valores siguientes: n El nmero de filas que la sentencia ha actualizado.

Statement.SUCCESS_NO_INFO Este valor se devuelve si no se puede determinar el nmero de filas actualizado. Statement.EXECUTE_FAILED Este valor se devuelve si la sentencia no se ha ejecutado satisfactoriamente. 2. Utilice los mtodos getMessage, getSQLState y getErrorCode de SQLException para obtener la descripcin del error, el estado de SQL y el cdigo de error correspondientes al primer error. 3. Utilice el mtodo BatchUpdateException.getNextException para obtener una excepcin SQLException encadenada.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-49

4. Ejecute en bucle las llamadas de mtodo getMessage, getSQLState, getErrorCode y getNextException para obtener informacin sobre una excepcin SQLException y obtener la siguiente excepcin SQLException. El siguiente fragmento de cdigo de programa muestra cmo obtener los campos de una excepcin BatchUpdateException y los objetos encadenados SQLException. Los nmeros situados a la derecha de determinadas sentencias corresponden a pasos descritos anteriormente.
try { // Actualizaciones por lotes } catch(BatchUpdateException buex) { System.err.println("Contents of BatchUpdateException:"); System.err.println(" Update counts: "); int [] updateCounts = buex.getUpdateCounts(); 1 for (int i = 0; i < updateCounts.length; i++) { System.err.println(" Statement " + i + ":" + updateCounts[i]); } System.err.println(" Message: " + buex.getMessage()); 2 System.err.println(" SQLSTATE: " + buex.getSQLState()); System.err.println(" Error code: " + buex.getErrorCode()); SQLException ex = buex.getNextException(); 3 while (ex != null) { 4 System.err.println("SQL exception:"); System.err.println(" Message: " + ex.getMessage()); System.err.println(" SQLSTATE: " + ex.getSQLState()); System.err.println(" Error code: " + ex.getErrorCode()); ex = ex.getNextException(); } } Figura 1-20. Recuperacin de los campos de una excepcin BatchUpdateException

Desconexin respecto de fuentes de datos en aplicaciones JDBC


Una vez finalizada una conexin con una fuente de datos, es esencial que cierre la conexin con la fuente de datos. De esta manera se libera inmediatamente la base de datos y los recursos JDBC del objeto Connection. Para cerrar la conexin con la fuente de datos, utilice el mtodo close. Por ejemplo:
Connection con; ... con.close();

Para una conexin con una fuente de datos DB2, si la modalidad de confirmacin automtica no est activa, es necesario que la conexin se encuentre en un lmite de unidad de trabajo para poder cerrar la conexin. Para una conexin con una base de datos IBM Informix Dynamic Server, si la base de datos es compatible con el registro cronolgico y la modalidad de confirmacin automtica no est activa, es necesario que la conexin se encuentre en un lmite de unidad de trabajo para poder cerrar la conexin.

1-50

IBM Data Server Driver para JDBC y SQLJ para IDS

Seguridad cuando se utiliza IBM Data Server Driver para JDBC y SQLJ
Cuando utiliza el IBM Data Server Driver para JDBC y SQLJ, puede seleccionar un mecanismo de seguridad especificando un valor para la propiedad securityMechanism. Puede definir esta propiedad de una de las maneras siguientes: v Si utiliza la interfaz DriverManager, defina securityMechanism en un objeto java.util.Properties antes de invocar la modalidad del mtodo getConnection que hace uso del parmetro java.util.Properties. v Si utiliza la interfaz DataSource, y est creando y desplegando sus propios objetos DataSource, invoque el mtodo DataSource.setSecurityMechanism despus de crear un objeto DataSource. Puede determinar el mecanismo de seguridad que est en vigor para una conexin invocando el mtodo DB2Connection.getDB2SecurityMechanism. La tabla siguiente lista los mecanismos de seguridad que se pueden utilizar con IBM Data Server Driver para JDBC y SQLJ, y las fuentes de datos que son compatibles con esos mecanismos de seguridad.
Tabla 1-7. Soporte de servidor de bases de datos para mecanismos de seguridad de IBM Data Server Driver para JDBC y SQLJ Mecanismo de seguridad DB2 Database para Linux, UNIX y Windows ID de usuario y contrasea ID de usuario solamente ID de usuario y contrasea cifrada ID de usuario cifrado ID de usuario cifrado y contrasea cifrada ID de usuario cifrado y datos cifrados sensibles a la seguridad ID de usuario cifrado, contrasea cifrada y datos cifrados sensibles a la seguridad Kerberos1 Plugin Nota: 1. Disponible solo para el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4.
1

Vlido para DB2 para z/OS S S S S S S S IBM Informix Dynamic Server S S S No S No No

S S S S S No S

S S

S No

No No

La tabla siguiente lista los mecanismos de seguridad que se pueden utilizar con IBM Data Server Driver para JDBC y SQLJ, y el valor que debe especificar para la propiedad securityMechanism correspondiente a cada mecanismo de seguridad. El mecanismo de seguridad por omisin es CLEAR_TEXT_PASSWORD_SECURITY. Si el servidor no admite CLEAR_TEXT_PASSWORD_SECURITY pero s admite ENCRYPTED_USER_AND_PASSWORD_SECURITY, el IBM Data Server Driver para JDBC y SQLJ actualiza el mecanismo de seguridad a
IBM Data Server Driver para JDBC y SQLJ para IDS

1-51

ENCRYPTED_USER_AND_PASSWORD_SECURITY y trata de conectarse al servidor. Cualquier otra discrepancia en el soporte del mecanismo de seguridad entre el solicitante y el servidor da como resultado un error.
Tabla 1-8. Mecanismos de seguridad soportados por el IBM Data Server Driver para JDBC y SQLJ Mecanismo de seguridad ID de usuario y contrasea ID de usuario solamente ID de usuario y contrasea cifrada ID de usuario cifrado ID de usuario cifrado y contrasea cifrada Valor de la propiedad securityMechanism DB2BaseDataSource.CLEAR_TEXT_PASSWORD_SECURITY DB2BaseDataSource.USER_ONLY_SECURITY DB2BaseDataSource.ENCRYPTED_PASSWORD_SECURITY DB2BaseDataSource.ENCRYPTED_USER_ONLY_SECURITY DB2BaseDataSource.ENCRYPTED_USER_AND_PASSWORD_SECURITY

ID de usuario cifrado y datos cifrados DB2BaseDataSource.ENCRYPTED_USER_AND_DATA_SECURITY sensibles a la seguridad ID de usuario cifrado, contrasea cifrada y datos cifrados sensibles a la seguridad Kerberos Plugin DB2BaseDataSource.ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY

DB2BaseDataSource.KERBEROS_SECURITY DB2BaseDataSource.PLUGIN_SECURITY

Seguridad basada en ID de usuario y contrasea cuando se utiliza IBM Data Server Driver para JDBC y SQLJ
Cuando se utiliza IBM Data Server Driver para JDBC y SQLJ, uno de los mtodos de seguridad disponibles es la seguridad basada en ID de usuario y contrasea. Para especificar la seguridad basada en ID de usuario y contrasea para una conexin JDBC, utilice una de las tcnicas siguientes. Para la interfaz DriverManager: puede especificar el ID de usuario y la contrasea directamente en la invocacin de DriverManager.getConnection. Por ejemplo:
import ... String String String java.sql.*; // Base JDBC

id = "dbadm"; // Definir ID de usuario pw = "dbadm"; // Definir contrasea url = "jdbc:ids://mvs1.sj.ibm.com:5021/san_jose"; // Establecer URL para fuente de datos

Connection con = DriverManager.getConnection(url, id, pw); // Crear conexin

Otro mtodo consiste en definir el ID de usuario y la contrasea directamente en la serie de caracteres del URL. Por ejemplo:
import java.sql.*; // Base JDBC ... String url = "jdbc:ids://mvs1.sj.ibm.com:5021/san_jose:user=dbadm;password=dbadm;"; // Establecer URL para fuente de datos Connection con = DriverManager.getConnection(url); // Crear conexin

Como alternativa, puede establecer el ID de usuario y la contrasea definiendo las propiedades user y password en un objeto Properties, y luego invocar la modalidad del mtodo getConnection que hace uso del objeto Properties como parmetro.

1-52

IBM Data Server Driver para JDBC y SQLJ para IDS

Opcionalmente, puede definir la propiedad securityMechanism para indicar que est utilizando la seguridad basada en un ID de usuario y contrasea. Por ejemplo:
import java.sql.*; import com.ibm.db2.jcc.*; // JDBC base // Implementacin de IBM Data Server // Driver para JDBC y SQLJ de JDBC

... Properties properties = new java.util.Properties(); // Crear objeto Properties properties.put("user", "dbadm"); // Definir ID de usuario para conexin properties.put("password", "dbadm"); // Definir contrasea para conexin properties.put("securityMechanism", new String("" + com.ibm.db2.jcc.DB2BaseDataSource.CLEAR_TEXT_PASSWORD_SECURITY + "")); // Establecer mecanismo de seguridad como // basado en ID de usuario y contrasea String url = "jdbc:ids://mvs1.sj.ibm.com:5021/san_jose"; // Establecer URL para fuente de datos Connection con = DriverManager.getConnection(url, properties); // Crear conexin

Para la interfaz DataSource: puede especificar el ID de usuario y la contrasea directamente en la invocacin de DataSource.getConnection. Por ejemplo:
import java.sql.*; import com.ibm.db2.jcc.*; // JDBC base // Implementacin de IBM Data Server // Driver para JDBC y SQLJ de JDBC

... Context ctx=new InitialContext(); // Crear contexto para JNDI DataSource ds=(DataSource)ctx.lookup("jdbc/sampledb"); // Obtener objeto DataSource String id = "dbadm"; // Definir ID de usuario String pw = "dbadm"; // Definir contrasea Connection con = ds.getConnection(id, pw); // Crear conexin

Como alternativa, si crea y despliega el objeto DataSource, puede establecer el ID de usuario y la contrasea invocando los mtodos DataSource.setUser y DataSource.setPassword despus de crear el objeto DataSource. Opcionalmente, puede invocar el mtodo DataSource.setSecurityMechanism para indicar que est utilizando la seguridad basada en un ID de usuario y contrasea. Por ejemplo:
... com.ibm.db2.jcc.DB2SimpleDataSource ds = // Crear objeto DB2SimpleDataSource new com.ibm.db2.jcc.DB2SimpleDataSource(); ds.setDriverType(4); // Establecer tipo de controlador ds.setDatabaseName("san_jose"); // Establecer ubicacin ds.setServerName("mvs1.sj.ibm.com"); // Establecer nombre de servidor ds.setPortNumber(5021); // Establecer nmero de puerto ds.setUser("dbadm"); // Establecer ID de usuario ds.setPassword("dbadm"); // Establecer contrasea ds.setSecurityMechanism( com.ibm.db2.jcc.DB2BaseDataSource.CLEAR_TEXT_PASSWORD_SECURITY); // Establecer mecanismo de seguridad como // basado en ID de usuario y contrasea

Seguridad mediante los ID de usuario cuando se utiliza IBM Data Server Driver para JDBC y SQLJ
Cuando se utiliza IBM Data Server Driver para JDBC y SQLJ, uno de los mtodos de seguridad disponibles es la seguridad mediante los ID de usuario. Para especificar la seguridad basada en un ID de usuario para una conexin JDBC, utilice una de las tcnicas siguientes.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-53

Para la interfaz DriverManager: establezca el ID de usuario y el mecanismo de seguridad definiendo las propiedades user y securityMechanism en un objeto Properties, y luego invoque la modalidad del mtodo getConnection que hace uso del objeto Properties como parmetro. Por ejemplo:
import java.sql.*; import com.ibm.db2.jcc.*; // // // // JDBC base Implementacin de IBM Data Server Driver para JDBC y SQLJ de JDBC

... Properties properties = new Properties(); // Crear un objeto Properties properties.put("user", "db2adm"); // Definir ID de usuario para la conexin properties.put("securityMechanism", new String("" + com.ibm.db2.jcc.DB2BaseDataSource.USER_ONLY_SECURITY + "")); // Establecer mecanismo de seguridad // en ID de usuario solamente String url = "jdbc:ids://mvs1.sj.ibm.com:5021/san_jose"; // Establecer URL para fuente de datos Connection con = DriverManager.getConnection(url, properties); // Crear la conexin

Para la interfaz DataSource: si crea y despliega el objeto DataSource, establezca el ID de usuario y el mecanismo de seguridad invocando los mtodos DataSource.setUser y DataSource.setSecurityMechanism despus de crear el objeto DataSource. Por ejemplo:
import java.sql.*; import com.ibm.db2.jcc.*; // // // // Base JDBC Implementacin de IBM Data Server Driver para JDBC y SQLJ de JDBC

... com.ibm.db2.jcc.DB2SimpleDataSource db2ds = new com.ibm.db2.jcc.DB2SimpleDataSource(); // Crear objeto DB2SimpleDataSource db2ds.setDriverType(4); // Definir tipo de controlador db2ds.setDatabaseName("san_jose"); // Definir la ubicacin db2ds.setServerName("mvs1.sj.ibm.com"); // Establecer nombre de servidor db2ds.setPortNumber(5021); // Definir nmero de puerto db2ds.setUser("db2adm"); // Definir ID de usuario db2ds.setSecurityMechanism( com.ibm.db2.jcc.DB2BaseDataSource.USER_ONLY_SECURITY); // Establecer mecanismo de seguridad // slo de ID de usuario

Seguridad por contrasea cifrada, seguridad por ID de usuario cifrado o seguridad por ID de usuario cifrado y contrasea cifrada cuando se utiliza IBM Data Server Driver para JDBC y SQLJ
IBM Data Server Driver para JDBC y SQLJ es compatible con la seguridad por contrasea cifrada, la seguridad por ID de usuario cifrado o la contrasea por ID de usuario cifrado y contrasea cifrada para acceder a fuentes de datos. Las conexiones con servidores IBM Informix Dynamic Server (IDS) pueden utilizar seguridad por contrasea cifrada o seguridad por ID de usuario cifrado y contrasea cifrada. Para la seguridad por contrasea cifrada o la seguridad por ID de usuario cifrado y contrasea cifrada, es necesario que IBM Java Cryptography Extension (ibmjceprovidere.jar) est instalado en el cliente. Para especificar el mecanismo de seguridad basado en un ID de usuario cifrado o contrasea cifrada para una conexin JDBC, utilice una de las tcnicas siguientes.

1-54

IBM Data Server Driver para JDBC y SQLJ para IDS

Para la interfaz DriverManager: establezca el ID de usuario, la contrasea y el mecanismo de seguridad definiendo las propiedades user, password y securityMechanism en un objeto Properties, y luego invoque la modalidad del mtodo getConnection que hace uso del objeto Properties como parmetro. Por ejemplo, utilice un cdigo como el siguiente para establecer el mecanismo de seguridad basado en un ID de usuario y una contrasea cifrada:
import java.sql.*; import com.ibm.db2.jcc.*; // Base JDBC // Implementacin de IBM Data Server // Driver para JDBC y SQLJ de JDBC

... Properties properties = new Properties(); // Crear un objeto Properties properties.put("user", "dbadm"); // Definir ID de usuario para conexin properties.put("password", "dbadm"); // Definir contrasea para conexin properties.put("securityMechanism", new String("" + com.ibm.db2.jcc.DB2BaseDataSource.ENCRYPTED_PASSWORD_SECURITY + "")); // Establecer mecanismo de seguridad como // de ID usuario y contrasea cifrada String url = "jdbc:ids://mvs1.sj.ibm.com:5021/san_jose"; // Establecer URL para fuente de datos Connection con = DriverManager.getConnection(url, properties); // Crear la conexin

Para la interfaz DataSource: si crea y despliega el objeto DataSource, puede definir el ID de usuario, contrasea y mecanismo de seguridad invocando los mtodos DataSource.setUser, DataSource.setPassword y DataSource.setSecurityMechanism despus de crear el objeto DataSource. Por ejemplo, utilice un cdigo como el siguiente para establecer el mecanismo de seguridad basado en un ID de usuario cifrado y una contrasea cifrada:
import java.sql.*; import com.ibm.db2.jcc.*; // Base JDBC // Implementacin de IBM Data Server // Driver para JDBC y SQLJ de JDBC

... com.ibm.db2.jcc.DB2SimpleDataSource ds = new com.ibm.db2.jcc.DB2SimpleDataSource(); // Crear el objeto DataSource ds.setDriverType(4); // Establecer el tipo de controlador ds.setDatabaseName("san_jose"); // Establecer ubicacin ds.setServerName("mvs1.sj.ibm.com"); // Establecer nombre de servidor ds.setPortNumber(5021); // Establecer nmero de puerto ds.setUser("db2adm"); // Establecer el ID de usuario ds.setPassword("db2adm"); // Establecer contrasea ds.setSecurityMechanism( com.ibm.db2.jcc.DB2BaseDataSource.ENCRYPTED_PASSWORD_SECURITY); // Establecer mecanismo de seguridad como // de ID usuario y contrasea cifrada

Diagnstico de problemas con IBM Data Server Driver para JDBC y SQLJ
Para obtener datos para diagnosticar problemas de JDBC mediante IBM Data Server Driver para JDBC y SQLJ, recoja datos de rastreo y ejecute programas de utilidad para formatear los datos de rastreo. Debe ejecutar los programas de utilidad de rastreo y diagnstico slo bajo la direccin del soporte de software de IBM.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-55

Recogida de datos de rastreo de JDBC


Utilice uno de los procedimientos siguientes para iniciar el rastreo: Procedimiento 1: Para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4, el mtodo recomendado es iniciar el rastreo estableciendo la propiedad db2.jcc.override.traceFile o la propiedad db2.jcc.override.traceDirectory en el archivo de propiedades de configuracin de IBM Data Server Driver para JDBC y SQLJ. Procedimiento 2: 1. Si utiliza la interfaz DataSource para conectar con una fuente de datos, invoque el mtodo DB2BaseDataSource.setTraceLevel para definir el tipo de rastreo que necesite. El nivel de rastreo por omisin es TRACE_ALL. Consulte Propiedades de IBM Data Server Driver para JDBC y SQLJ para obtener informacin sobre cmo especificar ms de un tipo de rastreo. 2. Invoque el mtodo DB2BaseDataSource.setJccLogWriter para especificar el destino del rastreo y activar el rastreo. Procedimiento 3: Si utiliza la interfaz DataSource para conectar con una fuente de datos, invoque el mtodo javax.sql.DataSource.setLogWriter para activar el rastreo. Con este mtodo, TRACE_ALL es el nico nivel de rastreo disponible. Si utiliza la interfaz DriverManager para conectar con una fuente de datos, lleve a cabo el procedimiento siguiente para iniciar el rastreo: 1. Invoque el mtodo DriverManager.getConnection con la propiedad traceLevel establecida en el parmetro info o en el parmetro url para el tipo de rastreo que necesita. El nivel de rastreo por omisin es TRACE_ALL. Consulte Propiedades de IBM Data Server Driver para JDBC y SQLJ para obtener informacin sobre cmo especificar ms de un tipo de rastreo. 2. Invoque el mtodo DriverManager.setLogWriter para especificar el destino del rastreo y activar el rastreo. Despus de que se establezca una conexin, puede desactivar el rastreo o volverlo a activar, cambiar el destino del rastreo o cambiar el nivel de rastreo mediante el mtodo DB2Connection.setJccLogWriter. Para desactivar el rastreo, establezca el valor de logWriter en null. La propiedad logWriter es un objeto de tipo java.io.PrintWriter. Si la aplicacin no puede manejar objetos java.io.PrintWriter, puede utilizar la propiedad traceFile para especificar el destino de la salida del rastreo. Para utilizar la propiedad traceFile, establezca la propiedad logWriter en null y establezca la propiedad traceFile con el nombre del archivo en que el controlador graba los datos del rastreo. Se tiene que poder grabar en este archivo y en el directorio en que reside. Si el archivo ya existe, el controlador lo sobregraba. Procedimiento 4: Si est utilizando la interfaz DriverManager, especifique las propiedades traceFile y traceLevel como parte del URL cuando cargue el controlador. Por ejemplo:
String url = "jdbc:ids://sysmvs1.stl.ibm.com:5021/san_jose" + ":traceFile=/u/db2p/jcctrace;" + "traceLevel=" + com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS + ";";

1-56

IBM Data Server Driver para JDBC y SQLJ para IDS

Procedimiento 5: Utilice mtodos DB2TraceManager. La clase DB2TraceManager proporciona la capacidad para suspender y reanudar el rastreo de cualquier tipo de programa de registro cronolgico. Ejemplo de inicio de un rastreo utilizando propiedades de configuracin: Para ver un ejemplo completo de cmo utilizar parmetros de configuracin para recoger datos de rastreo, consulte Ejemplo de utilizacin de propiedades de configuracin para iniciar un rastreo JDBC. Programa de rastreo de ejemplo: Para ver un ejemplo completo de un programa de rastreo que se ejecuta bajo IBM Data Server Driver para JDBC y SQLJ, vea Ejemplo de un programa de rastreo que se ejecuta bajo IBM Data Server Driver para JDBC y SQLJ.

Ejemplo de utilizacin de propiedades de configuracin para iniciar un rastreo de JDBC


Puede controlar el rastreo de aplicaciones JDBC sin modificar esas aplicaciones. Suponga que desea reunir datos de rastreo para un programa llamado Test.java, el cual utiliza el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4. Test.java no realiza ningn rastreo y no es recomendable modificar el programa. Por lo tanto, el rastreo se habilita mediante las propiedades de configuracin. Suponga que desea que la salida del rastreo tenga las caractersticas siguientes: v La informacin de rastreo de cada conexin del mismo DataSource se graba en un archivo de rastreo diferente. La salida se coloca en un directorio llamado /Trace. v El nombre de cada fichero de rastreo empieza por jccTrace1. v Si los archivos de rastreo que tienen los mismos nombres ya existen, los datos del rastreo se aadirn a stos. Aunque Test1.java no contenga ningn cdigo para llevar a cabo el rastreo, es recomendable definir las propiedades de configuracin de modo que si la aplicacin se modifica en el futuro para llevar a cabo el rastreo, los valores del programa prevalecern sobre los valores de las propiedades de configuracin. Para ello, utilice el conjunto de propiedades de configuracin que empiezan por db2.jcc, no por db2.jcc.override. Los valores de las propiedades de configuracin tienen el aspecto siguiente: v db2.jcc.traceDirectory=/Trace v db2.jcc.traceFile=jccTrace1 v db2.jcc.traceFileAppend=true Es recomendable que los valores del rastreo se apliquen solamente al programa autnomo denominado Test1.java. Por lo tanto, cree un archivo con dichos valores y, a continuacin, haga referencia al archivo al invocar el programa de Java especificando la opcin -Ddb2.jcc.propertiesFile. Suponga que el archivo que contiene los valores es /Test/jcc.properties. Para habilitar el rastreo al ejecutar Test1.java, deber emitir un mandato como el siguiente:
java -Ddb2.jcc.propertiesFile=/Test/jcc.properties Test1

Suponga que Test1.java crea dos conexiones para un DataSource. El programa no define ningn objeto logWriter; por lo tanto, el controlador crea un objeto logWriter global para la salida del rastreo. Cuando el programa finaliza, los archivos siguientes contienen los datos del rastreo:
IBM Data Server Driver para JDBC y SQLJ para IDS

1-57

v /Trace/jccTrace1_global_0 v /Trace/jccTrace1_global_1

Ejemplo de un programa de rastreo que se ejecuta bajo IBM Data Server Driver para JDBC y SQLJ
Puede ser conveniente escribir una clase individual que incluya mtodos para realizar rastreos bajo la interfaz DriverManager as como la interfaz DataSource. El ejemplo siguiente muestra una clase con esas caractersticas. El ejemplo utiliza IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4.
Figura 1-21. Ejemplo de rastreo ejecutado bajo IBM Data Server Driver para JDBC y SQLJ public class TraceExample { public static void main(String[] args) { sampleConnectUsingSimpleDataSource(); sampleConnectWithURLUsingDriverManager(); } private static void sampleConnectUsingSimpleDataSource() { java.sql.Connection c = null; java.io.PrintWriter printWriter = new java.io.PrintWriter(System.out, true); // Imprime en consola, true significa // desecho automtico para // no perder rastreo try { javax.sql.DataSource ds = new com.ibm.db2.jcc.DB2SimpleDataSource(); ((com.ibm.db2.jcc.DB2BaseDataSource) ds).setServerName("sysmvs1.stl.ibm.com"); ((com.ibm.db2.jcc.DB2BaseDataSource) ds).setPortNumber(5021); ((com.ibm.db2.jcc.DB2BaseDataSource) ds).setDatabaseName("san_jose"); ((com.ibm.db2.jcc.DB2BaseDataSource) ds).setDriverType(4); ds.setLogWriter(printWriter); // Esto activa el rastreo

// Refinar el nivel de detalle del rastreo ((com.ibm.db2.jcc.DB2BaseDataSource) ds). setTraceLevel(com.ibm.db2.jcc.DB2SimpleDataSource.TRACE_CONNECTS | com.ibm.db2.jcc.DB2SimpleDataSource.TRACE_DRDA_FLOWS); // Esta peticin de conexin se rastrear utilizando el nivel de rastreo // TRACE_CONNECTS | TRACE_DRDA_FLOWS c = ds.getConnection("myname", "mypass"); // Cambiar el nivel de rastreo a TRACE_ALL // para todas las peticiones subsiguientes de la conexin ((com.ibm.db2.jcc.DB2Connection) c).setJccLogWriter(printWriter, com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL); // La sentencia INSERT siguiente se rastrea // utilizando el nivel de rastreo TRACE_ALL java.sql.Statement s1 = c.createStatement(); s1.executeUpdate("INSERT INTO sampleTable(sampleColumn) VALUES(1)"); s1.close(); // El cdigo siguiente inhabilita todo el rastreo de la conexin ((com.ibm.db2.jcc.DB2Connection) c).setJccLogWriter(null); // La sentencia INSERT siguiente no se rastrea

1-58

IBM Data Server Driver para JDBC y SQLJ para IDS

java.sql.Statement s2 = c.createStatement(); s2.executeUpdate("INSERT INTO sampleTable(sampleColumn) VALUES(1)"); s2.close(); c.close(); } catch(java.sql.SQLException e) { com.ibm.db2.jcc.DB2ExceptionFormatter.printTrace(e, printWriter, "[TraceExample]"); } finally { cleanup(c, printWriter); printWriter.flush(); } } // // // // // Si el cdigo se ha ejecutado satisfactoriamente, la conexin ya debe estar cerrada. Comprobar si lo est. Si la conexin est cerrada, simplemente finalice el programa. Si se ha producido un error, intente retrotraer (rollback) y cierre la conexin.

private static void cleanup(java.sql.Connection c, java.io.PrintWriter printWriter) { if(c == null) return; try { if(c.isClosed()) { printWriter.println("[TraceExample] " + "La conexin se ha cerrado satisfactoriamente"); return; } // Si se ha llegado aqu, algo ha ido mal. // Retrotraer y cerrar la conexin. printWriter.println("[TraceExample] Se est retrotrayendo la conexin"); try { c.rollback(); } catch(java.sql.SQLException e) { printWriter.println("[TraceExample] " + "Se captur la siguiente java.sql.SQLException al intentar retrotraer:"); com.ibm.db2.jcc.DB2ExceptionFormatter.printTrace(e, printWriter, "[TraceExample]"); printWriter.println("[TraceExample] " + "No se puede retrotraer la conexin"); } catch(java.lang.Throwable e) { printWriter.println("[TraceExample] Se captur " + "la siguiente java.lang.Throwable al intentar retrotraer:"); com.ibm.db2.jcc.DB2ExceptionFormatter.printTrace(e, printWriter, "[TraceExample]"); printWriter.println("[TraceExample] No se puede " + "roll back the connection"); } // Cierre la conexin printWriter.println("[TraceExample] Se est cerrando la conexin"); try { c.close(); } catch(java.sql.SQLException e) { printWriter.println("[TraceExample] Excepcin al " + "intentar cerrar la conexin"); printWriter.println("[TraceExample] Pueden producirse " + "puntos muertos si no se cierra la conexin.");
IBM Data Server Driver para JDBC y SQLJ para IDS

1-59

com.ibm.db2.jcc.DB2ExceptionFormatter.printTrace(e, printWriter, "[TraceExample]"); } catch(java.lang.Throwable e) { printWriter.println("[TraceExample] Se ha emitido Throwable " + "al intentar cerrar la conexin"); printWriter.println("[TraceExample] Pueden producirse " + "puntos muertos si no se cierra la conexin."); com.ibm.db2.jcc.DB2ExceptionFormatter.printTrace(e, printWriter, "[TraceExample]"); } } catch(java.lang.Throwable e) { printWriter.println("[TraceExample] No se puede " + "forzar el cierre de la conexin"); printWriter.println("[TraceExample] Pueden producirse " + "puntos muertos si no se cierra la conexin."); com.ibm.db2.jcc.DB2ExceptionFormatter.printTrace(e, printWriter, "[TraceExample]"); } } private static void sampleConnectWithURLUsingDriverManager() { java.sql.Connection c = null; // Esta vez, enviar printWriter a un archivo. java.io.PrintWriter printWriter = null; try { printWriter = new java.io.PrintWriter( new java.io.BufferedOutputStream( new java.io.FileOutputStream("/temp/driverLog.txt"), 4096), true); } catch(java.io.FileNotFoundException e) { java.lang.System.err.println ("No se puede definir un transcriptor de impresin para el rastreo"); java.lang.System.err.flush(); return; } try { Class.forName("com.ibm.db2.jcc.DB2Driver"); } catch(ClassNotFoundException e) { printWriter.println("[TraceExample] " + "Conectividad de IBM Data Server Driver para JDBC y SQLJ tipo 4 " + "no est en classpath de la aplicacin. No se puede cargar el controlador."); printWriter.flush(); return; } // Este URL describe fuente de datos de destino para conectividad de tipo 4. // La propiedad traceLevel se establece mediante la sintaxis de URL y // el rastreo del controlador se dirige al archivo "/temp/driverLog.txt" // La propiedad traceLevel tiene un tipo int. Las constantes // com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS y // com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS representan // valores int. Estas constantes no se pueden usar directamente en el // primer parmetro getConnection. Resuelva las constantes a sus // valores int asignndolos a una variable. A continuacin utilice la // variable como el primer parmetro del mtodo getConnection. String databaseURL = "jdbc:ids://sysmvs1.stl.ibm.com:5021" + "/sample:traceFile=/temp/driverLog.txt;traceLevel=" + (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS | com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

1-60

IBM Data Server Driver para JDBC y SQLJ para IDS

// Definir otras propiedades java.util.Properties properties = new java.util.Properties(); properties.setProperty("user", "myname"); properties.setProperty("password", "mypass"); try { // Esta peticin de conexin se rastrear utilizando el nivel de rastreo // TRACE_CONNECTS | TRACE_DRDA_FLOWS c = java.sql.DriverManager.getConnection(databaseURL, properties); // Cambiar el nivel de rastreo para todas las peticiones posteriores // de la conexin por TRACE_ALL ((com.ibm.db2.jcc.DB2Connection) c).setJccLogWriter(printWriter, com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL); // La sentencia INSERT siguiente se rastrea // utilizando el nivel de rastreo TRACE_ALL java.sql.Statement s1 = c.createStatement(); s1.executeUpdate("INSERT INTO sampleTable(sampleColumn) VALUES(1)"); s1.close(); // Inhabilite todo el rastreo de la conexin ((com.ibm.db2.jcc.DB2Connection) c).setJccLogWriter(null); // El siguiente cdigo de insercin de SQL no se rastrea java.sql.Statement s2 = c.createStatement(); s2.executeUpdate("insert into sampleTable(sampleColumn) values(1)"); s2.close(); c.close(); } catch(java.sql.SQLException e) { com.ibm.db2.jcc.DB2ExceptionFormatter.printTrace(e, printWriter, "[TraceExample]"); } finally { cleanup(c, printWriter); printWriter.flush(); } } }

Supervisin del sistema para IBM Data Server Driver para JDBC y SQLJ
Para ayudarle a supervisar el rendimiento de sus aplicaciones mediante IBM Data Server Driver para JDBC y SQLJ, el controlador proporciona dos mtodos para recoger informacin sobre una conexin. Esa informacin es: Tiempo del controlador bsico La suma de los tiempos transcurridos de API supervisada que se recogieron mientras la supervisin del sistema estaba habilitada, en microsegundos. En general, solamente se supervisan las API que podran dar lugar a una interaccin de E/S de red o del servidor de bases de datos. Tiempo de E/S de red La suma de los tiempos transcurridos de E/S de red que se recogieron mientras la supervisin del sistema estaba habilitada, en microsegundos. Tiempo del servidor Suma de todos los tiempos transcurridos notificados del servidor de bases
IBM Data Server Driver para JDBC y SQLJ para IDS

1-61

de datos que se han recogido mientras estaba habilitada la supervisin del sistema, expresado en microsegundos. Actualmente, las bases de datos IBM Informix Dynamic Server no son compatibles con esta funcin. Tiempo de la aplicacin Suma de los tiempos transcurridos de la aplicacin, controlador JDBC, E/S de red y servidor de bases de datos, expresado en milisegundos. Los dos mtodos son: v La interfaz DB2SystemMonitor v El nivel de rastreo TRACE_SYSTEM_MONITOR Para recoger datos de supervisin del sistema utilizando la interfaz DB2SystemMonitor siga estos pasos bsicos: 1. Invoque el mtodo DB2Connection.getDB2SystemMonitor para crear un objeto DB2SystemMonitor. 2. Invoque el mtodo DB2SystemMonitor.enable para habilitar el objeto DB2SystemMonitor para la conexin. 3. Invoque el mtodo DB2SystemMonitor.start para iniciar la supervisin del sistema. 4. Cuando la actividad que supervisar se complete, invoque DB2SystemMonitor.stop para detener la supervisin del sistema. 5. Invoque los mtodos DB2SystemMonitor.getCoreDriverTimeMicros, DB2SystemMonitor.getNetworkIOTimeMicros, DB2SystemMonitor.getServerTimeMicros o DB2SystemMonitor.getApplicationTimeMillis para recuperar los datos del tiempo transcurrido. Por ejemplo, el cdigo siguiente demuestra cmo recoger cada tipo de dato de tiempo transcurrido. Los nmeros que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.

1-62

IBM Data Server Driver para JDBC y SQLJ para IDS

import java.sql.*; import com.ibm.db2.jcc.*; public class TestSystemMonitor { public static void main(String[] args) { String url = "jdbc:ids://sysmvs1.svl.ibm.com:5021/san_jose"; String user = "db2adm"; String password = "db2adm"; try { // Cargar IBM Data Server Driver para JDBC y SQLJ Class.forName("com.ibm.db2.jcc.DB2Driver"); System.out.println("**** Controlador JDBC cargado"); // Crear conexin utilizando IBM Data Server Driver para JDBC y SQLJ Connection conn = DriverManager.getConnection (url,user,password); // Confirmar los cambios manualmente conn.setAutoCommit(false); System.out.println("**** Creada una conexin JDBC con la fuente de datos"); DB2SystemMonitor systemMonitor = 1 ((DB2Connection)conn).getDB2SystemMonitor(); systemMonitor.enable(true); 2 systemMonitor.start(DB2SystemMonitor.RESET_TIMES); 3 Statement stmt = conn.createStatement(); int numUpd = stmt.executeUpdate( "UPDATE EMPLOYEE SET PHONENO=4657 WHERE EMPNO=000010"); systemMonitor.stop(); 4 System.out.println("Tiempo transcurrido de servidor (microsegundos)=" + systemMonitor.getServerTimeMicros()); 5 System.out.println("Tiempo transcurrido de E/S de red (microsegundos)=" + systemMonitor.getNetworkIOTimeMicros()); System.out.println("Tiempo transcurrido de controlador bsico (microsegundos)=" + systemMonitor.getCoreDriverTimeMicros()); System.out.println("Tiempo transcurrido de aplicacin (milisegundos)=" + systemMonitor.getApplicationTimeMillis()); conn.rollback(); stmt.close(); conn.close(); } // Manejar los errores catch (ClassNotFoundException e) { System.err.println("No se puede cargar el controlador, " + e); } catch (SQLException e) { System.out.println("SQLException: " + e); e.printStackTrace(); } } } Figura 1-22. Ejemplo de utilizacin de mtodos DB2SystemMonitor para recoger datos de supervisin del sistema

Para recoger informacin de supervisin del sistema utilizando el mtodo de rastreo: Inicie un rastreo JDBC, utilizando propiedades de configuracin o las propiedades Connection o DataSource. Incluya TRACE_SYSTEM_MONITOR al establecer la propiedad traceLevel. Por ejemplo:
String url = "jdbc:ids://sysmvs1.stl.ibm.com:5021/san_jose" + ":traceFile=/u/db2p/jcctrace;" + "traceLevel=" + com.ibm.db2.jcc.DB2BaseDataSource.TRACE_SYSTEM_MONITOR + ";";

IBM Data Server Driver para JDBC y SQLJ para IDS

1-63

Los registros de rastreo con informacin de supervisin del sistema son parecidos a este:
[jcc][SystemMonitor:start] ... [jcc][SystemMonitor:stop] core: 565.67ms | network: 211.695ms | server: 207.771ms

Java 2 Platform, Enterprise Edition


Java 2 Platform Enterprise Edition (J2EE) reduce el coste y la complejidad de desarrollar estos servicios de varios niveles, lo que da lugar a servicios que se pueden desplegar rpidamente y se pueden mejorar fcilmente segn los requisitos de la empresa. En el entorno empresarial global actual, las organizaciones tienen que ampliar su alcance, reducir sus costes y reducir sus tiempos de respuesta, proporcionando servicios a los que puedan acceder fcilmente sus clientes, empleados, proveedores y otros socios empresariales. Estos servicios deben tener las siguientes caractersticas: v Altamente disponibles, para ajustarse a los requisitos del entorno empresarial global v Seguros, para proteger la privacidad de los usuarios y la integridad de la empresa v Fiables y escalables, de modo que las transacciones empresariales resulten precisas y se procesen con rapidez En la mayora de los casos, estos servicios se suministran con la ayuda de aplicaciones de varios enlaces en las que cada enlace tiene un objetivo especfico. J2EE consigue estas ventajas definiendo una arquitectura estndar que se suministra como los siguientes elementos: v J2EE Application Model, un modelo de aplicacin estndar para desarrollar servicios de cliente ligero de varios niveles v J2EE Platform, una plataforma estndar para albergar aplicaciones de J2EE v J2EE Compatibility Test Suite para verificar que un producto de la plataforma J2EE cumple con el estndar de dicha plataforma v J2EE Reference Implementation para demostrar las funciones de J2EE y para proporcionar una definicin operativa de la plataforma J2EE

Soporte para componentes de aplicacin de Java 2 Platform, Enterprise Edition


Java 2 Platform Enterprise Edition (J2EE) proporciona el entorno de tiempo de ejecucin para alojar aplicaciones J2EE. El entorno de tiempo de ejecucin define cuatro tipos de componentes de aplicacin a los que un producto J2EE debe dar soporte: v Los clientes de aplicaciones son programas de lenguaje de programacin Java que suelen ser programas GUI que se ejecutan en un sistema de escritorio. Los clientes de aplicaciones tienen acceso a todas las funciones del enlace medio de J2EE. v Los componentes applets y GUI que normalmente se ejecutan en un navegador web pero que se pueden ejecutar en otras aplicaciones o dispositivos que den soporte al modelo de programacin de applets.

1-64

IBM Data Server Driver para JDBC y SQLJ para IDS

v Los servlets, JavaServer Pages (JSP), filtros y receptores de sucesos de la web que se suelen ejecutar en un navegador web y que pueden responder a peticiones HTTP procedentes de clientes web. Los servlets, JSP y filtros se pueden utilizar para generar pginas HTML que constituyen la interfaz de usuario de una aplicacin. Tambin se pueden utilizar para generar XML o datos en otro formato que consumen otros componentes de la aplicacin. Los servlets, las pginas creadas con tecnologa JSP, los filtros y los receptores de sucesos de la web reciben conjuntamente en esta especificacin el nombre componentes de la web. Las aplicaciones web constan de componentes de la web y de otros datos como pginas HTML. v Los componentes Enterprise JavaBeans (EJB) se ejecutan en un entorno gestionado que da soporte a transacciones. Los Enterprise Beans suelen contener la lgica empresarial correspondiente a una aplicacin J2EE. Los componentes de aplicaciones listados anteriormente se pueden dividir en tres categoras, segn el modo en que se pueden desplegar y gestionar: v Componentes que se despliegan, gestionan y ejecutan en un servidor J2EE. v Componentes que se despliegan y gestionan en un servidor J2EE pero que se cargan en una mquina cliente y se ejecutan en la misma. v Componentes cuyo despliegue y gestin no estn completamente definidos por esta especificacin. Los clientes de aplicaciones pueden encontrarse en esta categora. El soporte de tiempo de ejecucin correspondiente a estos componentes se proporciona mediante contenedores.

Contenedores de Java 2 Platform Enterprise Edition


Un contenedor proporciona una vista federada de las API subyacentes de Java 2 Platform Enterprise Edition (J2EE) a los componentes de la aplicacin. Un producto J2EE tpico proporcionar un contenedor para cada tipo de componente de aplicacin: contenedor de clientes de la aplicacin, contenedor de applets, contenedor de web y contenedor de Enterprise Beans. Las herramientas de contenedor tambin comprenden los formatos de archivo para empaquetar los componentes de la aplicacin para su despliegue. La especificacin necesita que estos contenedores proporcionen un entorno de tiempo de ejecucin compatible con Java. Esta especificacin define un conjunto de servicios estndares a los que debe dar soporte cada producto J2EE. Estos servicios estndar son: v Servicio HTTP v Servicio HTTPS v API de transacciones Java v Mtodo de invocacin remota v IDL Java v API JDBC v Servicio de mensajes de Java v Java Naming and Directory Interface v JavaMail v Infraestructura de activacin de JavaBeans v API Java para el anlisis XML v Arquitectura de conectores v Servicio de autenticacin y autorizacin de Java

IBM Data Server Driver para JDBC y SQLJ para IDS

1-65

Servidor Java 2 Platform Enterprise Edition


Como elemento subyacente de un contenedor Java 2 Platform Enterprise Edition (J2EE) se encuentra el servidor del que forma parte el contenedor. Normalmente, un proveedor de productos J2EE implementa la funcionalidad de lado del servidor de J2EE, mientras que la funcionalidad de cliente de J2EE se crea en tecnologa J2SE. IBM WebSphere Application Server es un servidor que cumple las especificaciones de J2EE.

Requisitos de la base de datos de Java 2 Platform Enterprise Edition


Java 2 Platform Enterprise Edition necesita una base de datos a la que se pueda acceder a travs de la API JDBC para el almacenamiento de los datos de la empresa. Se puede acceder a la base de datos desde componentes de la web, Enterprise Beans y componentes cliente de la aplicacin. No hace falta que se pueda acceder a la base de datos desde los applets.

Java Naming and Directory Interface (JNDI)


JNDI permite que las aplicaciones basadas en la plataforma Java accedan a varios servicios de asignacin de nombres y de directorio. Forma parte del conjunto de interfaces de programacin de aplicaciones (API) de Java Enterprise. JNDI permite que los desarrolladores de aplicaciones creen aplicaciones portables que estn habilitadas para varios servicios de nombres y de directorio, tales como sistemas de archivos; servicios de directorio tales como Lightweight Directory Access Protocol (LDAP) y Novell Directory Services, y sistemas de objetos distribuidos tales como Common Object Request Broker Architecture (CORBA), Java Remote Method Invocation (RMI), y Enterprise JavaBeans (EJB). La API JNDI tiene dos partes: una interfaz de nivel de aplicacin que utilizan los componentes de la aplicacin para acceder a los servicios de nomenclatura y directorio y una interfaz de proveedor de servicios para conectar con un proveedor de un servicio de nomenclatura y directorio.

Gestin de transacciones Java


Java 2 Platform Enterprise Edition (J2EE) simplifica la programacin de aplicaciones para la gestin de transacciones distribuidas. J2EE incluye soporte para transacciones distribuidas a travs de dos especificaciones, API de transacciones Java (JTA) y Servicio de transacciones Java (JTS). JTA es una API de alto nivel, independiente de la implementacin e independiente del protocolo, que permite a las aplicaciones y a los servidores de aplicaciones acceder a transacciones. Adems, JTA est siempre habilitada. El IBM Data Server Driver para JDBC y SQLJ y el Controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows aplican las especificaciones JTA y JTS.

1-66

IBM Data Server Driver para JDBC y SQLJ para IDS

Para el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4, se da soporte a las transacciones distribuidas en los servidores DB2 Database para Linux, UNIX y Windows, DB2 para z/OS y DB2 para i5/OS. JTA especifica interfaces Java estndares entre un gestor de transacciones y las partes que intervienen en un sistema de transacciones distribuidas: el gestor de recursos, el servidor de aplicaciones y las aplicaciones transaccionales. JTS especifica la implementacin de un Gestor de transacciones que da soporte a JTA e implementa la correlacin Java de la especificacin OMG Object Transaction Service (OTS) 1.1 al nivel que hay bajo la API. JTS propaga transacciones mediante IIOP. JTA y JTS permiten que los servidores J2EE de aplicaciones J2EE eviten al desarrollador de componentes las tareas de gestin de transacciones. Los programadores pueden definir las propiedades transaccionales de la tecnologa EJB basndose en componentes durante el diseo o despliegue mediante sentencias declarativas en el descriptor de despliegue. El servidor de aplicaciones se hace cargo de la responsabilidad de la gestin de transacciones. En el entorno de IDS y WebSphere Application Server, WebSphere Application Server asume el rol de gestor de transacciones, y IDS acta como gestor de recursos. WebSphere Application Server implementa JTS y parte de JTA, y los controladores JDBC tambin implementan parte de JTA, por lo que WebSphere Application Server y IDS pueden proporcionar transacciones distribuidas coordinadas. No es necesario configurar IDS para que est habilitado para JTA en el entorno de WebSphere Application Server, pues los controladores JDBC detectan automticamente este entorno. El Controlador JDBC de DB2 de tipo 2 Driver proporciona estas dos clases de DataSource: v COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource v COM.ibm.db2.jdbc.DB2XADataSource El IBM Data Server Driver para JDBC y SQLJ proporciona estas dos clases DataSource: v com.ibm.db2.jcc.DB2ConnectionPoolDataSource v com.ibm.db2.jcc.DB2XADataSource WebSphere Application Server proporciona conexiones de uso compartido para bases de datos. Si la aplicacin intervendr en una transaccin distribuida, se debe utilizar la clase com.ibm.db2.jdbc.DB2XADataSource al definir fuentes de datos IDS dentro del WebSphere Application Server. Para conocer informacin detallada sobre cmo configurar el WebSphere Application Server con IDS, consulte el centro de informacin de WebSphere Application Server, situado en:
http://www.ibm.com/software/webservers/appserv/library.html

Ejemplo de una transaccin distribuida que utiliza mtodos de JTA


Normalmente las transacciones distribuidas suponen varias conexiones con una misma fuente de datos o con fuentes de datos diferentes, que pueden ser de fabricantes diversos.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-67

La mejor forma de mostrar la utilizacin de transacciones distribuidas es compararlas con transacciones locales. En las transacciones locales, una aplicacin JDBC confirma los cambios hechos en una base de datos e indica el final de una unidad de trabajo en una de las formas siguientes: v Invocando los mtodos Connection.commit o Connection.rollback despus de ejecutar una o ms sentencias de SQL v Invocando el mtodo Connection.setAutoCommit(true) al inicio de la aplicacin para que los cambios se confirmen despus de cada sentencia de SQL La Figura 1-23 muestra el cdigo mediante el que se ejecutan transacciones locales.
con1.setAutoCommit(false); // Desactivar la confirmacin automtica // Ejecutar sentencias de SQL ... con1.commit(); // Confirmar la transaccin // Ejecutar ms sentencias de SQL ... con1.rollback(); // Retrotraer la transaccin con1.setAutoCommit(true); // Permitir la confirmacin despus // de cada sentencia de SQL ... // Ejecutar ms sentencias de SQL, que se confirmarn // automticamente despus de cada sentencia de SQL. Figura 1-23. Ejemplo de transaccin local

En cambio, las aplicaciones que intervienen en transacciones distribuidas no pueden invocar los mtodos Connection.commit, Connection.rollback, ni Connection.setAutoCommit(true) dentro de la transaccin distribuida. En las transacciones distribuidas, los mtodos Connection.commit o Connection.rollback no indican lmites de transaccin. En lugar de ello, las aplicaciones dejan que el servidor de aplicaciones gestione los lmites de transaccin. La Figura 1-24 muestra una aplicacin que utiliza transacciones distribuidas. Mientras se ejecuta el cdigo mostrado en el ejemplo, el servidor de aplicaciones tambin est ejecutando otros EJB que forman parte de la misma transaccin distribuida. Cuando todos los EJB han invocado utx.commit(), el servidor de aplicaciones confirma la transaccin distribuida completa. Si cualquiera de los EJB no se ejecuta satisfactoriamente, el servidor de aplicaciones retrotrae todo el trabajo hecho por todos los EJB que estn asociados a la transaccin distribuida.
javax.transaction.UserTransaction utx; // Utilice el mtodo begin sobre un objeto UserTransaction // para indicar el inicio de una transaccin distribuida. utx.begin(); ... // Ejecute sentencias de SQL con un objeto Connection. // No invoque los mtodos commit ni rollback de Connection. ... // Utilice el mtodo commit sobre el objeto UserTransaction // para hacer que se confirmen todas las ramas de transaccin // e indicar el final de la transaccin distribuida. utx.commit(); ... Figura 1-24. Ejemplo de transaccin distribuida cuando se utiliza un servidor de aplicaciones

La Figura 1-25 en la pgina 1-69 muestra un programa que utiliza mtodos de JTA para ejecutar una transaccin distribuida. Este programa acta como gestor de

1-68

IBM Data Server Driver para JDBC y SQLJ para IDS

transacciones y aplicacin transaccional. Dos conexiones con dos fuentes de datos diferentes ejecutan tareas de SQL dentro de una sola transaccin distribuida.
Figura 1-25. Ejemplo de transaccin distribuida que hace uso de la JTA class XASample { javax.sql.XADataSource xaDS1; javax.sql.XADataSource xaDS2; javax.sql.XAConnection xaconn1; javax.sql.XAConnection xaconn2; javax.transaction.xa.XAResource xares1; javax.transaction.xa.XAResource xares2; java.sql.Connection conn1; java.sql.Connection conn2; public static void main (String args []) throws java.sql.SQLException { XASample xat = new XASample(); xat.runThis(args); } // En calidad de gestor de transacciones, este programa proporciona // el ID de transaccin global y el calificador de rama. El ID de // transaccin global y el calificador de rama no deben ser iguales // entre s, y la combinacin formada por ambos debe ser exclusiva // para este gestor de transacciones. public void runThis(String[] args) { byte[] gtrid = new byte[] { 0x44, 0x11, 0x55, 0x66 }; byte[] bqual = new byte[] { 0x00, 0x22, 0x00 }; int rc1 = 0; int rc2 = 0; try { javax.naming.InitialContext context = new javax.naming.InitialContext(); /* * Observe que se utiliza javax.sql.XADataSource en lugar de una * implementacin de controlador especfica tal * como com.ibm.db2.jcc.DB2XADataSource. */ xaDS1 = (javax.sql.XADataSource)context.lookup("checkingAccounts"); xaDS2 = (javax.sql.XADataSource)context.lookup("savingsAccounts"); // XADatasource contiene el ID de usuario y la contrasea. // Obtener el objeto XAConnection de cada XADataSource xaconn1 = xaDS1.getXAConnection(); xaconn2 = xaDS2.getXAConnection(); // Obtener el objeto java.sql.Connection de cada XAConnection conn1 = xaconn1.getConnection(); conn2 = xaconn2.getConnection(); // Obtener el objeto XAResource de cada XAConnection xares1 = xaconn1.getXAResource(); xares2 = xaconn2.getXAResource(); // Cree el objeto Xid de la transaccin distribuida. // Este ejemplo utiliza la implementacin com.ibm.db2.jcc.DB2Xid // de la interfaz Xid. Este Xid puede ser utilizado con cualquier // controlador JDBC que d soporte a JTA. javax.transaction.xa.Xid xid1 = new com.ibm.db2.jcc.DB2Xid(100, gtrid, bqual); // Inicie la transaccin distribuida en las dos conexiones. // NO es necesario iniciar y finalizar las dos conexiones juntas.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-69

// Esto puede hacerse en hebras diferentes, junto con sus operaciones de SQL. xares1.start(xid1, javax.transaction.xa.XAResource.TMNOFLAGS); xares2.start(xid1, javax.transaction.xa.XAResource.TMNOFLAGS); ... // Ejecute las operaciones de SQL en la conexin 1. // Ejecute las operaciones de SQL en la conexin 2. ... // Ahora finalice la transaccin distribuida en las dos conexiones. xares1.end(xid1, javax.transaction.xa.XAResource.TMSUCCESS); xares2.end(xid1, javax.transaction.xa.XAResource.TMSUCCESS); // Si el trabajo de la conexin 2 se ha realizado en otra hebra, // es necesaria aqu una llamada a thread.join() para esperar // a que termine el trabajo de la conexin 2. try { // Ahora prepare ambas ramas de la transaccin distribuida. // Ambas ramas se deben preparar satisfactoriamente para // poder confirmar los cambios. // Si la transaccin distribuida falla, se emite una // excepcin XAException. rc1 = xares1.prepare(xid1); if(rc1 == javax.transaction.xa.XAResource.XA_OK) { // La preparacin fue satisfactoria. Prepare la segunda conexin rc2 = xares2.prepare(xid1); if(rc2 == javax.transaction.xa.XAResource.XA_OK) { // Ambas conexiones se prepararon satisfactoriamente // y ninguna de ella era de solo lectura. xares1.commit(xid1, false); xares2.commit(xid1, false); } else if(rc2 == javax.transaction.xa.XAException.XA_RDONLY) { // La segunda conexin es de solo lectura, por lo que // solo se confirma la primera conexin. xares1.commit(xid1, false); } } else if(rc1 == javax.transaction.xa.XAException.XA_RDONLY) { // El SQL de la primera conexin es de solo lectura // (tal como un SELECT). // La preparacin ha confirmado la conexin. Prepare la // segunda conexin. rc2 = xares2.prepare(xid1); if(rc2 == javax.transaction.xa.XAResource.XA_OK) { // La primera conexin es de solo lectura, pero la // segunda no lo es. // Confirme la segunda conexin. xares2.commit(xid1, false); } else if(rc2 == javax.transaction.xa.XAException.XA_RDONLY) { // Ambas conexiones son de solo lectura, y ambas // estn ya confirmadas, por lo que no es necesaria // ninguna otra accin. } } } catch (javax.transaction.xa.XAException xae) { // La transaccin distribuida ha fallado, // por lo que debe retrotraerla. // Notificar XAException para preparacin/confirmacin. System.out.println("Distributed transaction prepare/commit failed. " + "Rolling it back."); System.out.println("XAException error code = " + xae.errorCode); System.out.println("XAException message = " + xae.getMessage()); xae.printStackTrace(); try { xares1.rollback(xid1);

1-70

IBM Data Server Driver para JDBC y SQLJ para IDS

} catch (javax.transaction.xa.XAException xae1) { // Notificar error de la retrotraccin. System.out.println("distributed Transaction rollback xares1 failed"); System.out.println("XAException error code = " + xae1.errorCode); System.out.println("XAException message = " + xae1.getMessage()); } try { xares2.rollback(xid1); } catch (javax.transaction.xa.XAException xae2) { // Notificar error de la retrotraccin. System.out.println("distributed Transaction rollback xares2 failed"); System.out.println("XAException error code = " + xae2.errorCode); System.out.println("XAException message = " + xae2.getMessage()); } } try { conn1.close(); xaconn1.close(); } catch (Exception e) { System.out.println("Failed to close connection 1: " + e.toString()); e.printStackTrace(); } try { conn2.close(); xaconn2.close(); } catch (Exception e) { System.out.println("Failed to close connection 2: " + e.toString()); e.printStackTrace(); } } catch (java.sql.SQLException sqe) { System.out.println("SQLException caught: " + sqe.getMessage()); sqe.printStackTrace(); } catch (javax.transaction.xa.XAException xae) { System.out.println("XA error is " + xae.getMessage()); xae.printStackTrace(); } catch (javax.naming.NamingException nme) { System.out.println(" Naming Exception: " + nme.getMessage()); } } }

Recomendacin: Para lograr un mejor rendimiento, finalice una transaccin distribuida antes de iniciar otra transaccin distribuida o local.

Enterprise Java Beans


La arquitectura Enterprise Java Beans es una arquitectura de componentes para el desarrollo y el despliegue de aplicaciones de empresa distribuidas basadas en componentes.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-71

Las aplicaciones que se escriben utilizando la arquitectura Enterprise Java Beans se pueden escribir una sola vez y luego desplegar en cualquier plataforma servidor que sea compatible con la especificacin Enterprise Java Beans. Las aplicaciones Java 2 Platform, Enterprise Edition (J2EE) implementan componentes de empresa del lado del servidor mediante Enterprise Java Beans (EJB) que incluyen beans de sesin y beans de entidad. Los beans de sesin representan servicios de empresa y no se comparten entre usuarios. Los beans de entidad son objetos transaccionales distribuidos, de mltiples usuarios, que representan datos permanentes. Los lmites transaccionales de una aplicacin EJB se pueden definir especificando transacciones gestionadas por contenedor o gestionadas por bean. El programa de ejemplo AccessEmployee.ear utiliza Enterprise Java Beans para implementar una aplicacin J2EE para acceder a una fuente de datos. Encontrar este programa de ejemplo en el directorio SQLLIB/samples/websphere. La aplicacin de ejemplo EJB proporciona dos servicios de empresa. Un servicio permite al usuario acceder a informacin sobre un empleado (que est almacenada en la tabla EMPLOYEE de la base de datos sample) mediante el nmero de empleado de dicho empleado. El otro servicio permite al usuario recuperar una lista de nmeros de empleado de modo que el usuario pueda obtener un nmero de empleado para utilizarlo para consultar datos del empleado. El ejemplo siguiente utiliza los EJB para implementar una aplicacin J2EE para acceder a una fuente de datos. En el ejemplo se utiliza la arquitectura Model-View-Controller (MVC), que es una arquitectura de GUI de uso habitual. Se utiliza la JSP para implementar la vista (el componente de presentacin). Un servlet acta como controlador en el ejemplo. El servlet controla el flujo de trabajo y delega la peticin del usuario al modelo, que se implementa mediante los EJB. El componente modelo del ejemplo consta de dos EJB: un bean de sesin y un bean de entidad. El bean de permanencia gestionada por contenedor (CMP), Employee, representa los objetos transaccionales distribuidos que representan los datos permanentes de la tabla EMPLOYEE de la base de datos sample. El trmino permanencia gestionada por contenedor significa que el contenedor EJB maneja todo el acceso a base de datos que necesita el bean de entidad. El cdigo del bean no contiene ninguna llamada de acceso a base de datos (SQL). Como resultado, el cdigo del bean no est enlazado a ningn mecanismo de almacenamiento permanente especfico (base de datos). El bean de sesin, AccessEmployee, acta como fachada del bean de entidad y proporciona una estrategia uniforme de acceso de clientes. Este diseo de fachada reduce el trfico en la red entre el cliente EJB y el bean de entidad y resulta ms eficiente en transacciones distribuidas que cuando el cliente EJB accede al bean de entidad directamente. El acceso al servidor de bases de datos se puede proporcionar desde el bean de sesin o el bean de entidad. Los dos servicios de la aplicacin de ejemplo muestran ambos mtodos para acceder al servidor de bases de datos. En el primer servicio, se utiliza el bean de entidad:
//==================================================== // Este mtodo devuelve informacin sobre un empleado // mediante la interaccin con el bean de entidad // identificado por el nmero de empleado proporcionado public EmployeeInfo getEmployeeInfo(String empNo) throws java.rmi.RemoteException } Employee employee = null; try }

1-72

IBM Data Server Driver para JDBC y SQLJ para IDS

employee = employeeHome.findByPrimaryKey(new EmployeeKey(empNo)); EmployeeInfo empInfo = new EmployeeInfo(empNo); //establecer la informacin del empleado en el objeto de valor dependiente empInfo.setEmpno(employee.getEmpno()); empInfo.setFirstName (employee.getFirstName()); empInfo.setMidInit(employee.getMidInit()); empInfo.setLastName(employee.getLastName()); empInfo.setWorkDept(employee.getWorkDept()); empInfo.setPhoneNo(employee.getPhoneNo()); empInfo.setHireDate(employee.getHireDate()); empInfo.setJob(employee.getJob()); empInfo.setEdLevel(employee.getEdLevel()); empInfo.setSex(employee.getSex()); empInfo.setBirthDate(employee.getBirthDate()); empInfo.setSalary(employee.getSalary()); empInfo.setBonus(employee.getBonus()); empInfo.setComm(employee.getComm()); return empInfo; } catch (java.rmi.RemoteException rex) { ......

En el segundo servicio, que muestra nmeros de empleado, el bean de sesin, AccessEmployee, accede directamente a la tabla de base de datos.
/============================================= * Obtener lista de nmeros de empleado. * @return Collection */ public Collection getEmpNoList() { ResultSet rs = null; PreparedStatement ps = null; Vector list = new Vector(); DataSource ds = null; Connection con = null; try { ds = getDataSource(); con = ds.getConnection(); String schema = getEnvProps(DBschema); String query = "Select EMPNO from " + schema + ".EMPLOYEE"; ps = con.prepareStatement(query); ps.executeQuery(); rs = ps.getResultSet(); EmployeeKey pk; while (rs.next()) { pk = new EmployeeKey(); pk.employeeId = rs.getString(1); list.addElement(pk.employeeId); } rs.close(); return list;

Soporte para sondeo de conexiones JDBC y SQLJ


La agrupacin de conexiones forma parte del soporte DataSource de JDBC y est soportada por el IBM Data Server Driver para JDBC y SQLJ. El IBM Data Server Driver para JDBC y SQLJ ofrece una fbrica de conexiones agrupadas que utilizan el servidor WebSphere Application Server u otros

IBM Data Server Driver para JDBC y SQLJ para IDS

1-73

servidores de aplicaciones. En realidad, el servidor de aplicaciones realiza la agrupacin. La agrupacin de conexiones es completamente transparente para las aplicaciones JDBC o SQLJ. La agrupacin de conexiones es un sistema para colocar en antememoria conexiones fsicas con fuentes de datos, que son equivalentes a sesiones (IDS) de IBM Informix Dynamic Server. Con la agrupacin de conexiones, las conexiones de sesin se reutilizan. Cuando JDBC reutiliza conexiones con fuentes de datos, se minimizan las operaciones costosas necesarias para la creacin y el cierre posterior de objetos java.sql.Connection. Cuando no se utiliza la agrupacin de conexiones, cada objeto java.sql.Connection representa una nica conexin fsica a nivel de sesin con la fuente de datos, que no se vuelve a utilizar. Cuando la aplicacin establece una conexin con una fuente de datos, IDS crea una conexin fsica nueva con la fuente de datos. Cuando la aplicacin llama al mtodo java.sql.Connection.close, IDS finaliza la conexin fsica con la fuente de datos. Las agrupaciones de conexiones pueden ser homogneas o heterogneas. Con una agrupacin homognea, todos los objetos Connection que provengan de la misma agrupacin de conexiones deben tener las mismas propiedades. El primer objeto Connection lgico que se crea con DataSource tiene las propiedades que se han definido para DataSource. No obstante, una aplicacin puede cambiar dichas propiedades. Cuando se devuelve un objeto Connection a la agrupacin de conexiones, un servidor de aplicaciones o un mdulo de agrupacin deber restaurar los valores originales de las propiedades. Sin embargo, es posible que un servidor de aplicaciones o un mdulo de agrupacin no pueda restaurar las propiedades modificadas. El controlador JDBC no modifica las propiedades. Por lo tanto, en funcin del diseo del servidor de aplicaciones o del mdulo de agrupacin, es posible que las propiedades de un objeto Connection lgico reutilizado sean las mismas que las que se han definido para DataSource o que sean propiedades diferentes. Con la agrupacin heterognea, los objetos Connection con propiedades diferentes pueden compartir la misma agrupacin de conexiones.

Informacin de consulta sobre JDBC y SQLJ


Las implementaciones de JDBC y SQLJ para IBM proporcionan varias interfaces de programacin de aplicaciones, propiedades y mandatos para desarrollar aplicaciones JDBC y SQLJ.

Tipos de datos que se correlacionan con tipos de datos de base de datos en aplicaciones Java
Para escribir programas JDBC y SQLJ que sean efectivos, es necesario que utilice las mejores correlaciones entre tipos de datos Java y tipos de datos de columnas de tabla. Las tablas siguientes resumen las correlaciones de tipos de datos Java con tipos de datos JDBC y tipos de datos de base de datos para un sistema DB2 Database para Linux, UNIX y Windows, DB2 para z/OS o IBM Informix Dynamic Server (IDS).

1-74

IBM Data Server Driver para JDBC y SQLJ para IDS

Tipos de datos para actualizar columnas de tabla


La tabla siguiente resume las correlaciones de tipos de datos Java con tipos de datos de base de datos para mtodos PreparedStatement.setXXX o ResultSet.updateXXX en programas JDBC. Cuando aparece listado ms de un tipo de datos de Java, el primer tipo de datos es el recomendado.
Tabla 1-9. Correlaciones de tipos de datos Java con tipos de datos de servidor de bases de datos para actualizar tablas de base de datos Tipo de datos de Java short short boolean, java.lang.Boolean int, java.lang.Integer int, java.lang.Integer long, java.lang.Long long, java.lang.Long float, java.lang.Float double, java.lang.Double java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String byte[] byte[] java.sql.Blob java.sql.Clob java.lang.Clob java.sql.Date java.sql.Time java.sql.Timestamp java.io.ByteArrayInputStream java.io.StringReader java.io.ByteArrayInputStream Tipo de datos de base de datos SMALLINT BOOLEAN BOOLEAN INTEGER SERIAL INT8 SERIAL8 SMALLFLOAT FLOAT DECIMAL(p,s)1 DECIMAL(p)2 DECIMAL3 MONEY(p,s)1 CHAR(n)4 NCHAR(n)4 VARCHAR(m,r)5 LVARCHAR(m,r)6 NVARCHAR(m,r)6 INTERVAL CLOB7 BYTE BLOB7 BLOB CLOB TEXT DATE DATETIME HOUR TO SECOND DATETIME YEAR TO FRACTION(5) BLOB CLOB CLOB

IBM Data Server Driver para JDBC y SQLJ para IDS

1-75

Tabla 1-9. Correlaciones de tipos de datos Java con tipos de datos de servidor de bases de datos para actualizar tablas de base de datos (continuacin) Tipo de datos de Java Notas: 1. p es la precisin decimal y s es la escala de la columna de tabla. 2. Para una base de datos compatible con el estndar ANSI, p es la precisin y la escala es 0. Para una base de datos que no es compatible con el estndar ANSI, si nicamente se especifica p, el tipo de datos es DECIMAL de coma flotante. 3. Para una base de datos compatible con el estndar ANSI, si no se especifican parmetros, la precisin es 16 y la escala es 0. Para una base de datos que no es compatible con el estndar ANSI, si no se especifican parmetros, el tipo es DECIMAL de coma flotante. 4. n<=32767. 5. 0<=r<=m<=255. 6. 0<=r<=m<=32739. 7. Esta correlacin solamente es vlida si el servidor de bases de datos puede determinar el tipo de datos de la columna. Tipo de datos de base de datos

Tipos de datos para recuperar datos de columnas de tabla


La tabla siguiente resume las correlaciones de tipos de datos DB2 o IDS con tipos de datos Java para mtodos ResultSet.getXXX en aplicaciones JDBC, y para iteradores en programas SQLJ. Esta tabla no lista los tipos de objetos de derivador numrico de Java, que se recuperan mediante ResultSet.getObject.
Tabla 1-10. Correlaciones de tipos de datos de servidor de bases de datos con tipos de datos Java para recuperar datos de tablas de servidor de bases de datos Tipo de datos de SQL SMALLINT Tipo de datos de Java o tipo de objeto Java recomendado short Otros tipos de datos Java soportados byte, int, long, float, double, java.math.BigDecimal, boolean, java.lang.String short short, byte, long, float, double, java.math.BigDecimal, boolean, java.lang.String short, byte, long, float, double, java.math.BigDecimal, boolean, java.lang.String int, short, byte, float, double, java.math.BigDecimal, boolean, java.lang.String int, short, byte, float, double, java.math.BigDecimal, boolean, java.lang.String long, int, short, byte, float, double, boolean, java.lang.String long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.lang.String long, int, short, byte, float, double, boolean, java.lang.String

BOOLEAN INTEGER

boolean int

SERIAL

int

INT8

long

SERIAL8

long

DECIMAL(p,s) DECIMAL(p)

java.math.BigDecimal java.math.BigDecimal

MONEY(p,s)

java.math.BigDecimal

1-76

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-10. Correlaciones de tipos de datos de servidor de bases de datos con tipos de datos Java para recuperar datos de tablas de servidor de bases de datos (continuacin) Tipo de datos de SQL SMALLFLOAT Tipo de datos de Java o tipo de objeto Java recomendado float Otros tipos de datos Java soportados long, int, short, byte, double, java.math.BigDecimal, boolean, java.lang.String long, int, short, byte, float, java.math.BigDecimal, boolean, java.lang.String long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.InputStream, java.io.Reader long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.InputStream, java.io.Reader long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.InputStream, java.io.Reader long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.InputStream, java.io.Reader long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.InputStream, java.io.Reader long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.InputStream, java.io.Reader Ninguno java.lang.String java.lang.String byte[]1 java.sql.String, java.sql.Timestamp java.sql.String, java.sql.Timestamp java.sql.String, java.sql.Date, java.sql.Time, java.sql.Timestamp

FLOAT

double

CHAR(n)

java.lang.String

NCHAR(n)

java.lang.String

VARCHAR(m,r)

java.lang.String

LVARCHAR(m,r)

java.lang.String

NVARCHAR(n)

java.lang.String

INTERVAL

java.lang.String

BYTE CLOB(n) TEXT BLOB(n) DATE DATETIME HOUR TO SECOND DATETIME YEAR TO FRACTION(5) Notas:

byte[] java.sql.Clob java.sql.Clob java.sql.Blob java.sql.Date java.sql.Time java.sql.Timestamp

1. Esta correlacin solamente es vlida si el servidor de bases de datos puede determinar el tipo de datos de la columna.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-77

Tipos de datos para invocar procedimientos almacenados y funciones definidas por el usuario
La tabla siguiente resume las correlaciones de tipos de datos Java con tipos de datos JDBC y tipos de datos DB2 o IDS para invocar parmetros de funciones definidas por el usuario y procedimientos almacenados. Las correlaciones de tipos de datos Java con tipos de datos JDBC son para mtodos CallableStatement.registerOutParameter en programas JDBC. Las correlaciones de tipos de datos Java con tipos de datos de servidor de bases de datos son para parmetros utilizados al invocar procedimientos almacenados o funciones definidas por el usuario. Si la tabla siguiente lista ms de un tipo de datos Java, el primer tipo de datos es el tipo de datos recomendado.
Tabla 1-11. Correlaciones de tipos de datos Java, JDBC y SQL para invocar procedimientos almacenados y funciones definidas por el usuario Tipo de datos de Java boolean boolean byte
1

Tipo de datos de JDBC BIT BOOLEAN TINYINT SMALLINT INTEGER INTEGER BIGINT BIGINT REAL FLOAT DOUBLE NUMERIC NUMERIC DECIMAL CHAR CHAR CHAR VARCHAR VARCHAR LONGVARCHAR LONGVARCHAR VARCHAR LONGVARCHAR CLOB CLOB BINARY VARBINARY VARBINARY

Tipo de datos de SQL BOOLEAN BOOLEAN SMALLINT SMALLINT INTEGER SERIAL INT8 SERIAL8 SMALLFLOAT SMALLFLOAT FLOAT DECIMAL MONEY DECIMAL CHAR INTERVAL NCHAR VARCHAR NVARCHAR VARCHAR LVARCHAR CLOB CLOB CLOB TEXT BYTE BYTE BYTE

short, java.lang.Short int, java.lang.Integer int, java.lang.Integer long long float, java.lang.Float float, java.lang.Float double, java.lang.Double java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String byte[] byte[] byte[]

1-78

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-11. Correlaciones de tipos de datos Java, JDBC y SQL para invocar procedimientos almacenados y funciones definidas por el usuario (continuacin) Tipo de datos de Java byte[] byte[] java.sql.Date java.sql.Time java.sql.Timestamp java.sql.Blob java.sql.Clob java.io.ByteArrayInputStream java.io.StringReader java.io.ByteArrayInputStream Notas: 1. Un procedimiento almacenado o funcin definida por el usuario que est definido con un parmetro de tipo SMALLINT se puede invocar con un parmetro de tipo boolean o byte. Sin embargo, esto no es aconsejable. 2. Esta correlacin solamente es vlida si el servidor de bases de datos puede determinar el tipo de datos de la columna. Tipo de datos de JDBC LONGVARBINARY LONGVARBINARY DATE TIME TIMESTAMP BLOB CLOB Ninguno Ninguno Ninguno Tipo de datos de SQL BYTE BLOB2 DATE DATETIME HOUR TO SECOND DATETIME YEAR TO FRACTION(5) BLOB CLOB BLOB CLOB CLOB

Tipos de datos SQL de IDS con soporte limitado


Los tipos de datos SET, MULTISET, LIST, ROW y UDT tienen un soporte limitado. No puede recuperar datos de columnas que tengan esos tipos de datos, pero puede utilizar mtodos DatabaseMetaData para recuperar los tipos de datos de columnas y nombres de tipos. La tabla siguiente muestra los tipos de datos y nombres de tipos que son devueltos por DatabaseMetaData.getColumns y DatabaseMetaData.getTypeInfo.
Tabla 1-12. Tipos de datos devueltos en las llamadas a DatabaseMetaData para columnas SET, MULTISET, LIST, ROW y UDT Tipo de datos de columna SET MULTISET LIST ROW UDT Tipo de datos de JDBC java.sql.Types.OTHER java.sql.Types.OTHER java.sql.Types.OTHER java.sql.Types.STRUCTURE java.sql.Types.JAVA_OBJECT Nombre de tipo set multiset list row Nombre de tipo totalmente calificado que se especific al crear el tipo definido por el usuario.

Propiedades de IBM Data Server Driver para JDBC y SQLJ


Las propiedades de IBM Data Server Driver para JDBC y SQLJ definen cmo se debe crear la conexin con una fuente de datos determinada. La mayora de las propiedades se pueden definir para un objeto DataSource o para un objeto Connection.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-79

Mtodos para establecer las propiedades


Puede definir propiedades de una de las maneras siguientes: v Utilizando mtodos setXXX, donde XXX es el nombre no calificado de la propiedad, con el primer carcter en maysculas. Las propiedades son aplicables a las siguientes implementaciones especficas de IBM Data Server Driver para JDBC y SQLJ que heredan las propiedades de com.ibm.db2.jcc.DB2BaseDataSource: com.ibm.db2.jcc.DB2SimpleDataSource com.ibm.db2.jcc.DB2ConnectionPoolDataSource com.ibm.db2.jcc.DB2XADataSource v En un valor java.util.Properties del parmetro info de una llamada DriverManager.getConnection. v En un valor java.lang.String del parmetro url de una llamada DriverManager.getConnection. Algunas propiedades con un tipo de datos int tienen valores de campo constante predefinidos. Hay que resolver los valores de campo constante predefinidos con sus valores enteros antes de utilizar dichos valores en el parmetro url. Por ejemplo, no se puede utilizar com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL en un parmetro url. Sin embargo, se puede crear una serie URL que incluya com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL, y asignar la serie URL a una variable String. A continuacin, se puede utilizar la variable String en el parmetro url.
String url = "jdbc:ids://sysmvs1.stl.ibm.com:5021" + "user=dbadm;password=dbadm;" + "traceLevel=" + (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL) + ";"; Connection con = java.sql.DriverManager.getConnection(url);

Propiedades comunes de IBM Data Server Driver para JDBC y SQLJ para todos los productos de base de datos permitidos
La mayora de las propiedades de IBM Data Server Driver para JDBC y SQLJ son aplicables a todos los productos de base de datos que son compatibles con el controlador. A menos que se indique otra cosa, todas las propiedades estn contenidas en com.ibm.db2.jcc.DB2BaseDataSource. Estas propiedades son las siguientes: blockingReadConnectionTimeout Cantidad de tiempo en segundos que transcurre hasta que se excede el tiempo de espera de lectura del socket de la conexin. Esta propiedad es aplicable solamente IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4, y afecta a todas las peticiones que se envan a la fuente de datos despus de establecer satisfactoriamente una conexin. El valor por omisin es 0, que significa que no hay tiempo de espera. databaseName Especifica el nombre de la fuente de datos. Este nombre constituye la parte del URL de conexin correspondiente a la basedatos. El nombre depende de si se utiliza IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4 o IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2.

1-80

IBM Data Server Driver para JDBC y SQLJ para IDS

Para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4: v Si la conexin es con un servidor DB2 para z/OS, el valor de databaseName es el nombre de ubicacin de DB2 que se define durante la instalacin. Todos los caracteres de este valor deben ser caracteres en maysculas. Puede determinar el nombre de ubicacin ejecutando la sentencia de SQL siguiente en el servidor:
SELECT CURRENT SERVER FROM SYSIBM.SYSDUMMY1;

v Si la conexin es con un servidor DB2 Database para Linux, UNIX y Windows, el valor de databaseName ser el nombre de la base de datos que se define durante la instalacin. v Si la conexin es con un servidor IDS, basedatos es el nombre de la base de datos. El nombre no es sensible a las maysculas y las minsculas. El servidor convierte el nombre a minsculas. v Si la conexin es con un servidor IBM Cloudscape, el valor de databaseName ser el nombre totalmente calificado del archivo que contiene la base de datos. Este nombre se debe incluir entre comillas dobles (). Por ejemplo:
"c:/basedatos/testdb"

Si esta propiedad no est definida, las conexiones se establecen con el sitio local. Para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2: defaultIsolationLevel Especifica el nivel de aislamiento por omisin de las transacciones para las nuevas conexiones. El tipo de datos de esta propiedad es int. Cuando se define defaultIsolationLevel para un DataSource, todas las conexiones creadas desde ese DataSource tienen el nivel de aislamiento por omisin especificado por defaultIsolationLevel. Para las fuentes de datos DB2, el valor por omisin es java.sql.Connection.TRANSACTION_READ_COMMITTED. Para las bases de datos IBM Informix Dynamic Server (IDS), el valor por omisin depende del tipo de fuente de datos. La tabla siguiente muestra los valores por omisin.
Tabla 1-13. Niveles de aislamiento por omisin para bases de datos IDS Tipo de fuente de datos Base de datos compatible con ANSI con registro cronolgico Base de datos sin registro cronolgico Base de datos no compatible con ANSI con registro cronolgico Nivel de aislamiento por omisin java.sql.Connection.TRANSACTION_SERIALIZABLE java.sql.Connection.TRANSACTION_READ_UNCOMMITTED java.sql.Connection.TRANSACTION_READ_COMMITTED

deferPrepares Especifica si la invocacin del mtodo Connection.prepareStatement produce la preparacin inmediata de una sentencia de SQL en la fuente de datos o si la preparacin de la sentencia se aplaza hasta que se ejecuta el mtodo PreparedStatement.execute. El tipo de datos de esta propiedad es boolean. deferPrepares se puede utilizar para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 con DB2 Database para Linux, UNIX y Windows, y IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4. Los valores posibles son:
IBM Data Server Driver para JDBC y SQLJ para IDS

1-81

true

La preparacin de la sentencia en la fuente de datos no se produce hasta que se ejecuta el mtodo PreparedStatement.execute. ste es el valor por omisin. La preparacin de la sentencia en la fuente de datos se produce cuando se ejecuta el mtodo Connection.prepareStatement.

false

El aplazar las operaciones de preparacin puede reducir los retardos de la red. Pero si aplaza operaciones de preparacin, debe asegurarse de que los tipos de datos de entrada coinciden con los tipos de columnas de tablas. descripcin Descripcin de la fuente de datos. El tipo de datos de esta propiedad es String. downgradeHoldCursorsUnderXa Especifica si se pueden abrir cursores retenidos en conexiones XA. downgradeHoldCursorsUnderXa se aplica a: v IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4 con servidores DB2 para z/OS. v IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4 o IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 con servidores DB2 Database para Linux, UNIX y Windows. El valor por omisin es false, que significa que no se pueden abrir cursores retenidos en conexiones XA. Si se establece true como valor de downgradeHoldCursorsUnderXa, se podrn abrir cursores retenidos en conexiones XA. No obstante, los cursores en conexiones XA tienen las restricciones siguientes: v Los cursores retenidos que se abren en una conexin XA no tienen comportamiento de WITH HOLD. Los cursores retenidos que se abren en una conexin XA se cierran al realizar la operacin XA End. v Los cursores abiertos antes de XA Start en una transaccin local se cierran al realizar la operacin XA Start. driverType Para la interfaz DataSource, determina qu controlador utilizar para las conexiones. El tipo de datos de esta propiedad es int. Los valores vlidos son 2 o 4. El valor por omisin es 2. fullyMaterializeLobData Indica si el controlador recupera localizadores de LOB para operaciones FETCH. El tipo de datos de esta propiedad es boolean. El efecto de fullyMaterializeLobData depende de si la fuente de datos es compatible con la modalidad continua progresiva: v Si la fuente de datos no es compatible con la modalidad continua progresiva: Si el valor de fullyMaterializeLobData es true, los datos LOB se materializarn completamente dentro del controlador JDBC cuando se capte una fila. Si el valor es false, los datos LOB se canalizarn. El controlador utiliza localizadores internamente para recuperar datos LOB en forma de bloques a medida que sea necesario. Es muy recomendable que establezca este valor en false cuando recupere datos LOB que contengan grandes volmenes de datos. El valor por omisin es true. v Si la fuente de datos es compatible con la modalidad continua progresiva: El controlador JDBC no tiene en cuenta el valor de fullyMaterializeLobData si la propiedad progressiveStreaming est establecida en DB2BaseDataSource.YES o DB2BaseDataSource.NOT_SET.

1-82

IBM Data Server Driver para JDBC y SQLJ para IDS

Esta propiedad no afecta a parmetros de procedimiento almacenado ni a los LOB que se recuperan mediante cursores desplazables. Los parmetros de procedimiento almacenado de LOB se materializan siempre. Los LOB que se recuperan utilizando cursores desplazables utilizan localizadores de LOB si la modalidad continua progresiva no est en vigor. loginTimeout Cantidad mxima de tiempo, en segundos, que se debe esperar para establecer conexin con una fuente de datos. Una vez transcurrido el nmero de segundos especificado por loginTimeout, el controlador cierra la conexin con la fuente de datos. El tipo de datos de esta propiedad es int. El valor por omisin es 0, que es el valor por omisin del sistema para el tiempo de espera. Esta propiedad no est soportada para el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 en DB2 para z/OS. logWriter Es la corriente de salida donde se escriben todos los mensajes de registro de anotaciones y de rastreo correspondientes al objeto DataSource. El tipo de datos de esta propiedad es java.io.PrinterWriter. El valor por omisin es nulo, que significa que no se generan datos de registro de anotaciones ni de rastreo para DataSource. password Es la contrasea que se debe utilizar para establecer conexiones. El tipo de datos de esta propiedad es String. Cuando utiliza la interfaz DataSource para establecer una conexin, puede alterar temporalmente el valor de esta propiedad invocando esta modalidad del mtodo DataSource.getConnection:
getConnection(usuario, contrasea);

portNumber El nmero de puerto en que el servidor DRDA escucha peticiones. El tipo de datos de esta propiedad es int. resultSetHoldability Especifica si los cursores permanecen abiertos despus de una operacin de confirmacin. El tipo de datos de esta propiedad es int. Los valores vlidos son: DB2BaseDataSource.HOLD_CURSORS_OVER_COMMIT (1) Cerrar los cursores despus de una operacin de confirmacin. DB2BaseDataSource.CLOSE_CURSORS_AT_COMMIT (2) Dejar los cursores abiertos despus de una operacin de confirmacin. DB2BaseDataSource.NOT_SET (0) Cerrar los cursores despus de una operacin de confirmacin. Esto es el valor por omisin. securityMechanism Especifica el mecanismo de seguridad de DRDA. El tipo de datos de esta propiedad es int. Los valores posibles son: CLEAR_TEXT_PASSWORD_SECURITY (3) ID de usuario y contrasea USER_ONLY_SECURITY (4) ID de usuario solamente ENCRYPTED_PASSWORD_SECURITY (7) ID de usuario, contrasea cifrada

IBM Data Server Driver para JDBC y SQLJ para IDS

1-83

ENCRYPTED_USER_AND_PASSWORD_SECURITY (9) ID de usuario y contrasea cifrados KERBEROS_SECURITY (11) Kerberos. Este valor no es aplicable a las conexiones con IDS. ENCRYPTED_USER_AND_DATA_SECURITY (12) ID de usuario y datos confidenciales cifrados. Este valor es aplicable solamente a las conexiones con DB2 para z/OS. ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY (13) ID de usuario y contrasea cifrados, y datos confidenciales cifrados. Este valor no es aplicable a las conexiones con IDS. PLUGIN_SECURITY (15) Seguridad por plug-in. Este valor es aplicable solamente a las conexiones con DB2 Database para Linux, UNIX y Windows. ENCRYPTED_USER_ONLY_SECURITY (16) ID de usuario cifrado. Este valor no es aplicable a las conexiones con IDS. Si se especifica esta propiedad, el mecanismo de seguridad especificado es el nico mecanismo utilizado. Si el mecanismo de seguridad no est soportado por la conexin, se emite una excepcin. El valor por omisin de securityMechanism es CLEAR_TEXT_PASSWORD_SECURITY. Si el servidor no admite CLEAR_TEXT_PASSWORD_SECURITY pero s admite ENCRYPTED_USER_AND_PASSWORD_SECURITY, el IBM Data Server Driver para JDBC y SQLJ actualiza el mecanismo de seguridad a ENCRYPTED_USER_AND_PASSWORD_SECURITY y trata de conectarse al servidor. Cualquier otra discrepancia en el soporte del mecanismo de seguridad entre el solicitante y el servidor da como resultado un error. sendDataAsIs Especifica que el IBM Data Server Driver para JDBC y SQLJ no convierte valores de parmetro de entrada para los tipos de datos de columna de destino. El tipo de datos de esta propiedad es boolean. El valor por omisin es false. Utilice esta propiedad solamente para aplicaciones que siempre comprueban que los tipos de datos de la aplicacin coinciden con los tipos de datos de las correspondientes tablas de base de datos. serverName Nombre de sistema principal o direccin TCP/IP de la fuente de datos. El tipo de datos de esta propiedad es String. traceDirectory Especifica un directorio en el que se graba la informacin de rastreo. El tipo de datos de esta propiedad es String. Cuando se especifica traceDirectory, la informacin de rastreo correspondiente a varias conexiones en el mismo DataSource se graba en varios archivos. Si se especifica traceDirectory, la conexin se guarda en un archivo denominado traceFile_origen_n. n es la conexin nmero n correspondiente a una DataSource. origen indica el origen del grabador de anotaciones cronolgicas que se est utilizando. Los valores posibles de origen son:

1-84

IBM Data Server Driver para JDBC y SQLJ para IDS

cpds

Grabador de anotaciones cronolgicas para un objeto DB2ConnectionPoolDataSource.

driver Grabador de anotaciones cronolgicas para un objeto DB2Driver. global Grabador de anotaciones cronolgicas para un objeto DB2TraceManager. sds xads Grabador de anotaciones cronolgicas para un objeto DB2SimpleDataSource. Grabador de anotaciones cronolgicas para un objeto DB2XADataSource.

Si tambin se especifica la propiedad traceFile, no se utiliza el valor traceDirectory. traceFile Especifica el nombre del archivo en donde el IBM Data Server Driver para JDBC y SQLJ escribe informacin de rastreo. El tipo de datos de esta propiedad es String. La propiedad traceFile es una alternativa al uso de la propiedad logWriter para encaminar la corriente de datos de rastreo de salida hacia un archivo. traceFileAppend Especifica si deben aadir o sobrescribir datos en el archivo especificado por la propiedad traceFile. El tipo de datos de esta propiedad es boolean. El valor por omisin es false, que significa que se sobrescribe el archivo especificado por la propiedad traceFile. traceLevel Especifica qu se debe rastrear. El tipo de datos de esta propiedad es int. Puede especificar uno o ms de los valores de rastreo siguientes con la propiedad traceLevel: v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_NONE (X00) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTION_CALLS (X01) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_STATEMENT_CALLS (X02) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_RESULT_SET_CALLS (X04) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRIVER_CONFIGURATION (X10) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS (X20) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS (X40) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_RESULT_SET_META_DATA (X80) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_PARAMETER_META_DATA (X100) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DIAGNOSTICS (X200) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_SQLJ (X400) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_META_CALLS (X2000) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DATASOURCE_CALLS (X4000) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_LARGE_OBJECT_CALLS (X8000) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_SYSTEM_MONITOR (X20000) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_TRACEPOINTS (X40000) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL (XFFFFFFFF) Para especificar ms de un valor de rastreo, utilice una de estas tcnicas: v Utilice operadores OR (|) de bits con dos o ms valores de rastreo. Por ejemplo, para rastrear flujos de DRDA y llamadas de conexin, especifique este valor para traceLevel:
TRACE_DRDA_FLOWS|TRACE_CONNECTION_CALLS

IBM Data Server Driver para JDBC y SQLJ para IDS

1-85

v Utilice un operador de complemento a nivel de bit ( ~) con un valor de rastreo para especificar todos los rastreos excepto uno determinado. Por ejemplo, para rastrear todo excepto los flujos de DRDA, especifique este valor para traceLevel:
~TRACE_DRDA_FLOWS

user ID de usuario que se utilizar para establecer conexiones. El tipo de datos de esta propiedad es String. Cuando utiliza la interfaz DataSource para establecer una conexin, puede alterar temporalmente el valor de esta propiedad invocando esta modalidad del mtodo DataSource.getConnection:
getConnection(usuario, contrasea);

xaNetworkOptimization Especifica si la optimizacin de la red XA est habilitada para el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4. Puede que tenga que inhabilitar la optimizacin de la red XA en un entorno en el que se emitan XA Start y XA End desde un proceso Java, y se emitan XA Prepare y XA Commit desde otro proceso Java. Con la optimizacin de la red XA, XA Prepare puede acceder a la fuente de datos antes del XA End, lo cual produce un error XAER_PROTO. Para evitar el error XAER_PROTO, inhabilite la optimizacin de la red XA. El valor por omisin es true, que significa que la optimizacin de la red XA est habilitada. Si el valor de xaNetworkOptimization es false, lo que significa que la optimizacin de la red XA est inhabilitada, el controlador cerrar los cursores abiertos al realizar la operacin XA End. xaNetworkOptimization se puede establecer en un objeto DataSource o en el parmetro url en una llamada getConnection. El valor de xaNetworkOptimization no se puede modificar despus de obtener una conexin.

Propiedades comunes de IBM Data Server Driver para JDBC y SQLJ para DB2 para z/OS y DB2 Database para Linux, UNIX y Windows
Algunas de las propiedades de IBM Data Server Driver para JDBC y SQLJ son aplicables solamente a DB2 para z/OS y DB2 Database para Linux, UNIX y Windows. A menos que se indique otra cosa, todas las propiedades estn contenidas en com.ibm.db2.jcc.DB2BaseDataSource. Estas propiedades son las siguientes: clientRerouteAlternateServerName Especifica uno o ms nombres de servidores alternativos para el redireccionamiento del cliente. Se utiliza clientRerouteAlternateServerName cuando el redireccionamiento del cliente est configurado sin un almacn de datos JNDI. El tipo de datos de esta propiedad es String. Si especifica ms de un nombre de servidor, delimite los nombres con comas (,). El nmero de valores especificados para clientRerouteAlternateServerName debe coincidir con el nmero de valores especificados para clientRerouteAlternatePortNumber. clientRerouteAlternateServerName es aplicable a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 con DB2 Database para Linux, UNIX y Windows y IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4.

1-86

IBM Data Server Driver para JDBC y SQLJ para IDS

clientRerouteAlternatePortNumber Especifica uno o ms nmeros de puerto alternativos para el redireccionamiento del cliente. Se utiliza clientRerouteAlternatePortNumber cuando el redireccionamiento del cliente est configurado sin un almacn de datos JNDI. El tipo de datos de esta propiedad es String. Si especifica ms de un nmero de puerto, delimite los nmeros de puerto con comas (,). El nmero de valores especificados para clientRerouteAlternatePortNumber debe coincidir con el nmero de valores especificados para clientRerouteAlternateServerName. clientRerouteAlternatePortNumber es aplicable a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 con DB2 Database para Linux, UNIX y Windows y IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4. clientRerouteServerListJNDIName Identifica una referencia JNDI para una instancia de DB2ClientRerouteServerList en un depsito JNDI de informacin del servidor de redireccionamiento. La propiedad clientRerouteServerListJNDIName es aplicable solamente a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4, y a las conexiones que se establecen mediante la interfaz DataSource. Si el valor de clientRerouteServerListJNDIName no es nulo, clientRerouteServerListJNDIName proporcionar las funciones siguientes: v Permite conservar la informacin sobre servidores de redireccionamiento al pasar de una JVM a otra v Proporciona una ubicacin de servidor alternativa si falla la primera conexin con la fuente de datos clientRerouteServerListJNDIContext Especifica el contexto de JNDI que se utiliza para la vinculacin y la consulta de la instancia de DB2ClientRerouteServerList. La propiedad clientRerouteServerListJNDIContext es aplicable solamente a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4, y a las conexiones que se establecen mediante la interfaz DataSource. Si no se define clientRerouteServerListJNDIContext, el IBM Data Server Driver para JDBC y SQLJ crear un contexto inicial utilizando propiedades del sistema o el archivo jndi.properties. clientRerouteServerListJNDIContext slo se puede definir mediante el mtodo siguiente:
public void setClientRerouteServerListJNDIContext(javax.naming.Context registro)

currentDegree Especifica el grado de paralelismo para la ejecucin de consultas que se preparan dinmicamente. El tipo de datos de esta propiedad es String. El valor de currentDegree se utiliza para establecer el registro especial CURRENT DEGREE en la fuente de datos. Si currentDegree no est definido, no se pasa ningn valor a la fuente de datos. currentFunctionPath Especifica la va de SQL que se utiliza para resolver nombres de tipos de datos y de funciones no calificados en las sentencias de SQL que estn contenidas en programas de JDBC. El tipo de datos de esta propiedad es String. Para un servidor DB2 Database para Linux, UNIX y Windows, la longitud mxima es de 254 bytes. Para un servidor DB2 para z/OS, la longitud mxima es de 2048 bytes. El valor es una lista de nombres de esquema separados por comas. Esos nombres pueden ser identificadores ordinarios o delimitados.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-87

currentMaintainedTableTypesForOptimization Especifica un valor que identifica los tipos de objetos que se pueden tener en cuenta cuando la fuente de datos optimiza el proceso de consultas de SQL dinmico. Este registro contiene una palabra clave que representa tipos de tabla. El tipo de datos de esta propiedad es String. Los valores posibles de currentMaintainedTableTypesForOptimization son: ALL Indica que se tendrn en cuenta todas las tablas de consultas materializadas. NONE Indica que no se tendr en cuenta ninguna tabla de consulta materializada. SYSTEM Indica que slo se tendrn en cuenta las tablas de consultas materializadas de renovacin diferida mantenidas por el sistema. USER Indica que slo se tendrn en cuenta las tablas de consultas materializadas de renovacin diferida mantenidas por el usuario. currentPackagePath Especifica un lista separada por comas de colecciones contenidas en el servidor. El servidor de bases de datos busca paquetes de JDBC y SQLJ en estas colecciones. Las reglas de precedencia para las propiedades currentPackagePath y currentPackageSet siguen las reglas de precedencia correspondientes a los registros especiales CURRENT PACKAGESET y CURRENT PACKAGE. currentPackageSet Especifica el ID de coleccin para buscar paquetes JDBC y SQLJ. El tipo de datos de esta propiedad es String. El valor por omisin es NULLID. Si currentPackageSet est definido, su valor tiene prioridad sobre el valor de jdbcCollection. Puede instalar varias instancias de IBM Data Server Driver para JDBC y SQLJ en un servidor de bases de datos ejecutando varias veces el programa de utilidad DB2Binder. El programa de utilidad DB2binder incluye la opcin -collection, que permite que el instalador especifique el ID de coleccin para cada instancia del IBM Data Server Driver para JDBC y SQLJ. Para seleccionar una instancia del IBM Data Server Driver para JDBC y SQLJ para una conexin, especifique un valor de currentPackageSet que coincida con el ID de coleccin para una de las instancias del IBM Data Server Driver para JDBC y SQLJ. Las reglas de precedencia para las propiedades currentPackagePath y currentPackageSet siguen las reglas de precedencia correspondientes a los registros especiales CURRENT PACKAGESET y CURRENT PACKAGE. currentRefreshAge Especifica un valor de duracin de indicacin de fecha y hora mxima desde que la sentencia REFRESH TABLE se ha procesado en una tabla de consultas materializada REFRESH DEFERRED mantenida por el sistema, como por ejemplo en el caso en el que la tabla de consultas materializada se utiliza para optimizar el proceso de una consulta. Esta propiedad afecta a la coincidencia de antememoria de sentencias dinmicas. El tipo de datos de esta propiedad es long.

1-88

IBM Data Server Driver para JDBC y SQLJ para IDS

currentSchema Especifica el nombre de esquema por omisin que se utiliza para calificar objetos de base de datos no calificados en sentencias de SQL preparadas dinmicamente. El valor de esta propiedad establece el valor del registro especial CURRENT SCHEMA en el servidor de bases de datos. cursorSensitivity Especifica si el valor de java.sql.ResultSet.TYPE_SCROLL_SENSITIVE para un ResultSet se correlaciona con el atributo SENSITIVE DYNAMIC, el atributo SENSITIVE STATIC, o el atributo ASENSITIVE para el cursor de base de datos subyacente. El tipo de datos de esta propiedad es int. Los valores posibles son TYPE_SCROLL_SENSITIVE_STATIC (0), TYPE_SCROLL_SENSITIVE_DYNAMIC (1), o TYPE_SCROLL_ASENSITIVE (2). El valor por omisin es TYPE_SCROLL_SENSITIVE_STATIC. Si la fuente de datos no es compatible con cursores desplazables dinmicos sensibles, y se especifica TYPE_SCROLL_SENSITIVE_DYNAMIC, el controlador JDBC obtiene un aviso y establece la sensibilidad en SENSITIVE STATIC. Para servidores de bases de datos de DB2 para i5/OS, los cuales no soportan cursores estticos sensibles, el valor java.sql.ResultSet.TYPE_SCROLL_SENSITIVE siempre se correlaciona con SENSITIVE DYNAMIC. dateFormat Especifica: v El formato en que se debe especificar el argumento String del mtodo PreparedStatement.setString sobre una columna DATE. v El formato en que se devuelve el resultado del mtodo ResultSet.getString o CallableStatement.getString sobre una columna DATE. El tipo de datos de dateFormat es int. Los valores posibles de dateFormat son:
Constante com.ibm.db2.jcc.DB2BaseDataSource.ISO com.ibm.db2.jcc.DB2BaseDataSource.USA com.ibm.db2.jcc.DB2BaseDataSource.EUR com.ibm.db2.jcc.DB2BaseDataSource.JIS Valor entero Formato 1 2 3 4 aaaa-mm-dd mm/dd/aaaa dd.mm.aaaa aaaa-mm-dd

El valor por omisin es com.ibm.db2.jcc.DB2BaseDataSource.ISO. decimalRoundingMode Especifica la modalidad de redondeo para valores decimales de coma flotante en servidores de bases de datos DB2 para z/OS o DB2 Database para Linux, UNIX y Windows. Los valores posibles son: com.ibm.db2.jcc.DB2BaseDataSource.ROUND_DOWN (1) Redondea el valor por defecto (truncamiento). Los dgitos descartados no se tienen en cuenta. com.ibm.db2.jcc.DB2BaseDataSource.ROUND_CEILING (2) Redondea el valor hacia infinito positivo. Si todos los dgitos descartados son ceros, o si el signo es negativo, el resultado permanece inalterado salvo por la eliminacin de los dgitos descartados. En otro caso, el coeficiente del resultado se incrementa en 1.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-89

com.ibm.db2.jcc.DB2BaseDataSource.ROUND_HALF_EVEN (3) Redondea el valor hasta el valor ms cercano; si los valores son equidistantes, redondea el valor de forma que el dgito final sea par. Si los dgitos descartados representan ms que la mitad (0,5) del valor del dgito en la posicin izquierda siguiente, el coeficiente del resultado se incrementa en 1. Si representan menos que la mitad, el coeficiente del resultado no se ajusta (es decir, los dgitos descartados no se tienen en cuenta). En otro caso, el coeficiente del resultado permanece inalterado si su dgito ms a la derecha es par, o se incrementa en 1 si su dgito ms a la derecha es impar (para convertirlo en un dgito par). com.ibm.db2.jcc.DB2BaseDataSource.ROUND_HALF_UP (4) Redondea el valor hasta el valor ms cercano; si los valores son equidistantes, redondea el valor por exceso. Si los dgitos descartados representan un valor mayor o igual que la mitad (0,5) del valor del dgito en la posicin izquierda siguiente, el coeficiente del resultado se incrementa en 1. En otro caso, los dgitos descartados no se tienen en cuenta. com.ibm.db2.jcc.DB2BaseDataSource.ROUND_FLOOR (6) Redondea el valor hacia infinito negativo. Si todos los dgitos descartados son ceros, o si el signo es positivo, el resultado permanece inalterado salvo por la eliminacin de los dgitos descartados. En otro caso, el signo es negativo y el coeficiente del resultado se incrementa en 1. com.ibm.db2.jcc.DB2BaseDataSource.ROUND_UNSET (-2147483647) No se ha establecido explcitamente ninguna modalidad de redondeo. El IBM Data Server Driver para JDBC y SQLJ no utiliza la propiedad decimalRoundingMode para establecer la modalidad de redondeo en la fuente de datos. El IBM Data Server Driver para JDBC y SQLJ utiliza los valores siguientes para establecer la modalidad de redondeo: v Para servidores de bases de datos DB2 para z/OS o DB2 Database para Linux, UNIX y Windows, la modalidad de redondeo es ROUND_HALF_EVEN para valores decimales de coma flotante. Si decimalRoundingMode est definido, se utiliza el valor de decimalRoundingMode para establecer el registro especial CURRENT DECFLOAT ROUNDING MODE en los servidores de bases de datos DB2 para z/OS. fullyMaterializeInputStreams Indica si las corrientes de datos se materializan totalmente antes de ser enviadas a una fuente de datos. El tipo de datos de esta propiedad es boolean. El valor por omisin es false. Si el valor de fullyMaterializeInputStreams es true, ello significar que el controlador JDBC habr materializado completamente las corrientes antes de enviarlas al servidor. gssCredential Para una fuente de datos que utilice la seguridad Kerberos, especifica una credencial delegada que se pasa desde otro principal. El tipo de datos de esta propiedad es org.ietf.jgss.GSSCredential. Las credenciales delegadas se utilizan en entornos de varios niveles, como cuando un cliente se conecta a WebSphere Application Server, y ste, a su vez, se conecta a la fuente de datos. El valor de esta propiedad se obtiene del cliente, invocando el mtodo GSSContext.getDelegCred. GSSContext forma parte de la API GSS (Generic

1-90

IBM Data Server Driver para JDBC y SQLJ para IDS

Security Service) de IBM Java. Si define esta propiedad, debe tambin definir las propiedades Mechanism y KerberosServerPrincipal. Esta propiedad solo es aplicable al IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4. Para obtener ms informacin sobre la utilizacin de la seguridad Kerberos con IBM Data Server Driver para JDBC y SQLJ, consulte Utilizacin de la seguridad Kerberos bajo IBM Data Server Driver para JDBC y SQLJ. kerberosServerPrincipal Para una fuente de datos que utilice la seguridad Kerberos, especifica el nombre que se utiliza para la fuente de datos cuando se registra con el Centro de distribucin de claves (KCD) de Kerberos. El tipo de datos de esta propiedad es String. Esta propiedad solo es aplicable al IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4. maxRetriesForClientReroute Durante el redireccionamiento automtico del cliente, limita el nmero de reintentos si falla la conexin primaria con la fuente de datos. El tipo de datos de esta propiedad es int. IBM Data Server Driver para JDBC y SQLJ utiliza la propiedad maxRetriesForClientReroute solamente si tambin establecida la propiedad retryIntervalForClientReroute. El valor por omisin de maxRetriesForClientReroute es MAX_RETRIES_NOT_SET (-1). Si maxRetriesForClientReroute o retryIntervalForClientReroute no est establecido, IBM Data Server Driver para JDBC y SQLJ realiza reintentos durante 10 minutos. progressiveStreaming Especifica si el controlador JDBC utiliza la modalidad continua progresiva cuando esta funcin es compatible con la fuente de datos. Cuando se utiliza la modalidad continua progresiva, la fuente de datos determina dinmicamente la forma ms eficiente de devolver datos LOB o XML, de acuerdo con el tamao de los objetos LOB o XML. El valor del parmetro streamBufferSize determina si los datos se materializan cuando se devuelven. El tipo de datos de progressiveStreaming es int. Los valores vlidos son DB2BaseDataSource.YES (1) y DB2BaseDataSource.NO (2). Si la propiedad progressiveStreaming no est especificada, el valor de progressiveStreaming es DB2BaseDataSource.NOT_SET (0). Si la conexin es con una fuente de datos que es compatible con la modalidad continua progresiva, y el valor de progressiveStreaming es DB2BaseDataSource.YES o DB2BaseDataSource.NOT_SET, el controlador JDBC utiliza la modalidad continua progresiva para devolver datos de LOB y XML. Si el valor de progressiveStreaming es DB2BaseDataSource.NO, o la fuente de datos no es compatible con la modalidad continua progresiva, la forma en que el controlador JDBC devuelve datos de LOB o XML depende del valor de la propiedad fullyMaterializeLobData. readOnly Especifica si la conexin es de solo lectura. El tipo de datos de esta propiedad es boolean. El valor por omisin es false. resultSetHoldabilityForCatalogQueries Especifica si los cursores de consultas que se ejecutan a peticin de mtodos
IBM Data Server Driver para JDBC y SQLJ para IDS

1-91

DatabaseMetaData permanecen abiertos despus de una operacin de confirmacin. El tipo de datos de esta propiedad es int. Cuando una aplicacin ejecuta mtodos DatabaseMetaData, el IBM Data Server Driver para JDBC y SQLJ ejecuta consultas para el catlogo de la fuente de datos de destino. Por omisin, la capacidad de retencin de esos cursores es la misma que la capacidad de retencin de los cursores de aplicacin. Para utilizar una capacidad de retencin diferente para las consultas de catlogo, utilice la propiedad resultSetHoldabilityForCatalogQueries. Los valores posibles son: DB2BaseDataSource.HOLD_CURSORS_OVER_COMMIT (1) Cerrar los cursores de las consultas de catlogo despus de una operacin de confirmacin, sin importar el valor de resultSetHoldability. DB2BaseDataSource.CLOSE_CURSORS_AT_COMMIT (2) Dejar abiertos los cursores de las consultas de catlogo despus de una operacin de confirmacin, sin importar el valor de resultSetHoldability. DB2BaseDataSource.NOT_SET (0) Utilizar el valor de resultSetHoldability para las consultas de catlogo. Esto es el valor por omisin. Los valores vlidos son HOLD_CURSORS_OVER_COMMIT (1) o CLOSE_CURSORS_AT_COMMIT (2). Estos valores son los mismos que las constantes ResultSet.HOLD_CURSORS_OVER_COMMIT y ResultSet.CLOSE_CURSORS_AT_COMMIT que se definen en JDBC 3.0. retryIntervalForClientReroute Para el redireccionamiento automtico del cliente, especifica la cantidad de tiempo, en segundos, que transcurre entre los reintentos de conexin. El tipo de datos de esta propiedad es int. IBM Data Server Driver para JDBC y SQLJ utiliza la propiedad retryIntervalForClientReroute solamente si tambin est establecida la propiedad maxRetriesForClientReroute. El valor por omisin de retryIntervalForClientReroute es RETRY_INTERVAL_NOT_SET (-1). Si maxRetriesForClientReroute o retryIntervalForClientReroute no est establecido, IBM Data Server Driver para JDBC y SQLJ realiza reintentos durante 10 minutos. returnAlias Especifica si el controlador JDBC devuelve filas de alias de tabla y sinnimos para mtodos DatabaseMetaData que devuelven informacin de tabla, como por ejemplo getTables. El tipo de datos de returnAlias es int. Los valores posibles son: 0 1 No devolver filas para alias ni sinnimos de tablas en la salida de mtodos DatabaseMetaData que devuelven informacin de tabla. En el caso de tablas que tienen alias o sinnimos, devolver filas de alias y sinnimos de dichas tablas, as como filas de tablas, en la salida de mtodos DatabaseMetaData que devuelven informacin de tabla. ste es el valor por omisin.

sslConnection Especifica si IBM Data Server Driver para JDBC y SQLJ utiliza un socket SSL

1-92

IBM Data Server Driver para JDBC y SQLJ para IDS

para conectar con la fuente de datos. Si sslConnection se establece en true, la conexin utilizar un socket SSL. Si sslConnection se establece en false, la conexin utilizar un socket normal. streamBufferSize Especifica el tamao, en bytes, de los almacenamientos intermedios del controlador JDBC para truncar datos LOB o XML. El controlador JDBC utiliza el valor streamBufferSize independientemente de que utilice la modalidad continua progresiva. El tipo de datos de streamBufferSize es int. El valor por omisin es 1048576. Si el controlador JDBC utiliza la modalidad continua progresiva, los datos LOB o XML se materializarn si caben en los almacenamientos intermedios y el controlador no utilizar la propiedad fullyMaterializeLobData. supportsAsynchronousXARollback Especifica si el IBM Data Server Driver para JDBC y SQLJ da soporte a operaciones de retrotraccin XA asncrona. El tipo de datos de esta propiedad es int. El valor por omisin es DB2BaseDataSource.NO (2). Si la aplicacin se ejecuta en un servidor de aplicaciones BEA WebLogic Server, establezca supportsAsynchronousXARollback en DB2BaseDataSource.YES (1). sysSchema Especifica el esquema de las tablas o vistas de catlogo de duplicacin que se examinan cuando una aplicacin invoca un mtodo DatabaseMetaData. La propiedad sysSchema se denominaba cliSchema anteriormente. timeFormat Especifica: v El formato en que se debe especificar el argumento String del mtodo PreparedStatement.setString sobre una columna TIME. v El formato en que se devuelve el resultado del mtodo ResultSet.getString o CallableStatement.getString sobre una columna TIME. El tipo de datos de timeFormat es int. Los valores posibles de timeFormat son:
Constante com.ibm.db2.jcc.DB2BaseDataSource.ISO com.ibm.db2.jcc.DB2BaseDataSource.USA com.ibm.db2.jcc.DB2BaseDataSource.EUR com.ibm.db2.jcc.DB2BaseDataSource.JIS Valor entero Formato 1 2 3 4 hh:mm:ss h:mm am o h:mm pm hh.mm.ss hh:mm:ss

El valor por omisin es com.ibm.db2.jcc.DB2BaseDataSource.ISO. useCachedCursor Especifica si el cursor asociado a objetos PreparedStatement se coloca en la antememoria y se reutiliza en ejecuciones subsiguientes de PreparedStatement. El tipo de datos de useCachedCursor es boolean. Si useCachedCursor est establecido en true, el cursor asociado a objetos PreparedStatement se coloca en la antememoria, lo cual puede mejorar el rendimiento. true es el valor por omisin. Establezca useCachedCursor en false si los objetos PreparedStatement acceden a tablas cuyos tipos o longitudes de columna cambian entre una ejecucin y otra de esos objetos PreparedStatement.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-93

com.ibm.db2.jcc.DB2ConnectionPoolDataSource.maxStatements Controla una antememoria interna de sentencias que est asociada a un PooledConnection. El tipo de datos de esta propiedad es int. Los valores posibles son: entero positivo Habilita la antememoria interna de sentencias para un PooledConnection y especifica el nmero de sentencias que IBM Data Server Driver para JDBC y SQLJ mantiene abiertas en la antememoria. 0 o entero negativo Inhabilita la puesta en la antememoria interna de sentencias para el objeto PooledConnection. 0 es el valor por omisin. maxStatements controla la antememoria interna de sentencias que se asocia con un PooledConnection solamente cuando se crea el objeto PooledConnection. maxStatements no tiene ningn efecto sobre la puesta en antememoria para un objeto PooledConnection ya existente. maxStatements es aplicable solamente a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4.

Propiedades comunes de IBM Data Server Driver para JDBC y SQLJ para DB2 para z/OS y IBM Informix Dynamic Server
Algunas de las propiedades de IBM Data Server Driver para JDBC y SQLJ son aplicables a servidores de bases de datos IDS y DB2 para z/OS. Estas propiedades son las siguientes: keepDynamic Especifica si la fuente de datos mantiene sentencias de SQL dinmico ya preparadas en la antememoria de sentencias dinmicas despus de puntos de confirmacin para que esas sentencias preparadas se puedan reutilizar. El tipo de datos de esta propiedad es int. Los valores vlidos son DB2BaseDataSource.YES (1) y DB2BaseDataSource.NO (2). Si la propiedad keepDynamic no est especificada, el valor de keepDynamic es DB2BaseDataSource.NOT_SET (0). Si la conexin est establecida con un servidor DB2 para z/OS, no se colocan sentencias dinmicas en la antememoria para una conexin si la propiedad no est establecida. Si la conexin est establecida con una fuente de datos IDS, se colocan sentencias dinmicas en la antememoria para una conexin si la propiedad no est establecida. keepDynamic se utiliza con la opcin -keepdynamic de DB2Binder. El valor especificado para la propiedad keepDynamic debe coincidir con el valor de -keepdynamic que se especific al ejecutar DB2Binder. Para un servidor de bases de datos DB2 para z/OS, solamente se pueden colocar sentencias dinmicas en la antememoria si la antememoria de sentencias dinmicas de EDM est habilitada en la fuente de datos. El parmetro de subsistema CACHEDYN debe establecerse en DB2BaseDataSource.YES para habilitar la antememoria de sentencias dinmicas. retrieveMessagesFromServerOnGetMessage Especifica si las llamadas a SQLException.getMessage o SQLWarning.getMessage de JDBC hacen que IBM Data Server Driver para JDBC y SQLJ invoque un procedimiento almacenado de DB2 para z/OS que recupera el texto del mensaje para el error. El tipo de datos de esta propiedad es boolean. El valor por omisin es false, que significa que el texto completo del mensaje no se devuelve al cliente.

1-94

IBM Data Server Driver para JDBC y SQLJ para IDS

Por ejemplo, si retrieveMessagesFromServerOnGetMessage est establecido en true, SQLException.getMessage devuelve un mensaje similar al siguiente cuando se intenta realizar una operacin de SQL sobre una tabla ADMF001.NO_TABLE inexistente:
ADMF001.NO_TABLE IS AN UNDEFINED NAME. SQLCODE=-204, SQLSTATE=42704, DRIVER=3.50.54

Si retrieveMessagesFromServerOnGetMessage est establecido en false, se devuelve un mensaje similar al siguiente:


DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, DRIVER=3.50.54

En lugar de establecer esta propiedad en true, una alternativa consiste en utilizar el mtodo DB2Sqlca.getMessage, especfico de IBM Data Server Driver para JDBC y SQLJ, en aplicaciones. Ambas tcnicas producen una llamada de procedimiento almacenado, la cual inicia una unidad de trabajo.

Propiedades comunes de IBM Data Server Driver para JDBC y SQLJ para servidores de bases de datos IBM Informix Dynamic Server y DB2 Database para Linux, UNIX y Windows
Algunas de las propiedades de IBM Data Server Driver para JDBC y SQLJ son aplicables a servidores de bases de datos IBM Informix Dynamic Server (IDS) y DB2 Database para Linux, UNIX y Windows. Estas propiedades son las siguientes: currentLockTimeout Especifica si los servidores DB2 Database para Linux, UNIX y Windows esperan un bloqueo cuando ste no se puede obtener de forma inmediata. El tipo de datos de esta propiedad es int. Los valores posibles son: entero La espera para un entero segundos. entero oscila entre -1 y 32767, ambos inclusive.

LOCK_TIMEOUT_NO_WAIT No espere ningn bloqueo. ste es el valor por omisin. LOCK_TIMEOUT_WAIT_INDEFINITELY Espere un bloqueo durante un tiempo no definido. LOCK_TIMEOUT_NOT_SET Especifica utilizar el valor por omisin para la fuente de datos. queryDataSize Especifica un valor para controlar la cantidad de datos de una consulta, en bytes, que son devueltos por la fuente de datos en cada operacin de recuperacin de datos. Este valor se puede utilizar para optimizar la aplicacin mediante el control del nmero de veces que es necesario acceder a la fuente de datos para recuperar los datos. Un valor mayor de queryDataSize puede originar un menor trfico de red, y como resultado puede mejorar el rendimiento. Por ejemplo, si el tamao del conjunto de resultados es 50 KB, y el valor de queryDataSize es 32768 (32KB), son necesarios dos accesos al servidor de bases de datos para recuperar el conjunto de resultados. En cambio, si queryDataSize es igual a 61440 (60 KB), solamente es necesario acceder una vez a la fuente de datos para recuperar el conjunto de resultados. La tabla siguiente muestra los valores mnimo, mximo y por omisin de queryDataSize para cada fuente de datos.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-95

Tabla 1-14. Valores mnimo, mximo y por omisin de queryDataSize Fuente de datos DB2 Database para Linux, UNIX y Windows IDS DB2 para i5/OS DB2 para z/OS Valor mnimo de queryDataSize 4096 Valor mximo de queryDataSize 65535 Valor por omisin de queryDataSize 32767

4096 4096 No aplicable

10485760 65535 No aplicable

32767 32767 El tamao de los datos de la consulta es siempre 32767.

Propiedades de IBM Data Server Driver para JDBC y SQLJ correspondientes a DB2 Database para Linux, UNIX y Windows
Algunas de las propiedades de IBM Data Server Driver para JDBC y SQLJ son aplicables solamente a servidores DB2 Database para Linux, UNIX y Windows. Estas propiedades son las siguientes: connectNode Especifica el servidor de particiones de base de datos de destino al que se conecta una aplicacin. El tipo de datos de esta propiedad es int. Este valor puede estar comprendido entre 0 y 999. El valor por omisin es el servidor de particiones de base de datos que est definido con el puerto 0. La propiedad connectNode es aplicable solamente a la IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4 con servidores DB2 Database para Linux, UNIX y Windows. currentExplainMode Especifica el valor del registro especial CURRENT EXPLAIN MODE. El registro especial CURRENT EXPLAIN MODE habilita e inhabilita el recurso Explain. El tipo de datos de esta propiedad es String. La longitud mxima es de 254 bytes. Esta propiedad solamente es aplicable a conexiones con fuentes de datos que son compatibles con el registro especial CURRENT EXPLAIN MODE, tales como DB2 Database para Linux, UNIX y Windows. currentExplainSnapshot Especifica el valor del registro especial CURRENT EXPLAIN SNAPSHOT. El registro especial CURRENT EXPLAIN SNAPSHOT habilita e inhabilita el recurso de instantneas Explain. El tipo de datos de esta propiedad es String. La longitud mxima es de ocho bytes. Esta propiedad solamente es aplicable a conexiones con fuentes de datos que son compatibles con el registro especial CURRENT EXPLAIN SNAPSHOT, tales como DB2 Database para Linux, UNIX y Windows. currentQueryOptimization Especifica un valor que controla la clase de optimizacin de consulta que el gestor de la base de datos lleva a cabo cuando vincula sentencias de SQL dinmico. El tipo de datos de esta propiedad es int. Los valores posibles de currentQueryOptimization son: 0 Especifica que se lleva a cabo una optimizacin mnima para generar un plan de acceso. Esta clase es la ms adecuada para el acceso SQL dinmico simple para tablas bien indexadas.

1-96

IBM Data Server Driver para JDBC y SQLJ para IDS

Especifica que se realiza una optimizacin prcticamente igual a la de DB2 Database para Linux, UNIX y Windows Versin 1 para crear un plan de acceso. Especifica un nivel de optimizacin ms alto que el de DB2 Database para Linux, UNIX y Windows Versin 1, pero con un coste de optimizacin significativamente menor que los niveles 3 y superiores, especialmente para consultas muy complejas. Especifica que se efecta una optimizacin moderada para generar un plan de acceso. Especifica que se efecta una optimizacin significativa para generar un plan de acceso. Para consultas SQL dinmico complejas, se utilizan las normas heursticas para limitar el tiempo empleado en seleccionar un plan de acceso. Cuando sea posible, las consultas utilizarn tablas de consultas materializadas en lugar de la tablas base subyacentes. Especifica que se efecta una optimizacin significativa para generar un plan de acceso. Este valor es igual a 5, pero sin las reglas heursticas. Especifica la cantidad mxima de optimizacin que se ejecuta para crear un plan de acceso. Puede expandir mucho el nmero de planes de acceso posibles que se evalan. Esta clase debe utilizarse para determinar si se puede generar un plan de acceso mejor para las consultas muy complejas y de muy larga ejecucin que utilizan tablas grandes. Las medidas de explicacin y de rendimiento se pueden utilizar para verificar que se haya generado el plan mejor.

3 5

optimizationProfile Especifica un perfil de optimizacin que se utiliza durante la optimizacin de SQL. El tipo de datos de esta propiedad es String. El valor de optimizationProfile se utiliza para definir el registro especial OPTIMIZATION PROFILE. El valor por omisin es nulo. La propiedad optimizationProfile es aplicable solamente a servidores DB2 Database para Linux, UNIX y Windows. optimizationProfileToFlush Especifica el nombre de un perfil de optimizacin que se debe eliminar de la antememoria de perfiles de optimizacin. El tipo de datos de esta propiedad es String. El valor por omisin es nulo. plugin Nombre del plugin de seguridad JDBC de la parte del cliente. Esta propiedad es de tipo Object y contiene una instancia nueva del mtodo de plugin de seguridad JDBC. pluginName Nombre del mdulo del plugin de seguridad del lado del servidor. useTransactionRedirect Especifica si el sistema DB2 encamina sentencias de SQL hacia particiones de base de datos diferentes para lograr un mejor rendimiento. El tipo de datos de esta propiedad es boolean. El valor por omisin es false. Esta propiedad es aplicable solamente cuando se cumplen estas condiciones: v La conexin se establece con un servidor DB2 Database para Linux, UNIX y Windows donde se utiliza Database Partitioning Feature (DPF).

IBM Data Server Driver para JDBC y SQLJ para IDS

1-97

v La clave de particionamiento permanece constante durante toda una transaccin. Si useTransactionRedirect es true, el IBM Data Server Driver para JDBC y SQLJ enva peticiones de conexin al nodo DPF donde residen los datos de destino de la primera sentencia direccionable de la transaccin. Entonces DB2 Database para Linux, UNIX y Windows encamina la sentencia de SQL hacia particiones diferentes segn sea necesario.

Propiedades de IBM Data Server Driver para JDBC y SQLJ correspondientes a DB2 para z/OS
Algunas de las propiedades de IBM Data Server Driver para JDBC y SQLJ son aplicables solamente a servidores DB2 para z/OS. Estas propiedades son las siguientes: accountingInterval Especifica si se crean registros contables de DB2 para z/OS en los puntos de confirmacin o al concluir la conexin fsica con la fuente de datos. El tipo de datos de esta propiedad es String. Si el valor de accountingInterval es COMMIT, se crean registros contables en los puntos de confirmacin. En otro caso, se crean registros contables al concluir la conexin fsica con la fuente de datos. accountingInterval slo es aplicable al IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 en DB2 para z/OS. accountingInterval no es aplicable a las conexiones en CICS o IMS, ni a los procedimientos almacenados Java. La propiedad accountingInterval altera temporalmente la propiedad de configuracin db2.jcc.accountingInterval. charOutputSize Especifica el nmero mximo de bytes que se deben utilizar para parmetros de procedimiento almacenado INOUT o OUT que estn registrados como Types.CHAR. charOutputSize slo se aplica al IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 con servidores de bases de datos DB2 para z/OS. Puesto que la informacin de DESCRIBE para los parmetros de procedimiento almacenado INOUT y OUT no est disponible en tiempo de ejecucin, el IBM Data Server Driver para JDBC y SQLJ establece 32767 como longitud mxima de cada parmetro INOUT o OUT de carcter. Para los procedimientos almacenados con muchos parmetros Types.CHAR, este valor mximo puede tener como resultado la asignacin de mucho ms almacenamiento del necesario. Para utilizar el almacenamiento de modo ms eficaz, establezca charOutputSize con la longitud mxima prevista para cualquier parmetro INOUT o OUT de Types.CHAR. charOutputSize no tiene ningn efecto sobre los parmetros INOUT o OUT registrados como Types.VARCHAR o Types.LONGVARCHAR. El controlador utiliza la longitud por omisin, 32767, para los parmetros Types.VARCHAR y Types.LONGVARCHAR. El valor que seleccione para charOutputSize debe tener en cuenta la posibilidad de ampliacin durante la conversin de caracteres. Puesto que el IBM Data Server Driver para JDBC y SQLJ no tiene informacin sobre el CCSID correspondiente al servidor que se utiliza para los valores de los parmetros de salida, el controlador solicita los datos de salida del

1-98

IBM Data Server Driver para JDBC y SQLJ para IDS

procedimiento almacenado en UTF-8 Unicode. El valor de charOutputSize debe ser el nmero mximo de bytes que se necesitan despus de que el valor del parmetro se convierta a UTF-8 Unicode. Los caracteres UTF-8 Unicode pueden necesitar hasta tres bytes. (El smbolo del euro es un ejemplo de carcter UTF-8 de tres bytes). Para garantizar que el valor de charOutputSize sea suficientemente elevado, si no dispone de informacin sobre los datos de salida, establezca como valor de charOutputSize un valor del triple de la longitud definida del parmetro CHAR ms elevado. clientAccountingInformation Especifica informacin contable correspondiente al cliente actual de la conexin. Esta informacin se utiliza con fines de contabilidad de clientes. Este valor puede cambiar durante una conexin. El tipo de datos de esta propiedad es String. Para un servidor DB2 para z/OS, la longitud mxima es de 255 bytes. Una serie vaca Java () es vlida para este valor, pero un valor null de Java no es vlido. Esta propiedad solamente es aplicable a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS. clientApplicationInformation Especifica el nombre de aplicacin o transaccin de la aplicacin del usuario final. Utilice esta propiedad para proporcionar la identidad del usuario final cliente con fines de contabilidad y supervisin. Este valor puede cambiar durante una conexin. El tipo de datos de esta propiedad es String. Para un servidor DB2 para z/OS, la longitud mxima es 32 bytes. Una serie de caracteres vaca de Java () es vlida para este valor, pero un valor null de Java no es vlido. Esta propiedad solamente es aplicable a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS. clientDebugInfo Especifica un valor para el atributo de conexin CLIENT DEBUGINFO. Sirve para notificar al servidor DB2 para z/OS que los procedimientos almacenados y funciones definidas por el usuario que estn haciendo uso de la conexin se estn ejecutando en la modalidad de depuracin. CLIENT DEBUGINFO es utilizado por el depurador unificado de DB2. El tipo de datos de esta propiedad es String. La longitud mxima es 254 bytes. Esta propiedad solamente es aplicable a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS. clientProgramId Especifica un valor para ID del programa cliente que sirve para identificar al usuario final. El tipo de datos de esta propiedad es String, y la longitud es 80 bytes. Si el valor del ID de programa es menor que 80 bytes, el valor se debe rellenar con blancos. Esta propiedad solamente es aplicable a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS. clientProgramName Especifica el ID de aplicacin que se utilizar mientras dure la conexin fsica para un cliente. El valor de esta propiedad se convierte en el ID de correlacin en un servidor DB2 para z/OS. Los administradores de base de datos pueden utilizar esta propiedad para correlacionar tareas en un servidor DB2 para z/OS con aplicaciones de cliente. El tipo de datos de esta propiedad es String. La longitud mxima es de 12 bytes. Si este valor es null, el IBM Data Server Driver para JDBC y SQLJ proporcionar un valor db2jccnombre-hebra.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-99

clientUser Especifica el nombre de usuario del cliente actual de la conexin. Esta informacin se utiliza con fines de contabilidad de clientes. A diferencia del nombre de usuario de una conexin JDBC, este valor puede cambiar durante una conexin. Para un servidor DB2 para z/OS, la longitud mxima es 16 bytes. Esta propiedad solamente es aplicable a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS. clientWorkstation Especifica el nombre de la estacin de trabajo correspondiente al cliente actual de la conexin. Esta informacin se utiliza con fines de contabilidad de clientes. Este valor puede cambiar durante una conexin. El tipo de datos de esta propiedad es String. Para un servidor DB2 para z/OS, la longitud mxima es de 18 bytes. Una serie de caracteres vaca de Java () es vlida para este valor, pero un valor null de Java no es vlido. Esta propiedad solamente es aplicable a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS. currentSQLID Especifica: v El ID de autorizacin que se utiliza para la comprobacin de autorizaciones en las sentencias CREATE, GRANT y REVOKE de SQL preparadas dinmicamente. v El propietario de un espacio de tablas, base de datos, grupo de almacenamiento o sinnimo que es creado por una sentencia CREATE emitida dinmicamente. v El calificador implcito de todos los nombres de tabla, vista, alias e ndice especificados en sentencias de SQL dinmico. La propiedad currentSQLID define el valor del registro especial CURRENT SQLID en un servidor DB2 para z/OS. Si la propiedad currentSQLID no est definida, el nombre de esquema por omisin es el valor del registro especial CURRENT SQLID. enableConnectionConcentrator Indica si la funcin del concentrador de conexin del IBM Data Server Driver para JDBC y SQLJ est habilitada. La funcin del concentrador de conexin est disponible slo para conexiones con servidores DB2 para z/OS. El tipo de datos de enableConnectionConcentrator es boolean. El valor por omisin es false. Sin embargo, si enableSysplexWLB se ha establecido en true, el valor por omisin ser true. enableSysplexWLB Indica si la funcin de equilibrado de carga de trabajo Sysplex del IBM Data Server Driver para JDBC y SQLJ est habilitada. La funcin de equilibrado de carga de trabajo Sysplex est disponible slo para conexiones con servidores DB2 para z/OS. El tipo de datos de enableSysplexWLB es boolean. El valor por omisin es false. Si enableSysplexWLB se establece en true, enableConnectionConcentrator se establecer en true por omisin. jdbcCollection Especifica el ID de coleccin de los paquetes que son utilizados por una instancia del IBM Data Server Driver para JDBC y SQLJ durante la ejecucin. El tipo de datos de jdbcCollection es String. El valor por omisin es NULLID.

1-100

IBM Data Server Driver para JDBC y SQLJ para IDS

Esta propiedad se utiliza con la opcin -collection de DB2Binder. El programa de utilidad DB2Binder debe previamente haber vinculado paquetes de IBM Data Server Driver para JDBC y SQLJ en el servidor utilizando un valor de -collection que coincida con el valor de jdbcCollection. El valor de jdbcCollection no determina la coleccin que se utiliza para aplicaciones SQLJ. Para SQLJ, la coleccin est determinada por la opcin -collection del personalizador de SQLJ. jdbcCollection no es aplicable al IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 en DB2 para z/OS. maxTransportObjects Especifica el nmero mximo de objetos de transporte que se pueden utilizar para todas las conexiones con el objeto DataSource asociado. El IBM Data Server Driver para JDBC y SQLJ utiliza objetos de transporte y una agrupacin de objetos de transporte global para dar soporte al concentrador de conexin y al equilibrado de carga de trabajo Sysplex. Existe un solo objeto de transporte para cada conexin fsica con la fuente de base de datos. El tipo de datos de esta propiedad es int. El valor maxTransportObjects se pasa por alto si las propiedades enableConnectionConcentrator y enableSysplexWLB no se establecen para habilitar el uso del concentrador de conexin o del equilibrado de carga de trabajo Sysplex. Si no se ha alcanzado el valor maxTransportObjects y no hay ningn objeto de transporte disponible en la agrupacin de objetos de transporte global, la agrupacin crear un objeto de transporte nuevo. Si se ha alcanzado el valor maxTransportObjects, la aplicacin esperar el tiempo especificado por la propiedad de configuracin db2.jcc.maxTransportObjectWaitTime. Una vez transcurrido dicho perodo de tiempo, si todava no hay ningn objeto de transporte disponible en la agrupacin, la agrupacin emitir una excepcin SQLException. maxTransportObjects no altera temporalmente la propiedad de configuracin db2.jcc.maxTransportObjects. maxTransportObjects no tiene efecto alguna en las conexiones procedentes de otros objetos DataSource. Si el valor maxTransportObjects es mayor que el valor db2.jcc.maxTransportObjects, maxTransportObjects no incrementar el valor db2.jcc.maxTransportObjects. El valor por omisin de maxTransportObjects es -1, lo que significa que el nmero de objetos de transporte de DataSource est limitado nicamente por el valor db2.jcc.maxTransportObjects del controlador. queryCloseImplicit Especifica si los cursores se cierran inmediatamente despus de que se hayan captado todas las filas. queryCloseImplicit se aplica slo para el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4 con servidores de bases de datos DB2 para z/OS. Los valores posibles son DB2BaseDataSource.QUERY_CLOSE_IMPLICIT_YES (1) y DB2BaseDataSource.QUERY_CLOSE_IMPLICIT_NO (2). El valor por omisin es DB2BaseDataSource.QUERY_CLOSE_IMPLICIT_YES. Un valor de DB2BaseDataSource.QUERY_CLOSE_IMPLICIT_YES puede tener un rendimiento mejor, ya que esta configuracin reduce el trfico de red. sendCharInputsUTF8 Especifica si el IBM Data Server Driver para JDBC y SQLJ convierte los datos de entrada de tipo carcter al CCSID del servidor de bases de datos DB2 para
IBM Data Server Driver para JDBC y SQLJ para IDS

1-101

z/OS, o si enva los datos en la codificacin UTF-8 para su conversin por el servidor de bases de datos. La propiedad sendCharInputsUTF8 es aplicable solamente a IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 con servidores de bases de datos DB2 para z/OS. El tipo de datos de esta propiedad es int. Si esta propiedad est definida tambin a nivel de controlador (db2.jcc.sendCharInputsUTF8), este valor prevalece sobre el valor a nivel de controlador. Los valores posibles son: com.ibm.db2.jcc.DB2BaseDataSource.NO (2) Especifica que el IBM Data Server Driver para JDBC y SQLJ convierte los datos de entrada de tipo carcter a la codificacin de destino antes de enviar los datos al servidor de bases de datos DB2 para z/OS. com.ibm.db2.jcc.DB2BaseDataSource.NO es el valor por omisin. com.ibm.db2.jcc.DB2BaseDataSource.YES (1) Especifica que el IBM Data Server Driver para JDBC y SQLJ enva los datos de entrada de tipo carcter al servidor de bases de datos DB2 para z/OS en la codificacin UTF-8. El servidor de bases de datos convierte los datos desde la codificacin UTF-8 al CCSID de destino. Especifique com.ibm.db2.jcc.DB2BaseDataSource.YES solamente si la conversin al CCSID de destino por el SDK de Java causa problemas de conversin de caracteres. El problema ms habitual se produce cuando se utiliza IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 para insertar un carcter Unicode de salto de lnea (U+000A) en una columna de tabla cuyo CCSID es 37, y luego se recuperan esos datos a partir de un cliente que no es un cliente z/OS. Si el SDK de Java realiza la conversin durante la insercin del carcter en la columna, el carcter de salto de lnea se convierte en el carcter de lnea nueva de EBCDIC, X15. Pero, durante la recuperacin de los datos, algunos SDK de Java que se ejecutan en sistemas operativos distintos de z/OS convierten el carcter X15 al carcter de lnea siguiente de Unicode (U+0085), en lugar de convertirlo al carcter de salto de lnea (U+000A). El carcter de lnea siguiente produce un comportamiento inesperado en algunos analizadores sintcticos de XML. Si establece sendCharInputsUTF8 en com.ibm.db2.jcc.DB2BaseDataSource.YES, el servidor de bases de datos DB2 para z/OS convierte el carcter U+000A al carcter de salto de lnea de EBCDIC (X25) durante la insercin en la columna, por lo que el carcter se recupera siempre como carcter de salto de lnea. La conversin de datos al CCSID de destino en el servidor de bases de datos puede hacer que el IBM Data Server Driver para JDBC y SQLJ utilice ms memoria que la conversin por el controlador. El controlador asigna memoria para la conversin de datos de tipo carcter desde la codificacin de origen a la codificacin de los datos que enva al servidor de bases de datos. La cantidad de espacio que el controlador asigna para datos de tipo carcter que se envan a una columna de tabla est basada en la longitud mxima posible de los datos. Los datos con codificacin UTF-8 pueden necesitar hasta tres bytes para cada carcter. Por tanto, si el controlador enva datos UTF-8 al servidor de bases de datos, el controlador necesita asignar un espacio tres veces mayor que el nmero mximo de caracteres de los datos de entrada. Si el controlador realiza la conversin y el CCSID de

1-102

IBM Data Server Driver para JDBC y SQLJ para IDS

destino es un CCSID de un solo byte, el controlador necesita asignar solamente un espacio igual al nmero mximo de caracteres de los datos de entrada. sqljEnableClassLoaderSpecificProfiles Especifica si el IBM Data Server Driver para JDBC y SQLJ permite utilizar y cargar perfiles SQLJ con el mismo nombre Java en varios archivos de aplicacin J2EE (.ear). El tipo de datos de esta propiedad es boolean. El valor por omisin es false. sqljEnableClassLoaderSpecificProfiles es una propiedad de DataSource. Esta propiedad est pensada principalmente para utilizarla con WebSphere Application Server. useRowsetCursor Especifica si el IBM Data Server Driver para JDBC y SQLJ utiliza siempre operaciones FETCH de varias filas para cursores desplazables si la fuente de datos es compatible con esas operaciones. El tipo de datos de esta propiedad es boolean. El valor por omisin es true. La propiedad useRowsetCursor es aplicable solamente a conexiones con servidores de bases de datos DB2 para z/OS. Las aplicaciones que utilizan la tcnica 1 de JDBC para realizar operaciones de actualizacin o supresin de posicin pueden seguir obteniendo los resultados deseados estableciendo useRowSetCursor en false. La tcnica JDBC 1 supone utilizar el mtodo ResultSet.getCursorName para obtener el nombre del cursor para ResultSet, y definir una sentencia UPDATE o DELETE de posicin de esta manera:
UPDATE tabla SET col1=valor1,...coln=valorN WHERE CURRENT OF nombre-cursor DELETE FROM tabla WHERE CURRENT OF nombre_cursor

Esas aplicaciones no operan debidamente si el IBM Data Server Driver para JDBC y SQLJ utiliza sentencias FETCH de varias filas. Establezca useRowSetCursor en false para asegurar que cada operacin FETCH devuelva una sola fila.

Propiedades de IBM Data Server Driver para JDBC y SQLJ correspondientes a IBM Informix Dynamic Server
Algunas de las propiedades de IBM Data Server Driver para JDBC y SQLJ son aplicables solamente a bases de datos de IBM Informix Dynamic Server (IDS). Estas propiedades corresponden a variables de entorno de IDS. Las propiedades especficas de IDS se deben especificar en letras maysculas. Los mtodos getXXX y setXXX para propiedades especficas de IDS se forman anteponiendo get o set al nombre de la propiedad escrito en maysculas. Por ejemplo:
boolean dbDate = DB2BaseDateSource.getDBDATE();

Las propiedades especficas de IDS son: DBANSIWARN Especifica si IBM Data Server Driver para JDBC y SQLJ indica a la base de datos IDS si debe devolver un SQLWarning a la aplicacin si una sentencia SQL utiliza una sintaxis que no sigue el estndar ANSI. El tipo de datos de esta propiedad es boolean. Los valores posibles son: false 0 No enva un valor a la base de datos IDS que indica a la base de datos

IBM Data Server Driver para JDBC y SQLJ para IDS

1-103

IDS si debe devolver un SQLWarning a la aplicacin si una sentencia SQL utiliza una sintaxis que no sigue el estndar ANSI. ste es el valor por omisin. true 1 Enva un valor a la base de datos IDS que indica a la base de datos IDS que debe devolver un SQLWarning a la aplicacin si una sentencia SQL utiliza una sintaxis que no sigue el estndar ANSI. Existe la posibilidad de utilizar la propiedad DBANSIWARN de IBM Data Server Driver para JDBC y SQLJ para establecer la propiedad DBANSIWARN de IDS, sin embargo, no se puede utilizar la propiedad DBANSIWARN de IBM Data Server Driver para JDBC y SQLJ para restablecer la propiedad DBANSIWARN de IDS. DBDATE Especifica el formato de usuario final para los valores de tipo DATE. El tipo de datos de esta propiedad es String. Los valores posibles estn descritos en la explicacin de la variable de entorno DBDATE, en el manual IBM Informix Guide to SQL: Reference. El valor por omisin es Y4MD-. DBPATH Especifica una lista de valores, separados por signos de dos puntos, que identifican los servidores de bases de datos que contienen bases de datos. El tipo de datos de esta propiedad es String. Cada valor puede ser: v Una va de acceso completa v Una va de acceso relativa v El nombre de un servidor de bases de datos IDS v Un nombre de servidor y una va de acceso completa El valor por omisin es .. DBSPACETEMP Especifica una lista de espacios de base de datos existentes, separados por comas o signos de dos puntos, donde se colocan tablas temporales. El tipo de datos de esta propiedad es String. Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno DBSPACETEMP. DBTEMP Especifica la va de acceso completa de un directorio existente donde se colocan archivos temporales y tablas temporales. El tipo de datos de esta propiedad es String. El valor por omisin es /tmp. DBUPSPACE Especifica la cantidad mxima de espacio de disco del sistema y la cantidad mxima de memoria, en kilobytes, que la sentencia UPDATE STATISTICS puede utilizar cuando crea varias distribuciones de columnas al mismo tiempo. El tipo de datos de esta propiedad es String. El formato de DBUPSPACE es espacio-disco-mximo:memoria-mxima. Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno DBUPSPACE. DELIMIDENT Especifica si se pueden utilizar identificadores de SQL delimitados en una aplicacin. El tipo de datos de esta propiedad es boolean. Los valores posibles son:

1-104

IBM Data Server Driver para JDBC y SQLJ para IDS

false

La aplicacin no puede contener identificadores de SQL delimitados. Se utilizan comillas dobles () o comillas simples () para delimitar las series literales. Esto es el valor por omisin. La aplicacin puede contener identificadores de SQL delimitados. Los identificadores de SQL delimitados se deben encerrar entre comillas dobles. Se utilizan comillas simples () para delimitar series literales.

true

IFX_DIRECTIVES Especifica si el optimizador permite directivas de optimizacin de consultas desde dentro de una consulta. El tipo de datos de esta propiedad es String. Los valores posibles son: 1 u ON Se aceptan las directivas de optimizacin. 0 u OFF No se aceptan las directivas de optimizacin. Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno IFX_DIRECTIVES. IFX_EXTDIRECTIVES Especifica si el optimizador permite que directivas externas de optimizacin de consultas procedentes de la tabla de catlogo del sistema sysdirectives se apliquen a las consultas en las aplicaciones existentes. Los valores posibles son: 1 u ON Se aceptan las directivas externas de optimizacin de consultas. 0 u OFF No se aceptan las directivas externas de optimizacin de consultas. Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno IFX_EXTDIRECTIVES. IFX_UPDDESC Especifica si est permitida una operacin DESCRIBE de sentencia UPDATE. El tipo de datos de esta propiedad es String. Cualquier valor no nulo indica que una operacin DESCRIBE de una sentencia UPDATE est permitida. El valor por omisin es 1. IFX_XASTDCOMPLIANCE_XAEND Especifica si las transacciones globales solamente se liberan despus de una retrotraccin explcita o despus de cualquier retrotraccin. El tipo de datos de esta propiedad es String. Los valores posibles son: 0 Las transacciones globales se liberan solamente despus de una retrotraccin explcita. Este comportamiento se ajusta al estndar XA de X/Open. Las transacciones globales se liberan despus de cualquier retrotraccin.

Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno IFX_XASTDCOMPLIANCE_XAEND. INFORMIXOPCACHE Especifica el tamao de la antememoria, en kilobytes, para el espacio de BLOB del rea de transferencia de datos de la aplicacin cliente. El tipo de datos de esta propiedad es String. El valor 0 significa que la antememoria no se utiliza,

IBM Data Server Driver para JDBC y SQLJ para IDS

1-105

Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno INFORMIXOPCACHE. INFORMIXSTACKSIZE Especifica el tamao de pila, en kilobytes, que el servidor de bases de datos utiliza para la hebra primaria de una sesin cliente. El tipo de datos de esta propiedad es String. Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno INFORMIXSTACKSIZE. NODEFDAC Especifica si el servidor de bases de datos impide que se otorguen a PUBLIC privilegios por omisin sobre tablas (SELECT, INSERT, UPDATE y DELETE) cuando se crea una nueva tabla durante la sesin actual, en una base de datos que no se ajusta al estndar ANSI. El tipo de datos de esta propiedad es String. Los valores posibles son: yes El servidor de bases de datos impide que se otorguen a PUBLIC privilegios por omisin sobre tablas cuando se crea una nueva tabla durante la sesin actual, en una base de datos que no se ajusta al estndar ANSI. El servidor de bases de datos no impide que se otorguen a PUBLIC privilegios por omisin sobre tablas cuando se crea una nueva tabla durante la sesin actual, en una base de datos que no se ajusta al estndar ANSI. ste es el valor por omisin.

no

OPTCOMPIND Especifica el mtodo preferido para realizar una operacin de unin en un par ordenado de tablas. El tipo de datos de esta propiedad es String. Los valores posibles son: 0 El optimizador elige realizar una unin de bucle anidado, cuando sea posible, en lugar de una unin de clasificacin-fusin o una unin aleatoria. Cuando el nivel de aislamiento es lectura repetitiva, el optimizador elige realizar una unin de bucle anidado, cuando sea posible, en lugar de una unin de clasificacin-fusin o una unin aleatoria. Cuando el nivel de aislamiento no es lectura repetitiva, el optimizador elige un mtodo de unin basndose en los costes. El optimizador elige un mtodo de unin basndose en los costes, sin importar la modalidad de aislamiento de la transaccin.

Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno OPTCOMPIND. OPTOFC Especifica si se debe habilitar la funcionalidad optimize-OPEN-FETCH-CLOSE. El tipo de datos de esta propiedad es String. Los valores posibles son: 0 1 Inhabilitar la funcionalidad optimize-OPEN-FETCH-CLOSE para todas las hebras de aplicaciones. Habilitar la funcionalidad optimize-OPEN-FETCH-CLOSE para todos los cursores en todas las hebras de aplicaciones.

Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno OPTOFCD.

1-106

IBM Data Server Driver para JDBC y SQLJ para IDS

PDQPRIORITY Especifica el grado de paralelismo utilizado por el servidor de bases de datos. El valor de PDQPRIORITY determina cmo el servidor de bases de datos asigna recursos, tales como memoria, procesadores y lecturas de disco. El tipo de datos de esta propiedad es String. Los valores posibles son: HIGH Cuando el servidor de bases de datos asigna recursos entre todos los usuarios, proporciona tantos recursos como sea posible a las consultas. LOW o 1 El servidor de bases de datos recupera valores de tablas fragmentadas en paralelo. OFF o 0 El proceso en paralelo est inhabilitado. Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno PDQPRIORITY. PSORT_DBTEMP Especifica la va de acceso completa de un directorio en el que el servidor de bases de datos escribe archivos temporales que se utilizan para una operacin de clasificacin. El tipo de datos de esta propiedad es String. Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno PSORT_DBTEMP. PSORT_NPROCS Especifica el nmero mximo de hebras que el servidor de bases de datos puede utilizar para clasificar una consulta. El tipo de datos de esta propiedad es String. El valor mximo de PSORT_NPROCS es 10. Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno PSORT_NPROCS. STMT_CACHE Especifica si se habilita la antememoria de sentencias compartida. El tipo de datos de esta propiedad es String. Los valores posibles son: 0 1 Se inhabilita la antememoria de sentencias compartida. Se habilita una antememoria de sentencias compartida de 512 KB.

Si esta propiedad no est definida, no se enva ningn valor al servidor. Se utiliza el valor de la variable de entorno STMT_CACHE.

Propiedades de configuracin del IBM Data Server Driver para JDBC y SQLJ
Las propiedades de configuracin del IBM Data Server Driver para JDBC y SQLJ tienen un mbito a nivel de controlador. Puede establecer cualquiera de las propiedades de configuracin del IBM Data Server Driver para JDBC y SQLJ siguientes. Todas las propiedades son opcionales. db2.jcc.traceDirectory o db2.jcc.override.traceDirectory Habilita el rastreo del IBM Data Server Driver para JDBC y SQLJ para el cdigo de controlador Java y especifica el directorio en el que se grabar la informacin de rastreo. Cuando se especifica db2.jcc.override.traceDirectory, la informacin de rastreo correspondiente a varias conexiones en el mismo DataSource se graba en varios archivos.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-107

Cuando se especifica db2.jcc.override.traceDirectory, el resultado del rastreo de una conexin se guarda en un archivo denominado nombre_archivo_origen_n. v n es la conexin nmero n correspondiente a una DataSource. v Si no se especifica db2.jcc.traceFileName ni db2.jcc.override.traceFileName, nombre-archivo es traceFile. Si se especifica db2.jcc.traceFileName o db2.jcc.override.traceFileName, nombre-archivo es el valor de db2.jcc.traceFileName o db2.jcc.override.traceFileName. v origen indica el origen del grabador de anotaciones cronolgicas que se est utilizando. Los valores posibles de origen son: cpds Grabador de anotaciones cronolgicas para un objeto DB2ConnectionPoolDataSource.

driver Grabador de anotaciones cronolgicas para un objeto DB2Driver. global Grabador de anotaciones cronolgicas para un objeto DB2TraceManager. sds xads Grabador de anotaciones cronolgicas para un objeto DB2SimpleDataSource. Grabador de anotaciones cronolgicas para un objeto DB2XADataSource.

La propiedad db2.jcc.override.traceDirectory prevalece sobre la propiedad traceDirectory en el caso de un objeto Connection o DataSource. Por ejemplo, si se especifica el valor siguiente para db2.jcc.override.traceDirectory, se habilita el rastreo del cdigo Java del IBM Data Server Driver para JDBC y SQLJ que se guardar en archivos del directorio /SYSTEM/tmp:
db2.jcc.override.traceDirectory=/SYSTEM/tmp

Debe establecer las propiedades del rastreo bajo la direccin del soporte de software de IBM. db2.jcc.traceLevel o db2.jcc.override.traceLevel Especifica qu se debe rastrear. La propiedad db2.jcc.override.traceLevel prevalece sobre la propiedad traceLevel de un objeto Connection o DataSource. Existe la posibilidad de especificar uno o ms niveles de rastreo especificando un valor decimal. Los niveles de rastreo corresponden a los mismos niveles de rastreo que los definidos para la propiedad traceLevel en un objeto Connection o DataSource. Si desea especificar ms de un nivel de rastreo, utilice la operacin (|) OR con los valores, y especifique el resultado con un valor decimal en la especificacin db2.jcc.traceLevel o db2.jcc.override.traceLevel. Por ejemplo, suponga que desea especificar TRACE_DRDA_FLOWS y TRACE_CONNECTIONS para db2.jcc.override.traceLevel. TRACE_DRDA_FLOWS tiene un valor hexadecimal de X40. TRACE_CONNECTION_CALLS tiene un valor hexadecimal de X01. Para especificar ambos niveles de rastreo, hay que realizar una operacin OR a nivel de bits con los dos valores, con lo que se obtiene el valor X41. El valor decimal equivalente es 65, de forma que se especificara:
db2.jcc.override.traceLevel=65

1-108

IBM Data Server Driver para JDBC y SQLJ para IDS

db2.jcc.traceFile o db2.jcc.override.traceFile Habilita el rastreo del IBM Data Server Driver para JDBC y SQLJ para el cdigo de controlador Java y especifica el nombre en el que se basan los nombres de archivo de rastreo. Especifique un nombre de archivo de z/OS UNIX System Services totalmente calificado para el valor de la propiedad db2.jcc.override.traceFile. La propiedad db2.jcc.override.traceFile prevalece sobre la propiedad traceFile en el caso de un objeto Connection o DataSource. Por ejemplo, si se especifica el valor siguiente para db2.jcc.override.traceFile, se habilita el rastreo del cdigo Java del IBM Data Server Driver para JDBC y SQLJ que se guardar en un archivo denominado /SYSTEM/tmp/jdbctrace:
db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace

Debe establecer las propiedades del rastreo bajo la direccin del soporte de software de IBM. db2.jcc.traceFileAppend o db2.jcc.override.traceFileAppend Especifica si se debe o no se debe aadir o sobregrabar los datos en el archivo especificado por la propiedad db2.jcc.override.traceFile. El tipo de datos de esta propiedad es boolean. El valor por omisin es false, que significa que se sobrescribe el archivo especificado por la propiedad traceFile. La propiedad db2.jcc.override.traceFileAppend prevalece sobre la propiedad traceFileAppend en el caso de un objeto Connection o DataSource. Por ejemplo, si se especifica el valor siguiente para db2.jcc.override.traceFileAppend, los datos de rastreo se aaden al archivo de rastreo existente:
db2.jcc.override.traceFileAppend=true

Debe establecer las propiedades del rastreo bajo la direccin del soporte de software de IBM.

Soporte de controladores para las API de JDBC


Los controladores JDBC que pueden ser utilizados por sistemas de bases de datos DB2 e IBM Informix Dynamic Server (IDS) tienen niveles diferentes de compatibilidad para los mtodos JDBC. Las tablas siguientes muestran las interfaces de JDBC y los controladores soportados para cada una. Los controladores y sus plataformas soportadas son:
Tabla 1-15. Controladores JDBC para sistemas de bases de datos DB2 e IDS Nombre del controlador JDBC IBM Data Server Driver para JDBC y SQLJ Fuente de datos asociada DB2 Database para Linux, UNIX y Windows, DB2 para z/OS, o IBM Informix Dynamic Server (IDS) DB2 Database para Linux, UNIX y Windows IDS

Controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows (en desuso) Controlador JDBC de IBM Informix (Controlador JDBC de IDS)

Si un mtodo tiene formatos de JDBC 2.0 y JDBC 3.0, el IBM Data Server Driver para JDBC y SQLJ es compatible con todos los formatos. El controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows solamente es compatible con los formatos JDBC 2.0.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-109

Tabla 1-16. Soporte para mtodos Array Soporte de IBM Data Server Driver para JDBC y SQLJ1 S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No No No No S S S S

Mtodo JDBC getArray getBaseType getBaseTypeName getResultSet Notas:

1. Cuando se utiliza IBM Data Server Driver para JDBC y SQLJ, los mtodos Array se pueden utilizar solamente para conexiones con fuentes de datos DB2 Database para Linux, UNIX y Windows. Tabla 1-17. Soporte para mtodos BatchUpdateException Soporte de IBM Data Server Driver para JDBC y SQLJ S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S

Mtodo JDBC Mtodos heredados de java.lang.Exception getUpdateCounts Tabla 1-18. Soporte para mtodos Blob

Mtodo JDBC getBinaryStream getBytes longitud posicin setBinaryStream setBytes


1 1 1

Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S S

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S No No No S S S S No No No

truncate Notas:

1. Este mtodo no se puede utilizar en los casos siguientes: v Si la propiedad fullyMaterializeLobData est establecida en false. v Para un Blob que se pasa a un procedimiento almacenado Java. Tabla 1-19. Soporte para mtodos CallableStatement Soporte de IBM Data Server Driver para JDBC y SQLJ S S1 Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S

Mtodo JDBC Mtodos heredados de java.sql.Statement Mtodos heredados de java.sql.PreparedStatement

1-110

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-19. Soporte para mtodos CallableStatement (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ No S S S S S S S S S S S S
2 2 2 2 2 2 2,3 2 2 2 2 2,4

Mtodo JDBC getArray getBigDecimal getBlob getBoolean getByte getBytes getClob getDate getDouble getFloat getInt getLong getObject getRef getShort getString getTime getTimestamp getURL registerOutParameter setAsciiStream setBigDecimal setBinaryStream setBoolean setByte setBytes setCharacterStream setDate setDouble setFloat setInt setLong setNull setObject setShort setString setTime setTimestamp

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No S S S S S S S S S S S S
4 3

No S S S S S S S S S S S S No S S

No S S S S S S
5 2 2 2,3 2,3

No S S S S
3 3

S S No S5 S S S S S S S S S S S S S S S S S S

No S
5

S6 S S S S S S S S S S S S S S S S S
6 6 6 6 6 6 6 6 6 6 6 6,,7 6, 6 6 6 6

No No No No No No No No No No No No No No No No No No

IBM Data Server Driver para JDBC y SQLJ para IDS

1-111

Tabla 1-19. Soporte para mtodos CallableStatement (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No S No S

Mtodo JDBC setURL wasNull Notas:

1. El mtodo heredado getParameterMetaData no se puede utilizar si la fuente de datos es DB2 para z/OS. 2. Los formatos siguientes de los mtodos CallableStatement.getXXX no se pueden utilizar si la fuente de datos es DB2 para z/OS: getXXX(String Nombre del parmetro) 3. El servidor de bases de datos no realiza ajustes de zona horaria para valores de fecha y hora. El controlador JDBC ajusta un valor para la zona horaria local despus de recuperar el valor a partir del servidor si el usuario especifica un formato del mtodo getDate, getTime o getTimestamp que incluye un parmetro java.util.Calendar. 4. El formato siguiente del mtodo getObject no se soporta: getObject(int ndiceparmetros, java.util.Map map) 5. El formato siguiente del mtodo registerOutParameter no se soporta: registerOutParameter(int ndiceParmetro, int tipoJdbc, String nombreTipo) 6. No permitido si la fuente de datos es DB2 para z/OS. 7. El formato siguiente de setNull no se soporta: setNull(int ndiceparmetros, int TipoJdbc, String nombreTipo)

Tabla 1-20. Soporte para mtodos Clob Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S
2

Mtodo JDBC getAsciiStream getCharacterStream getSubString longitud posicin setAsciiStream


2 2

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S No No No No S S S S S S S S S

S S S S

setCharacterStream setString truncate Notas:


2

1. Esto es un mtodo de JDBC 4.0. 2. Este mtodo no se puede utilizar en los casos siguientes: v Si la propiedad fullyMaterializeLobData est establecida en false. v Para un Clob que se pasa a un procedimiento almacenado Java.

1-112

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-21. Soporte para mtodos Connection Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S S S S No S S S S S S S S S S S S S No
3 2

Mtodo JDBC clearWarnings close commit createStatement getAutoCommit getCatalog getHoldability getMetaData getTransactionIsolation getTypeMap getWarnings isClosed isReadOnly nativeSQL prepareCall prepareStatement releaseSavepoint rollback setAutoCommit setCatalog setReadOnly setSavepoint setTransactionIsolation setTypeMap Notas:

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S No S S No S S S S S S
1 1

S S S S S S No S S S S S S S S S No S S No No S S S

No S S S S No S No
1

1. El controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows no es compatible con los formatos JDBC 3.0 de este mtodo. 2. Si el procedimiento almacenado contenido en la sentencia CALL se ejecuta en DB2 para z/OS, los parmetros de la sentencia CALL no pueden ser expresiones. 3. El controlador no utiliza el valor. Para el IBM Data Server Driver para JDBC y SQLJ, una conexin se puede definir como de slo lectura mediante la propiedad readOnly de un objeto Connection o DataSource. Tabla 1-22. Soporte para mtodos ConnectionEvent Soporte de IBM Data Server Driver para JDBC y SQLJ S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S

Mtodo JDBC Mtodos heredados de java.util.EventObject getSQLException

IBM Data Server Driver para JDBC y SQLJ para IDS

1-113

Tabla 1-23. Soporte para mtodos ConnectionEventListener Soporte de IBM Data Server Driver para JDBC y SQLJ S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S

Mtodo JDBC connectionClosed connectionErrorOccurred

Tabla 1-24. Soporte para mtodos ConnectionPoolDataSource Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S
1

Mtodo JDBC getLoginTimeout getLogWriter getPooledConnection setLoginTimeout setLogWriter Nota:

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S

1. Este mtodo no est soportado para el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 en DB2 para z/OS. Tabla 1-25. Soporte para mtodos DatabaseMetaData Soporte de IBM Data Server Driver para JDBC y SQLJ S S1 S S S S S S S S S S S S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows S S S S S S No S S S S S S S S No No
7

Mtodo JDBC allProceduresAreCallable allTablesAreSelectable dataDefinitionCausesTransactionCommit dataDefinitionIgnoredInTransactions deletesAreDetected doesMaxRowSizeIncludeBlobs getAttributes getBestRowIdentifier getCatalogs getCatalogSeparator getCatalogTerm getColumnPrivileges getColumns getConnection getCrossReference getDatabaseMajorVersion getDatabaseMinorVersion

Soporte del controlador JDBC de IDS S S1 S S S S No S S S S S S7 S S No No

1-114

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-25. Soporte para mtodos DatabaseMetaData (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S
6

Mtodo JDBC getDatabaseProductName getDatabaseProductVersion getDefaultTransactionIsolation getDriverMajorVersion getDriverMinorVersion getDriverName getDriverVersion getExportedKeys getExtraNameCharacters getIdentifierQuoteString getImportedKeys getIndexInfo getJDBCMajorVersion getJDBCMinorVersion getMaxBinaryLiteralLength getMaxCatalogNameLength getMaxCharLiteralLength getMaxColumnNameLength getMaxColumnsInGroupBy getMaxColumnsInIndex getMaxColumnsInOrderBy getMaxColumnsInSelect getMaxColumnsInTable getMaxConnections getMaxCursorNameLength getMaxIndexLength getMaxProcedureNameLength getMaxRowSize getMaxSchemaNameLength getMaxStatementLength getMaxStatements getMaxTableNameLength getMaxTablesInSelect getMaxUserNameLength getNumericFunctions getPrimaryKeys

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows S S S S S S S S S S S S No No S S S S S S S S S S S S S S S S S S S S S S

Soporte del controlador JDBC de IDS S S S S S S S S S S S S No No S S S S S S S S S S S S S S S S S S S S S S

IBM Data Server Driver para JDBC y SQLJ para IDS

1-115

Tabla 1-25. Soporte para mtodos DatabaseMetaData (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S S S S S S S S S S S S S No S S S S S S S S S S S
5 4 3

Mtodo JDBC getProcedureColumns getProcedures getProcedureTerm getResultSetHoldability getSchemas getSchemaTerm getSearchStringEscape getSQLKeywords getSQLStateType getStringFunctions getSuperTables getSuperTypes getSystemFunctions getTablePrivileges getTables getTableTypes getTimeDateFunctions getTypeInfo getUDTs getURL getUserName getVersionColumns insertsAreDetected isCatalogAtStart isReadOnly locatorsUpdateCopy nullPlusNonNullIsNull nullsAreSortedAtEnd nullsAreSortedAtStart nullsAreSortedHigh nullsAreSortedLow othersDeletesAreVisible othersInsertsAreVisible othersUpdatesAreVisible ownDeletesAreVisible ownInsertsAreVisible

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows S S S No S S S S No S No No S S S S S S S S S S S S S S S S S S S S S S S S
8 7 7

Soporte del controlador JDBC de IDS S S S No S7 S S S No S No No S S S7 S S S S8 S S S S S S S3 S S4 S S5 S1 S S S S S

S1 S S S S S

1-116

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-25. Soporte para mtodos DatabaseMetaData (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S
1

Mtodo JDBC ownUpdatesAreVisible storesLowerCaseIdentifiers storesLowerCaseQuotedIdentifiers storesMixedCaseIdentifiers storesMixedCaseQuotedIdentifiers storesUpperCaseIdentifiers storesUpperCaseQuotedIdentifiers supportsAlterTableWithAddColumn supportsAlterTableWithDropColumn supportsANSI92EntryLevelSQL supportsANSI92FullSQL supportsANSI92IntermediateSQL supportsBatchUpdates supportsCatalogsInDataManipulation supportsCatalogsInIndexDefinitions supportsCatalogsInPrivilegeDefinitions supportsCatalogsInProcedureCalls supportsCatalogsInTableDefinitions SupportsColumnAliasing supportsConvert supportsCoreSQLGrammar supportsCorrelatedSubqueries supportsDataDefinitionAndDataManipulationTransactions supportsDataManipulationTransactionsOnly supportsDifferentTableCorrelationNames supportsExpressionsInOrderBy supportsExtendedSQLGrammar supportsFullOuterJoins supportsGetGeneratedKeys supportsGroupBy supportsGroupByBeyondSelect supportsGroupByUnrelated supportsIntegrityEnhancementFacility supportsLikeEscapeClause supportsLimitedOuterJoins supportsMinimumSQLGrammar

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows S S S S S

Soporte del controlador JDBC de IDS S S1 S4 S S S5 S S S1 S S S S S1 S S S1 S S S S S S S S4 S S S3 No S S S S S S S

S4 S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S
3 4 1 1 1 5

S S S S S S S S S S S S S S S S S S S S S S S No S S S S S S S

IBM Data Server Driver para JDBC y SQLJ para IDS

1-117

Tabla 1-25. Soporte para mtodos DatabaseMetaData (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S
3

Mtodo JDBC supportsMixedCaseIdentifiers supportsMixedCaseQuotedIdentifiers supportsMultipleOpenResults supportsMultipleResultSets supportsMultipleTransactions supportsNamedParameters supportsNonNullableColumns supportsOpenCursorsAcrossCommit supportsOpenCursorsAcrossRollback supportsOpenStatementsAcrossCommit supportsOpenStatementsAcrossRollback supportsOrderByUnrelated supportsOuterJoins supportsPositionedDelete supportsPositionedUpdate supportsResultSetConcurrency supportsResultSetHoldability supportsResultSetType supportsSavepoints supportsSchemasInDataManipulation supportsSchemasInIndexDefinitions supportsSchemasInPrivilegeDefinitions supportsSchemasInProcedureCalls supportsSchemasInTableDefinitions supportsSelectForUpdate supportsStoredProcedures supportsSubqueriesInComparisons supportsSubqueriesInExists supportsSubqueriesInIns supportsSubqueriesInQuantifieds supportsSuperTables supportsSuperTypes supportsTableCorrelationNames supportsTransactionIsolationLevel supportsTransactions supportsUnion

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows S S No S S No S

Soporte del controlador JDBC de IDS S S3 S5 S5 S No S S3 S S3 S3 S S S S S No S S5 S S S S S S S S S S S No No S S S S

S5 S5 S S S S S S
3 3

S S S S S S S S S No S

S3 S S S S S S S S S S S S S S S S S S S S S S S S S
5

No S S S S S S S S S S S No No S S S S

1-118

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-25. Soporte para mtodos DatabaseMetaData (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows S S S S

Mtodo JDBC supportsUnionAll updatesAreDetected usesLocalFilePerTable usesLocalFiles Notas:

Soporte del controlador JDBC de IDS S S S S

1. Las fuentes de datos DB2 devuelven false para este mtodo. Las fuentes de datos IDS devuelven true. 2. Este mtodo solamente se puede utilizar para conexiones con DB2 Database para Linux, UNIX y Windows e IDS. 3. Cuando se utiliza IBM Data Server Driver para JDBC y SQLJ, las fuentes de datos DB2 y las fuentes de datos IDS devuelven true para este mtodo. Cuando se utiliza el controlador JDBC de IDS, las fuentes de datos IDS devuelven false. 4. Cuando se utiliza IBM Data Server Driver para JDBC y SQLJ, las fuentes de datos DB2 y las fuentes de datos IDS devuelven false para este mtodo. Cuando se utiliza el controlador JDBC de IDS, las fuentes de datos IDS devuelven true. 5. Las fuentes de datos DB2 devuelven true para este mtodo. Las fuentes de datos IDS devuelven false. 6. JDBC 3.0 e implementaciones anteriores de IBM Data Server Driver para JDBC y SQLJ devuelven IBM DB2 JDBC Universal Driver Architecture. 7. El controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows no es compatible con el formato JDBC 3.0 de este mtodo. 8. El mtodo se puede ejecutar, pero devuelve un ResultSet vaco. Tabla 1-26. Soporte para mtodos DataSource Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S
2

Mtodo JDBC getConnection getLoginTimeout getLogWriter setLoginTimeout setLogWriter Notas:

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S
1 1

S S S S S

1. El controlador JDBC de DB2 de tipo 2 no utiliza este valor. 2. Este mtodo no est soportado para el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 en DB2 para z/OS. Tabla 1-27. Soporte para mtodos DataTruncation Soporte de IBM Data Server Driver para JDBC y SQLJ S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S

Mtodo JDBC Mtodos heredados de java.lang.Throwable

IBM Data Server Driver para JDBC y SQLJ para IDS

1-119

Tabla 1-27. Soporte para mtodos DataTruncation (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S S S S S

Mtodo JDBC Mtodos heredados de java.sql.SQLException Mtodos heredados de java.sql.SQLWarning getDataSize getIndex getParameter getRead getTransferSize Tabla 1-28. Soporte para mtodos Driver

Mtodo JDBC acceptsURL connect getMajorVersion getMinorVersion getPropertyInfo jdbcCompliant

Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S S S

Tabla 1-29. Soporte para mtodos DriverManager Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S S S S S S S
2

Mtodo JDBC deregisterDriver getConnection getDriver getDrivers getLoginTimeout getLogStream getLogWriter println registerDriver setLoginTimeout setLogStream setLogWriter

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S S S
1 1

S S S S S1 S S S S S1 S S

1-120

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-29. Soporte para mtodos DriverManager (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS

Mtodo JDBC Notas:

1. El controlador JDBC de DB2 de tipo 2 no utiliza este valor. 2. Este mtodo no est soportado para el IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 en DB2 para z/OS. Tabla 1-30. Soporte para mtodos ParameterMetaData Soporte de IBM Data Server Driver para JDBC y SQLJ No S S S S S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No No No No No No No No No No No No No No No No No No

Mtodo JDBC getParameterClassName getParameterCount getParameterMode getParameterType getParameterTypeName getPrecision getScale isNullable isSigned

Tabla 1-31. Soporte para mtodos PooledConnection Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S

Mtodo JDBC addConnectionEventListener close getConnection removeConnectionEventListener

Tabla 1-32. Soporte para mtodos PreparedStatement Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S S S

Mtodo JDBC Mtodos heredados de java.sql.Statement addBatch clearParameters execute executeQuery executeUpdate

IBM Data Server Driver para JDBC y SQLJ para IDS

1-121

Tabla 1-32. Soporte para mtodos PreparedStatement (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S No S S S S S S S S S S S S S S S S No S S
4 3 2 1 1 1

Mtodo JDBC getMetaData getParameterMetaData setArray setAsciiStream setBigDecimal setBinaryStream setBlob setBoolean setByte setBytes setCharacterStream setClob setDate setDouble setFloat setInt setLong setNull setObject setRef setShort setString setTime setTimestamp setUnicodeStream setURL Notas:

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S No S S S S S S S S S S S S S S S S No S S
4 3 2

S S No S S S S S S S S S S2 S S S S S3 S No S S4 S2 S2 S S

S2 S2 S S

S2 S2 S S

1. Si el valor del parmetro length es -1, se leen todos los datos de InputStream o Reader y se envan a la fuente de datos. 2. El servidor de bases de datos no realiza ajustes de zona horaria para valores de fecha y hora. El controlador JDBC ajusta un valor para la zona horaria local antes de enviar el valor al servidor si el usuario especifica un formato del mtodo setDate, setTime o setTimestamp que incluye un parmetro java.util.Calendar. 3. El formato siguiente de setNull no se soporta: setNull(int ndiceparmetros, int Tipojdbc, String Nombretipo) 4. setString no est soportado si la columna tiene el atributo FOR BIT DATA o el tipo de datos es BLOB.

1-122

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-33. Soporte para mtodos Ref Soporte de IBM Data Server Driver para JDBC y SQLJ No Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No No

Mtodo JDBC get BaseTypeName

Tabla 1-34. Soporte para mtodos ResultSet Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S S S S No S S S S S S S S S S S S S S S S S S S S
3 2 1

Mtodo JDBC absolute afterLast beforeFirst cancelRowUpdates clearWarnings close deleteRow findColumn first getArray getAsciiStream getBigDecimal getBinaryStream getBlob getBoolean getByte getBytes getCharacterStream getClob getConcurrency getCursorName getDate getDouble getFetchDirection getFetchSize getFloat getInt getLong getMetaData getObject getRef getShort

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S No S S No S S No S S S S S S S S S S S S S S S S S S S S
3 2

S S S No S S No S S No S S S S S S S S S S S S2 S S S S S S S S3 No S

No S

No S

IBM Data Server Driver para JDBC y SQLJ para IDS

1-123

Tabla 1-34. Soporte para mtodos ResultSet (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S S
2

Mtodo JDBC getStatement getString getTime getTimestamp getType getUnicodeStream getURL getWarnings insertRow isAfterLast isBeforeFirst isFirst isLast last moveToCurrentRow moveToInsertRow next previous refreshRow relative rowDeleted rowInserted rowUpdated setFetchDirection setFetchSize updateArray updateAsciiStream updateBigDecimal updateBinaryStream updateBlob updateBoolean updateByte updateBytes updateCharacterStream updateClob updateDate updateDouble updateFloat

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S
2

S S S2 S2 S S S S No S S S S S No No S S No S No No No S S No No No No No No No No No No No No No

S2 S S S S S S S S S S S S S S S S S S S S S No S S S S S S S S S S S S

S2 S S S S No S S S S S No No S S No S No No No S S No No No No No No No No No No No No No

1-124

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-34. Soporte para mtodos ResultSet (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S No S S S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No No No No No No No No No No S No No No No No No No No No No S

Mtodo JDBC updateInt updateLong updateNull updateObject updateRef updateRow updateShort updateString updateTime updateTimestamp wasNull Notas:

1. No se da soporte agetBinaryStream en columnas de tipo CLOB. 2. El servidor de bases de datos no realiza ajustes de zona horaria para valores de fecha y hora. El controlador JDBC ajusta un valor para la zona horaria local despus de recuperar el valor a partir del servidor si el usuario especifica un formato del mtodo getDate, getTime o getTimestamp que incluye un parmetro java.util.Calendar. 3. El formato siguiente del mtodo getObject no se soporta: getObject(int ndiceparmetros, java.util.Map map)

Tabla 1-35. Soporte para mtodos ResultSetMetaData Soporte de IBM Data Server Driver para JDBC y SQLJ S No S S S S S S S S S S S S
1

Mtodo JDBC getCatalogName getColumnClassName getColumnCount getColumnDisplaySize getColumnLabel getColumnName getColumnType getColumnTypeName getPrecision getScale getSchemaName getTableName isAutoIncrement isCaseSensitive

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S S S S S S S S S S S S S S S S S S S

IBM Data Server Driver para JDBC y SQLJ para IDS

1-125

Tabla 1-35. Soporte para mtodos ResultSetMetaData (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S S S S S

Mtodo JDBC isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable Notas:

1. Para las fuentes de datos IDS, getTableName no devuelve un valor. Tabla 1-36. Soporte para mtodos SQLData Soporte de IBM Data Server Driver para JDBC y SQLJ No No No Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No No No No No No

Mtodo JDBC getSQLTypeName readSQL writeSQL

Tabla 1-37. Soporte para mtodos SQLException Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S

Mtodo JDBC Mtodos heredados de java.lang.Exception getSQLState getErrorCode getNextException setNextException

Tabla 1-38. Soporte para mtodos SQLInput Soporte de IBM Data Server Driver para JDBC y SQLJ No No No No No No Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No No No No No No No No No No No No

Mtodo JDBC readArray readAsciiStream readBigDecimal readBinaryStream readBlob readBoolean

1-126

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-38. Soporte para mtodos SQLInput (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ No No No No No No No No No No No No No No No No Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No

Mtodo JDBC readByte readBytes readCharacterStream readClob readDate readDouble readFloat readInt readLong readObject readRef readShort readString readTime readTimestamp wasNull

Tabla 1-39. Soporte para mtodos SQLOutput Soporte de IBM Data Server Driver para JDBC y SQLJ No No No No No No No No No No No No No No No No No Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No

Mtodo JDBC writeArray writeAsciiStream writeBigDecimal writeBinaryStream writeBlob writeBoolean writeByte writeBytes writeCharacterStream writeClob writeDate writeDouble writeFloat writeInt writeLong writeObject writeRef

IBM Data Server Driver para JDBC y SQLJ para IDS

1-127

Tabla 1-39. Soporte para mtodos SQLOutput (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ No No No No No Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No No No No No No No No No No

Mtodo JDBC writeShort writeString writeStruct writeTime writeTimestamp

Tabla 1-40. Soporte para mtodos Statement Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S S S S S S S S S S S S S2 S S S S S S S S S S S
1

Mtodo JDBC addBatch cancel clearBatch clearWarnings close execute executeBatch executeQuery executeUpdate getConnection getFetchDirection getFetchSize getGeneratedKeys getMaxFieldSize getMaxRows getMoreResults getQueryTimeout getResultSet getResultSetConcurrency getResultSetHoldability getResultSetType getUpdateCount getWarnings setCursorName setEscapeProcessing setFetchDirection setFetchSize setMaxFieldSize
4

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S S S No S S S S S S No S S S S S S S S
3 3 3 2

S S S S S S3 S S S3 S S S No S S S3 S S S No S S S S S S S S

1-128

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-40. Soporte para mtodos Statement (continuacin) Soporte de IBM Data Server Driver para JDBC y SQLJ S S
5

Mtodo JDBC setMaxRows setQueryTimeout Notas:

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S

1. Con IBM Data Server Driver para JDBC y SQLJ, nicamente se da soporte a Statement.cancel() en los siguientes entornos: v Conectividad de tipo 2 y tipo 4 desde un cliente Linux, Unix o Windows a un servidor DB2 Database para Linux, UNIX y Windows versin 8 o posterior. v Conectividad de tipo 2 y tipo 4 desde un cliente Linux, Unix o Windows a un servidor DB2 para z/OS versin 9 o posterior. v Conectividad de tipo 4 desde un cliente z/OS a un servidor DB2 Database para Linux, UNIX y Windows versin 8 o posterior. v Conectividad de tipo 4 desde un cliente z/OS a un servidor DB2 para z/OS versin 9 o posterior. 2. Con el controlador DB2 JDBC tipo 2 para Linux, UNIX y Windows, nicamente se da soporte a Statement.cancel() en los siguientes entornos: v Conexiones a un servidor DB2 Database para Linux, UNIX y Windows versin 8 o posterior. v Conexiones a un servidor DB2 para z/OS versin 9 o posterior. 3. El controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Windows no es compatible con el formato JDBC 3.0 de este mtodo. 4. No est soportado para conjuntos de resultados de procedimiento almacenado. 5. Para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS y para DB2 para i5/OS, este mtodo se puede utilizar solamente para un valor de segundos igual a 0. Tabla 1-41. Soporte para mtodos Struct Soporte de IBM Data Server Driver para JDBC y SQLJ No No Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS No No No No

Mtodo JDBC getSQLTypeName getAttributes

Tabla 1-42. Soporte para mtodos javax.sql.XAConnection Soporte de IBM Data Server Driver para JDBC y SQLJ1 S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S

Mtodo JDBC Mtodos heredados de javax.sql.PooledConnection getXAResource Notas:

1. Estos mtodos se pueden utilizar para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 con un servidor DB2 Database para Linux, UNIX y Windows o IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-129

Tabla 1-43. Soporte para mtodos XADataSource Soporte de IBM Data Server Driver para JDBC y SQLJ S S S S S Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S

Mtodo JDBC getLoginTimeout getLogWriter getXAConnection setLoginTimeout setLogWriter

Tabla 1-44. Soporte para mtodos javax.transaction.xa.XAResource Soporte de IBM Data Server Driver para JDBC y SQLJ S1 S S S S S S S S S
1 1 2 1 1 1 1 2 1

Mtodo JDBC commit end forget getTransactionTimeout isSameRM prepare recover rollback setTransactionTimeout start Notas:

Soporte del controlador JDBC de DB2 de tipo 2 para Linux, UNIX y Soporte del controlador Windows JDBC de IDS S S S S S S S S S S S S S S S S S S S S

1. Estos mtodos se pueden utilizar para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 con un servidor DB2 Database para Linux, UNIX y Windows o IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4. 2. Este mtodo se puede utilizar para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4 con DB2 Database para Linux, UNIX y Windows Versin 9.1 o posterior.

Extensiones para JDBC de IBM Data Server Driver para JDBC y SQLJ
El IBM Data Server Driver para JDBC y SQLJ proporciona un conjunto de extensiones para el soporte que proporciona la especificacin JDBC. Para utilizar mtodos especficos de IBM Data Server Driver para JDBC y SQLJ en clases que tienen las clases estndar correspondientes, convierta cada instancia de la clase JDBC estndar asociada en una instancia de la clase especfica de IBM Data Server Driver para JDBC y SQLJ. Por ejemplo:
javax.sql.DataSource ds = new com.ibm.db2.jcc.DB2SimpleDataSource(); ((com.ibm.db2.jcc.DB2BaseDataSource) ds).setServerName("sysmvs1.stl.ibm.com");

La Tabla 1-45 en la pgina 1-131 resume las interfaces especficas de IBM Data Server Driver para JDBC y SQLJ.

1-130

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-45. Resumen de las interfaces especficas de IBM Data Server Driver para JDBC y SQLJ proporcionadas por el IBM Data Server Driver para JDBC y SQLJ Nombre de interfaz DB2Connection DB2DatabaseMetaData DB2Diagnosable Fuentes de datos aplicables 1, 2, 3 1, 2, 3 1, 2, 3 Finalidad Ampla la interfaz java.sql.Connection. Ampla la interfaz java.sql.DatabaseMetaData. Proporciona un mecanismo para obtener los diagnsticos de DB2 a partir de un SQLException de DB2. Ampla las interfaces com.ibm.db2.jcc.DB2Statement y java.sql.PreparedStatement. Se utiliza para declarar objetos Java para su utilizacin con el tipo de datos ROWID. Ampla la interfaz java.sql.Statement. Se utiliza para recoger datos de supervisin del sistema para una conexin. Se utiliza para actualizar y recuperar datos de columnas XML.

DB2PreparedStatement

1, 2, 3

DB2RowID DB2Statement DB2SystemMonitor DB2Xml

1, 2 1, 2, 3 1, 2, 3 1, 2

Nota: La interfaz es aplicable a conexiones con las fuentes de datos siguientes: 1. DB2 para z/OS 2. DB2 Database para Linux, UNIX y Windows 3. IBM Informix Dynamic Server

La Tabla 1-46 resume las clases especficas de IBM Data Server Driver para JDBC y SQLJ.
Tabla 1-46. Resumen de las clases especficas de IBM Data Server Driver para JDBC y SQLJ proporcionadas por el IBM Data Server Driver para JDBC y SQLJ Nombre de clase DB2Administrator (solamente para DB2 Database para Linux, UNIX y Windows) DB2BaseDataSource Fuentes de datos aplicables 2 en la pgina 1-132 Finalidad Las instancias de la clase DB2Administrator se utilizan para recuperar objetos DB2CataloguedDatabase. Clase padre de fuente de datos abstracta para todas las implementaciones de javax.sql.DataSource, javax.sql.ConnectionPoolDataSource y javax.sql.XADataSource especficas de IBM Data Server Driver para JDBC y SQLJ. Contiene mtodos para recuperar informacin sobre una base de datos DB2 Database para Linux, UNIX y Windows. Implementa las interfaces java.io.Serializable y javax.naming.Referenceable. Fbrica de objetos PooledConnection.

1 en la pgina 1-132, 2 en la pgina 1-132, 3 en la pgina 1-132

DB2CataloguedDatabase

2 en la pgina 1-132

DB2ClientRerouteServerList DB2ConnectionPoolDataSource

1 en la pgina 1-132, 2 en la pgina 1-132 1 en la pgina 1-132, 2 en la pgina 1-132, 3 en la pgina 1-132 1 en la pgina 1-132, 2 en la pgina 1-132, 3 en la pgina 1-132

DB2ExceptionFormatter

Contiene mtodos para la impresin de la informacin de diagnstico en una corriente.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-131

Tabla 1-46. Resumen de las clases especficas de IBM Data Server Driver para JDBC y SQLJ proporcionadas por el IBM Data Server Driver para JDBC y SQLJ (continuacin) Nombre de clase DB2JCCPlugin DB2PooledConnection Fuentes de datos aplicables 2 1, 2, 3 Finalidad Clase abstracta para la implementacin de plugins de seguridad JDBC. Proporciona mtodos que puede utilizar un servidor de aplicaciones para cambiar de usuarios en una conexin fiable preexistente. Proporciona mtodos para la supervisin de la agrupacin de objetos de transporte global para el concentrador de conexiones y el equilibrado de la carga de trabajo Sysplex. Ampla la clase DataBaseDataSource. No soporta agrupaciones de conexiones ni transacciones distribuidas. Encapsulacin de la SQLCA de DB2. Controla el grabador de anotaciones cronolgicas globales. Fuente de objetos XADataSource. Un objeto que implementa esta interfaz se registra con un servicio de asignacin de nombres que se basa en Java Naming and Directory Interface (JNDI).

DB2PoolMonitor

1, 2

DB2SimpleDataSource

1, 2, 3

DB2Sqlca DB2TraceManager DB2XADataSource

1, 2, 3 1, 2, 3 1, 2, 3

Nota: La clase es aplicable a conexiones con las fuentes de datos siguientes: 1. DB2 para z/OS 2. DB2 Database para Linux, UNIX y Windows 3. IBM Informix Dynamic Server

Clase DB2BaseDataSource
La clase com.ibm.db2.jcc.DB2BaseDataSource es la clase padre de fuente de datos abstracta para todas las implementaciones de javax.sql.DataSource, javax.sql.ConnectionPoolDataSource y javax.sql.XADataSource especficas de IBM Data Server Driver para JDBC y SQLJ.

Propiedades de DB2BaseDataSource
Las propiedades siguientes se definen solamente para el IBM Data Server Driver para JDBC y SQLJ. Cada una de estas propiedades tiene un mtodo setXXX para definir el valor de la propiedad y un mtodo getXXX para obtener el valor. Un mtodo setXXX tiene este formato:
void setNombre-propiedad(tipo-datos valor-propiedad)

Un mtodo getXXX tiene este formato:


tipo-datos getNombre-propiedad()

Nombre-propiedad es el nombre de propiedad no calificado. En el caso de propiedades que no son especficas de IBM Informix Dynamic Server (IDS), el primer carcter del nombre de la propiedad est en maysculas. En el caso de propiedades que nicamente utiliza IDS, todos los caracteres del nombre de la propiedad estn en maysculas.

1-132

IBM Data Server Driver para JDBC y SQLJ para IDS

La tabla siguiente lista las propiedades del IBM Data Server Driver para JDBC y SQLJ y los tipos de datos asociados a ellas.
Tabla 1-47. Propiedades de DB2BaseDataSource y tipos de datos asociados a ellas
Nombre de propiedad com.ibm.db2.jcc.DB2BaseDataSource.accountingInterval com.ibm.db2.jcc.DB2BaseDataSource.blockingReadConnectionTimeout com.ibm.db2.jcc.DB2BaseDataSource.charOutputSize com.ibm.db2.jcc.DB2BaseDataSource.clientAccountingInformation ( IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS solamente) com.ibm.db2.jcc.DB2BaseDataSource.clientApplicationInformation ( IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS solamente) com.ibm.db2.jcc.DB2BaseDataSource.clientDebugInfo ( IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS solamente) com.ibm.db2.jcc.DB2BaseDataSource.clientProgramId ( IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS solamente) com.ibm.db2.jcc.DB2BaseDataSource.clientProgramName com.ibm.db2.jcc.DB2BaseDataSource.clientRerouteAlternateServerName com.ibm.db2.jcc.DB2BaseDataSource.clientRerouteAlternatePortNumber com.ibm.db2.jcc.DB2BaseDataSource.clientRerouteServerListJNDIContext com.ibm.db2.jcc.DB2BaseDataSource.clientRerouteServerListJNDIName com.ibm.db2.jcc.DB2BaseDataSource.clientUser ( IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS solamente) com.ibm.db2.jcc.DB2BaseDataSource.clientWorkstation ( IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS solamente) com.ibm.db2.jcc.DB2BaseDataSource.connectNode com.ibm.db2.jcc.DB2BaseDataSource.currentDegree com.ibm.db2.jcc.DB2BaseDataSource.currentExplainMode com.ibm.db2.jcc.DB2BaseDataSource.currentExplainSnapshot com.ibm.db2.jcc.DB2BaseDataSource.currentFunctionPath com.ibm.db2.jcc.DB2BaseDataSource.currentLockTimeout com.ibm.db2.jcc.DB2BaseDataSource.currentMaintainedTableTypesForOptimization com.ibm.db2.jcc.DB2BaseDataSource.currentPackagePath com.ibm.db2.jcc.DB2BaseDataSource.currentPackageSet com.ibm.db2.jcc.DB2BaseDataSource.currentQueryOptimization com.ibm.db2.jcc.DB2BaseDataSource.currentRefreshAge com.ibm.db2.jcc.DB2BaseDataSource.currentSchema com.ibm.db2.jcc.DB2BaseDataSource.cursorSensitivity com.ibm.db2.jcc.DB2BaseDataSource.currentSQLID com.ibm.db2.jcc.DB2BaseDataSource.databaseName com.ibm.db2.jcc.DB2BaseDataSource.dateFormat com.ibm.db2.jcc.DB2BaseDataSource.decimalRoundingMode com.ibm.db2.jcc.DB2BaseDataSource.defaultIsolationLevel Fuentes de datos aplicables 1 en la pgina 1-135 Tipo de datos String

1 en la pgina 1-135, 2 en la pgina int 1-135, 3 en la pgina 1-135 1 en la pgina 1-135 short

1 en la pgina 1-135, 2 en la pgina String 1-135 1 en la pgina 1-135 1 en la pgina 1-135 1 en la pgina 1-135 1 en la pgina 1-135 String String String String

1 en la pgina 1-135, 2 en la pgina String 1-135 1 en la pgina 1-135, 2 en la pgina String 1-135 1 en la pgina 1-135, 2 en la pgina javax.naming. 1-135 Context 1 en la pgina 1-135, 2 en la pgina String 1-135 1 en la pgina 1-135 1 en la pgina 1-135 2 en la pgina 1-135 String String int

1 en la pgina 1-135, 2 en la pgina String 1-135 2 en la pgina 1-135 2 en la pgina 1-135 String String

1 en la pgina 1-135, 2 en la pgina String 1-135 2 en la pgina 1-135, 3 en la pgina int 1-135 1 en la pgina 1-135, 2 en la pgina String 1-135 1 en la pgina 1-135, 2 en la pgina String 1-135 1 en la pgina 1-135, 2 en la pgina String 1-135 2 en la pgina 1-135 int

1 en la pgina 1-135, 2 en la pgina long 1-135 1 en la pgina 1-135, 2 en la pgina String 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135 1 en la pgina 1-135 String

1 en la pgina 1-135, 2 en la pgina String 1-135, 3 en la pgina 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135, 3 en la pgina 1-135

IBM Data Server Driver para JDBC y SQLJ para IDS

1-133

Tabla 1-47. Propiedades de DB2BaseDataSource y tipos de datos asociados a ellas (continuacin)


Nombre de propiedad com.ibm.db2.jcc.DB2BaseDataSource.deferPrepares com.ibm.db2.jcc.DB2BaseDataSource.description com.ibm.db2.jcc.DB2BaseDataSource.downgradeHoldCursorsUnderXa Fuentes de datos aplicables Tipo de datos 1 en la pgina 1-135, 2 en la pgina boolean 1-135, 3 en la pgina 1-135 1 en la pgina 1-135, 2 en la pgina String 1-135, 3 en la pgina 1-135 1 en la pgina 1-135, 2 en la pgina boolean 1-135,3 en la pgina 1-135 en la pgina 1-135 en la pgina 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135, 3 en la pgina 1-135 1 en la pgina 1-135 1 en la pgina 1-135 boolean boolean

com.ibm.db2.jcc.DB2BaseDataSource.driverType com.ibm.db2.jcc.DB2BaseDataSource.enableConnectionConcentrator com.ibm.db2.jcc.DB2BaseDataSource.enableSysplexWLB com.ibm.db2.jcc.DB2BaseDataSource.fullyMaterializeInputStreams com.ibm.db2.jcc.DB2BaseDataSource.fullyMaterializeLobData com.ibm.db2.jcc.DB2BaseDataSource.gssCredential com.ibm.db2.jcc.DB2BaseDataSource.jdbcCollection com.ibm.db2.jcc.DB2BaseDataSource.keepDynamic com.ibm.db2.jcc.DB2BaseDataSource.kerberosServerPrincipal com.ibm.db2.jcc.DB2BaseDataSource.loginTimeout (no vlido para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 sobre DB2 para z/OS) com.ibm.db2.jcc.DB2BaseDataSource.logWriter com.ibm.db2.jcc.DB2BaseDataSource.maxRetriesForClientReroute com.ibm.db2.jcc.DB2BaseDataSource.maxTransportObjects com.ibm.db2.jcc.DB2BaseDataSource.optimizationProfile com.ibm.db2.jcc.DB2BaseDataSource.optimizationProfileToFlush com.ibm.db2.jcc.DB2BaseDataSource.password com.ibm.db2.jcc.DB2BaseDataSource.pkList ( IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2) com.ibm.db2.jcc.DB2BaseDataSource.planName (solamente para IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2) com.ibm.db2.jcc.DB2BaseDataSource.plugin com.ibm.db2.jcc.DB2BaseDataSource.pluginName com.ibm.db2.jcc.DB2BaseDataSource.portNumber com.ibm.db2.jcc.DB2BaseDataSource.progressiveStreaming com.ibm.db2.jcc.DB2BaseDataSource.queryDataSize com.ibm.db2.jcc.DB2BaseDataSource.queryCloseImplicit com.ibm.db2.jcc.DB2BaseDataSource.readOnly com.ibm.db2.jcc.DB2BaseDataSource.resultSetHoldability

1 en la pgina 1-135, 2 en la pgina boolean 1-135 1 en la pgina 1-135, 2 en la pgina boolean 1-135, 3 en la pgina 1-135 1 en la pgina 1-135, 2 en la pgina Object 1-135 1 en la pgina 1-135 String

1 en la pgina 1-135, 3 en la pgina int 1-135 1 en la pgina 1-135, 2 en la pgina String 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135, 3 en la pgina 1-135 1 en la pgina 1-135, 2 en la pgina PrintWriter 1-135, 3 en la pgina 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135 1 en la pgina 1-135 2 en la pgina 1-135 2 en la pgina 1-135 int String String

1 en la pgina 1-135, 2 en la pgina String 1-135, 3 en la pgina 1-135 1 en la pgina 1-135 1 en la pgina 1-135 2 en la pgina 1-135 2 en la pgina 1-135 String String Object String

1 en la pgina 1-135, 2 en la pgina int 1-135, 3 en la pgina 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135, 3 en la pgina 1-135 1 en la pgina 1-135, 3 en la pgina int 1-135 1 en la pgina 1-135, 2 en la pgina boolean 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135,3 en la pgina 1-135 en la pgina 1-135 en la pgina 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135 1 en la pgina 1-135, 3 en la pgina boolean 1-135 1 en la pgina 1-135, 2 en la pgina int 1-135

com.ibm.db2.jcc.DB2BaseDataSource.resultSetHoldabilityForCatalogQueries com.ibm.db2.jcc.DB2BaseDataSource.retrieveMessagesFromServerOnGetMessage com.ibm.db2.jcc.DB2BaseDataSource.retryIntervalForClientReroute

1-134

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-47. Propiedades de DB2BaseDataSource y tipos de datos asociados a ellas (continuacin)


Nombre de propiedad com.ibm.db2.jcc.DB2BaseDataSource.returnAlias com.ibm.db2.jcc.DB2BaseDataSource.securityMechanism com.ibm.db2.jcc.DB2BaseDataSource.sendCharInputsUTF8 com.ibm.db2.jcc.DB2BaseDataSource.sendDataAsIs com.ibm.db2.jcc.DB2BaseDataSource.serverName com.ibm.db2.jcc.DB2BaseDataSource.sqljEnableClassLoaderSpecificProfiles com.ibm.db2.jcc.DB2BaseDataSource.sslConnection com.ibm.db2.jcc.DB2BaseDataSource.streamBufferSize com.ibm.db2.jcc.DB2BaseDataSource.supportsAsynchronousXARollback com.ibm.db2.jcc.DB2BaseDataSource.sysSchema com.ibm.db2.jcc.DB2BaseDataSource.timeFormat com.ibm.db2.jcc.DB2BaseDataSource.traceDirectory com.ibm.db2.jcc.DB2BaseDataSource.traceFile com.ibm.db2.jcc.DB2BaseDataSource.traceFileAppend com.ibm.db2.jcc.DB2BaseDataSource.traceLevel com.ibm.db2.jcc.DB2BaseDataSource.useCachedCursor com.ibm.db2.jcc.DB2BaseDataSource.user com.ibm.db2.jcc.DB2BaseDataSource.useRowsetCursor com.ibm.db2.jcc.DB2BaseDataSource.useTransactionRedirect com.ibm.db2.jcc.DB2BaseDataSource.xaNetworkOptimization com.ibm.db2.jcc.DB2BaseDataSource.DBANSIWARN com.ibm.db2.jcc.DB2BaseDataSource.DBDATE com.ibm.db2.jcc.DB2BaseDataSource.DBPATH com.ibm.db2.jcc.DB2BaseDataSource.DBSPACETEMP com.ibm.db2.jcc.DB2BaseDataSource.DBTEMP com.ibm.db2.jcc.DB2BaseDataSource.DBUPSPACE com.ibm.db2.jcc.DB2BaseDataSource.DELIMIDENT com.ibm.db2.jcc.DB2BaseDataSource.IFX_DIRECTIVES com.ibm.db2.jcc.DB2BaseDataSource.IFX_EXTDIRECTIVES com.ibm.db2.jcc.DB2BaseDataSource.IFX_UPDDESC com.ibm.db2.jcc.DB2BaseDataSource.IFX_XASTDCOMPLIANCE_XAEND com.ibm.db2.jcc.DB2BaseDataSource.INFORMIXOPCACHE com.ibm.db2.jcc.DB2BaseDataSource.INFORMIXSTACKSIZE com.ibm.db2.jcc.DB2BaseDataSource.NODEFDAC com.ibm.db2.jcc.DB2BaseDataSource.OPTCOMPIND com.ibm.db2.jcc.DB2BaseDataSource.OPTOFC com.ibm.db2.jcc.DB2BaseDataSource.PDQPRIORITY com.ibm.db2.jcc.DB2BaseDataSource.PSORT_DBTEMP com.ibm.db2.jcc.DB2BaseDataSource.PSORT_NPROCS com.ibm.db2.jcc.DB2BaseDataSource.STMT_CACHE Nota: La propiedad es aplicable a conexiones con las fuentes de datos siguientes: 1. DB2 para z/OS 2. DB2 Database para Linux, UNIX y Windows 3. IBM Informix Dynamic Server Fuentes de datos aplicables 1, 2 1, 2, 3 1 1, 2, 3 1, 2, 3 1 1, 2 1, 2 1, 2 1, 2 1, 2 1, 2, 3 1, 2, 3 1, 2, 3 1, 2, 3 1, 2 1, 2, 3 1 2 1, 2, 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Tipo de datos short int int boolean String boolean boolean int int String int String String boolean int boolean String boolean boolean boolean boolean String String String String String boolean String String String String String String String String String String String String String

Mtodos de DB2BaseDataSource
Adems de los mtodos getXXX y setXXX para las propiedades de DB2BaseDataSource, estn definidos los mtodos siguientes solo para el IBM Data Server Driver para JDBC y SQLJ.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-135

getReference Formato:
public javax.naming.Reference getReference() throws javax.naming.NamingException

Obtiene la referencia (Reference) de un objeto DataSource. Para obtener una explicacin sobre Reference, consulte la descripcin de javax.naming.Referenceable en la documentacin de JNDI, que se encuentra en:
http://java.sun.com/products/jndi/docs.html

Clase DB2ClientRerouteServerList
La clase com.ibm.db2.jcc.DB2ClientRerouteServerList implementa las interfaces java.io.Serializable y javax.naming.Referenceable.

Mtodos DB2ClientRerouteServerList
getAlternatePortNumber Formato:
public int[] getAlternatePortNumber()

Recupera los nmeros de puerto correspondientes a los servidores alternativos. getAlternateServerName Formato:
public String[] getAlternateServerName()

Recupera una matriz que contiene los nombres de los servidores alternativos. Estos valores son direcciones IP o nombres de servidor DNS. getPrimaryPortNumber Formato:
public int getPrimaryPortNumber()

Recupera el nmero de puerto asociado al servidor primario. getPrimaryServerName Formato:


public String[] getPrimaryServerName()

Recupera el nombre del servidor primario. Este valor es una direccin IP o un nombre de servidor DNS. setAlternatePortNumber Formato:
public void setAlternatePortNumber(int[] listaNmeroPuertoAlternativo)

Recupera los nmeros de puerto correspondientes a los servidores alternativos. setAlternateServerName Formato:
public void setAlternateServerName(String[] servidor-alternativo)

Define los nombres de servidores alternativos. Estos valores son direcciones IP o nombres de servidor DNS. setPrimaryPortNumber Formato:
public void setPrimaryPortNumber(int nmeroPuertoPrimario)

1-136

IBM Data Server Driver para JDBC y SQLJ para IDS

Define el nmero de puerto asociado al servidor primario. setPrimaryServerName Formato:


public void setPrimaryServerName(String servidor-primario)

Define el nombre del servidor primario. Este valor es una direccin IP o un nombre de servidor DNS.

Interfaz DB2Connection
La interfaz com.ibm.db2.jcc.DB2Connection ampla la interfaz java.sql.Connection.

Campos de DB2Connection
Los campos siguientes se definen solamente para IBM Data Server Driver para JDBC y SQLJ, y son aplicables solamente a conexiones con bases de datos IBM Informix Dynamic Server (IDS). public int TRANSACTION_IDS_CURSOR_STABILITY (-1) Especifica un nivel de aislamiento de transaccin para una conexin. Con este nivel de aislamiento de transaccin, una aplicacin adquiere un bloqueo compartido sobre una fila recuperada. Ese bloqueo se libera cuando la aplicacin recupera otra fila o cierra el cursor. Otras aplicaciones pueden adquirir un bloqueo compartido sobre la misma fila, pero ningn proceso puede adquirir un bloqueo exclusivo para modificar datos de la fila. Utilice TRANSACTION_IDS_CURSOR_STABILITY para los programas que recuperan una fila de una tabla y actualizan otra tabla con el contenido de esa fila. TRANSACTION_IDS_CURSOR_STABILITY tiene el mismo comportamiento que java.sql.Connection.TRANSACTION_READ_COMMITTED cuando la aplicacin no est realizando actualizaciones de la base de datos. public int TRANSACTION_IDS_LAST_COMMITTED (-2) Especifica un nivel de aislamiento de transaccin para una conexin. Con este nivel de aislamiento de transaccin, cuando una aplicacin intenta leer una fila de una tabla, y otra aplicacin tiene un bloqueo exclusivo sobre la tabla, la fuente de datos devuelve la versin confirmada ms recientemente de la fila a la primera aplicacin. Utilice TRANSACTION_IDS_LAST_COMMITTED en los programas para los que la vigencia de los datos sea menos importante que la evitacin de puntos muertos o tiempos de espera excedidos.

Mtodos de DB2Connection
Los mtodos siguientes slo se definen para el IBM Data Server Driver para JDBC y SQLJ. alternateWasUsedOnConnect Formato:
public boolean alternateWasUsedOnConnect() throws java.sql.SQLException

Devuelve true si el controlador utiliz informacin sobre el servidor alternativo para obtener la conexin. La informacin sobre el servidor alternativo est disponible en la informacin transitoria de

IBM Data Server Driver para JDBC y SQLJ para IDS

1-137

clientRerouteServerList en DB2BaseDataSource, que el servidor de bases de datos actualiza cuando cambian los servidores primario y alternativo. changeDB2Password Formato:
public abstract void changeDB2Password(String oldPassword, String newPassword) throws java.sql.SQLException

Cambia la contrasea para acceder a la fuente de datos, para el usuario del objeto Connection. Descripciones de parmetros: oldPassword Contrasea original de Connection. newPassword Contrasea nueva de Connection. createArrayOf Formato:
Array createArrayOf(String typeName, Object[] elements) throws SQLException;

Crea un objeto java.sql.Array. Descripciones de parmetros: typeName Tipo de datos de SQL de los elementos de la matriz. typeName puede ser un tipo de datos incorporado o un tipo diferenciado. elements Elementos utilizados para llenar el objeto Array. getDB2Correlator Formato:
String getDB2Correlator() throws java.sql.SQLException

Devuelve el valor de la variable de instancia (smbolo de correlacin) crrtkn que DRDA enva con el mandato ACCRDB. El smbolo de correlacin nicamente identifica una conexin lgica con un servidor. getDB2CurrentPackagePath Formato:
public String getDB2CurrentPackagePath() throws java.sql.SQLException

Devuelve una lista de colecciones de paquetes de DB2 en los que se buscan los paquetes JDBC y SQLJ. El mtodo getDB2CurrentPackagePath solamente se aplica a conexiones con sistemas de bases de datos de DB2. getDB2CurrentPackageSet Formato:
public String getDB2CurrentPackageSet() throws java.sql.SQLException

1-138

IBM Data Server Driver para JDBC y SQLJ para IDS

Devuelve el ID de coleccin para la conexin. El mtodo getDB2CurrentPackageSet solamente se aplica a conexiones con sistemas de bases de datos de DB2. getDB2SecurityMechanism Formato:
public int getDB2SecurityMechanism() throws java.sql.SQLException

Devuelve el mecanismo de seguridad que est en vigor para la conexin: 3 4 7 9 11 12 13 15 16 Seguridad por contrasea sin cifrar Seguridad por ID de usuario solamente Seguridad por contrasea cifrada Seguridad por ID de usuario y contrasea cifrados Seguridad Kerberos Seguridad por ID de usuario y datos cifrados Seguridad por ID de usuario, contrasea y datos cifrados Seguridad por plugin Seguridad por ID de usuario cifrado solamente

getDB2SystemMonitor Formato:
public abstract DB2SystemMonitor getDB2SystemMonitor() throws java.sql.SQLException

Obtiene el objeto supervisor del sistema de la conexin. Cada conexin del IBM Data Server Driver para JDBC y SQLJ puede tener un supervisor del sistema individual. getJccLogWriter Formato:
public PrintWriter getJccLogWriter() throws java.sql.SQLException

Obtiene el destino de rastreo actual para la funcin de rastreo del IBM Data Server Driver para JDBC y SQLJ. isDB2Alive Formato:
public boolean DB2Connection.isDB2Alive() throws java.sql.SQLException

Devuelve true si el socket de una conexin con la fuente de datos est todava activo. isDB2GatewayConnection Formato:
public boolean DB2Connection.isDB2GatewayConnection() throws java.sql.SQLException

Devuelve el valor true si la conexin con la fuente de datos se realiza a travs de una pasarela DB2 Connect intermedia. En caso contrario devuelve false.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-139

reconfigureDB2Connection Formato:
public void reconfigureDB2Connection(java.util.Properties properties) throws SQLException

Vuelve a configurar una conexin con valores nuevos. La conexin no debe devolverse a una agrupacin de conexiones antes de que se vuelva a configurar. Se puede llamar a este mtodo mientras una transaccin se encuentra en curso y puede utilizarse para las conexiones fiables o no fiables. Descripciones de parmetros: properties Propiedades nuevas de la conexin. Estas propiedades alteran temporalmente todas las propiedades que ya se han definido en la instancia de DB2Connection. reuseDB2Connection (trusted connection reuse) Formatos:
public Connection reuseDB2Connection(byte[] cookie, String user, String password, String usernameRegistry, byte[] userSecToken, String originalUser, java.util.Properties properties) throws java.sql.SQLException public Connection reuseDB2Connection(byte[] cookie, org.ietf.GSSCredential gssCredential, String usernameRegistry, byte[] userSecToken, String originalUser, java.util.Properties properties) throws java.sql.SQLException

Mtodo utilizado por un servidor de aplicaciones fiable para volver a utilizar una conexin fiable preexistente en nombre de un usuario nuevo. Se pasan las propiedades que pueden restaurarse, incluido el ID de usuario nuevo. El servidor de bases de datos restaura la conexin fsica asociada. Si reuseDB2Connection se ejecuta correctamente, el nuevo usuario podr utilizar inmediatamente la conexin con propiedades diferentes. La segunda forma de reuseDB2Connection slo est soportada para la IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4. Descripciones de parmetros: cookie Cookie exclusivo creado por el controlador JDBC para la instancia de Connection. Slo el servidor de aplicaciones y el controlador JDBC subyacente que estableci la conexin fiable inicial conocen la cookie. El servidor de aplicaciones pasa la cookie creada por el controlador en el momento de la creacin de la instancia de la conexin agrupada. El controlador JDBC comprueba que la cookie proporcionada coincida con la cookie de la conexin fsica fiable subyacente para garantizar que la peticin se ha creado a partir del servidor de aplicaciones que ha establecido la conexin fsica fiable. Si las cookies coinciden, el usuario podr utilizar inmediatamente la conexin con propiedades diferentes. user ID de cliente que el sistema de bases de datos utiliza para establecer el ID de autorizacin de la base de datos. Si el servidor de aplicaciones no ha

1-140

IBM Data Server Driver para JDBC y SQLJ para IDS

autenticado al usuario, el servidor de aplicaciones deber pasar un ID de cliente que represente a un usuario sin autenticacin. password Contrasea de user. gssCredential Si la fuente de datos utiliza la seguridad Kerberos, especifica una credencial delegada que se pasa desde otro principal. userNameRegistry Nombre que identifica un servicio de correlacin que correlaciona un ID de usuario de estacin de trabajo con un ID de z/OS RACF. Un ejemplo de servicio de correlacin es la correlacin de identidades empresariales (EIM) de servicios de seguridad integrados. El servicio de correlacin se define mediante un plugin. Los proveedores de plugins definen los valores vlidos de userNameRegistry. Si el valor de userNameRegistry es nulo, no se realizar ninguna correlacin de usuario user. userSecToken Smbolos de seguridad del cliente. Este valor se rastrea como parte de los datos contables de DB2 para z/OS. El contenido de userSecToken es descrito por el servidor de aplicaciones y es especificado por el sistema de bases de datos como smbolo de seguridad del servidor de aplicaciones. originalUser ID del usuario original utilizado por el servidor de aplicaciones. properties Propiedades de la conexin reutilizada. reuseDB2Connection (reutilizacin no fiable con reautentificacin) Formatos:
public DB2Connection reuseDB2Connection(String user, String password, java.util.Properties properties) throws java.sql.SQLException public DB2Connection reuseDB2Connection( org.ietf.jgss.GSSCredential gssCredential, java.util.Properties properties) throws java.sql.SQLException

En un entorno de agrupacin heterogneo, se utiliza una instancia de Connection despus de que se haya vuelto a realizar la autenticacin. Descripcin de parmetros: user ID de autorizacin que se utiliza para establecer la conexin. password Contrasea del ID de autorizacin que se utiliza para establecer la conexin. gssCredential Si la fuente de datos utiliza la seguridad Kerberos, especifica una credencial delegada que se pasa desde otro principal. properties Propiedades de la conexin reutilizada. Estas propiedades alteran temporalmente todas las propiedades que ya se han definido en la instancia de DB2Connection.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-141

reuseDB2Connection (reutilizacin no fiable o fiable sin reautentificacin) Formatos:


public DB2Connection reuseDB2Connection(java.util.Properties properties) throws java.sql.SQLException

Reutiliza una instancia de conexin sin reautentificacin. Este mtodo est diseado para reutilizar la instancia de Connection en el caso de que las propiedades no cambien. Este mtodo sirve para la dirty reuse de una conexin. Esto significa que el estado de la conexin no se restablece cuando se reutiliza el objeto desde la agrupacin. Los valores de propiedad y los valores de registro especiales siguen vigentes a menos que los alteren temporalmente las propiedades pasadas. No se suprimen las tablas temporales globales. Las propiedades que no se especifiquen no se volvern a inicializar. Todas las propiedades transitorias estndar de JDBC, como el nivel de aislamiento, la modalidad de confirmacin automtico y la modalidad de slo lectura se restablecen a sus valores por omisin de JDBC. Ciertas propiedades, como por ejemplo, user, password, databaseName, serverName, portNumber, planName y pkList permanecern sin modificar. Descripcin de parmetros: properties Propiedades de la conexin reutilizada. Estas propiedades alteran temporalmente todas las propiedades que ya se han definido en la instancia de DB2Connection. setDB2CurrentPackagePath Formato:
public void setDB2CurrentPackagePath(String packagePath) throws java.sql.SQLException

Especifica una lista de ID de coleccin en que el sistema de bases de datos busca paquetes JDBC y SQLJ. El mtodo setDB2CurrentPackagePath solamente se aplica a conexiones con sistemas de bases de datos de DB2. Descripcin de parmetros: packagePath Lista de ID de coleccin, separados por comas. setDB2CurrentPackageSet Formato:
public void setDB2CurrentPackageSet(String packageSet) throws java.sql.SQLException

Especifica el ID de coleccin de la conexin. Cuando define este valor, tambin define el ID de coleccin de la instancia del IBM Data Server Driver para JDBC y SQLJ que se utiliza para la conexin. El mtodo setDB2CurrentPackageSet solamente se aplica a conexiones con sistemas de bases de datos de DB2. Descripcin de parmetros: packageSet ID de coleccin para la conexin. La longitud mxima del valor de

1-142

IBM Data Server Driver para JDBC y SQLJ para IDS

packageSet es 18 bytes. Puede invocar este mtodo como alternativa a ejecutar la sentencia SET CURRENT PACKAGESET de SQL en su programa. setJccLogWriter Formatos:
public void setJccLogWriter(PrintWriter logWriter) throws java.sql.SQLException public void setJccLogWriter(PrintWriter logWriter, int traceLevel) throws java.sql.SQLException

Habilita o inhabilita la funcin de rastreo del IBM Data Server Driver para JDBC y SQLJ, o cambia el destino de rastreo durante una conexin activa. Descripciones de parmetros: logWriter Objeto de tipo java.io.PrintWriter en que el IBM Data Server Driver para JDBC y SQLJ graba la salida del rastreo. Para desactivar el rastreo, establezca el valor de logWriter en null. traceLevel Especifica los tipos de rastreos que se deben recoger. Consulte la descripcin de la propiedad traceLevel en Propiedades del IBM Data Server Driver para JDBC y SQLJ para conocer los valores vlidos.

Clase DB2ConnectionPoolDataSource
DB2ConnectionPoolDataSource es una fbrica para los objetos PooledConnection. Un objeto que implementa esta interfaz se registra con un servicio de asignacin de nombres que se basa en Java Naming and Directory Interface (JNDI). La clase com.ibm.db2.jcc.DB2ConnectionPoolDataSource ampla la clase com.ibm.db2.jcc.DB2BaseDataSource e implementa las interfaces javax.sql.ConnectionPoolDataSource, java.io.Serializable y javax.naming.Referenceable.

Mtodos DB2ConnectionPoolDataSource
getDB2PooledConnection Formatos:
public DB2PooledConnection getDB2PooledConnection(String user, String password, java.util.Properties properties) throws java.sql.SQLException public DB2PooledConnection getDB2PooledConnection( org.ietf.jgss.GSSCredential gssCredential, java.util.Properties properties) throws java.sql.SQLException

Establece la conexin no fiable inicial en un entorno de agrupacin heterogneo. El primer formato de getDB2PooledConnection ofrece un ID de usuario y una contrasea. El segundo formato de getDB2PooledConnection es para conexiones que utilizan la seguridad Kerberos. Descripciones de parmetros: user ID de autorizacin que se utiliza para establecer la conexin.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-143

password Contrasea del ID de autorizacin que se utiliza para establecer la conexin. gssCredential Si la fuente de datos utiliza la seguridad Kerberos, especifica una credencial delegada que se pasa desde otro principal. properties Propiedades de la conexin. getDB2TrustedPooledConnection Formatos:
public Object[] getDB2TrustedPooledConnection(String user, String password, java.util.Properties properties) throws java.sql.SQLException public Object[] getDB2TrustedPooledConnection( java.util.Properties properties) throws java.sql.SQLException public Object[] getDB2TrustedPooledConnection( org.ietf.jgss.GSSCredential gssCredential, java.util.Properties properties) throws java.sql.SQLException

Un servidor de aplicaciones que utiliza un ID de autorizacin del sistema utiliza este mtodo para establecer una conexin fiable. Los elementos siguientes se devuelven en Object[]: v El primer elemento es una instancia de DB2PooledConnection fiable. v El segundo elemento es una cookie exclusiva para la instancia de conexin agrupada que se ha generado. El primer formato de getDB2TrustedPooledConnection ofrece un ID de usuario y una contrasea, mientras que el segundo formato de getDB2TrustedPooledConnection utiliza el ID de usuario y la contrasea del objeto DB2ConnectionPoolDataSource. El tercer formato de getDB2TrustedPooledConnection es para conexiones que utilizan la seguridad Kerberos. Descripciones de parmetros: user ID de autorizacin de IDS que se utiliza para establecer la conexin fiable con el servidor de bases de datos. password Contrasea del ID de autorizacin que se utiliza para establecer la conexin fiable. gssCredential Si la fuente de datos utiliza la seguridad Kerberos, especifica una credencial delegada que se pasa desde otro principal. properties Propiedades de la conexin.

La interfaz DB2DatabaseMetaData
La interfaz com.ibm.db2.jcc.DB2DatabasemetaData ampla la interfaz java.sql.DatabaseMetaData.

1-144

IBM Data Server Driver para JDBC y SQLJ para IDS

Mtodos DB2DatabaseMetaData:
Los mtodos siguientes slo se definen para IBM Data Server Driver para JDBC y SQLJ. isIDSDatabaseAnsiCompliant Formato:
public boolean isIDSDatabaseAnsiCompliant();

Devuelve true si la base de datos activa actual de IBM Informix Dynamic Server (IDS) es compatible con ANSI. En otro caso, devuelve false. Una base de datos compatible con ANSI es una base de datos que se cre con la opcin WITH LOG MODE ANSI. Este mtodo solamente es aplicable a conexiones con fuentes de datos IDS. Se emite una excepcin de SQL (SQLException) si la fuente de datos no es una fuente de datos IDS. isIDSDatabaseLogging Formato:
public boolean isIDSDatabaseLogging();

Devuelve true si la base de datos IDS activa actual es compatible con el registro cronolgico. En otro caso, devuelve false. Una base de datos IDS compatible con el registro cronolgico es una base de datos que se cre con la opcin WITH LOG MODE ANSI, WITH BUFFERED LOG o WITH LOG. Este mtodo solamente es aplicable a conexiones con fuentes de datos IDS. Se emite una excepcin de SQL (SQLException) si la fuente de datos no es una fuente de datos IDS. isResetRequiredForDB2eWLM Formato:
public boolean isResetRequiredForDB2eWLM();

Devuelve true si el servidor de bases de datos de destino necesita una reutilizacin limpia para trabajar con eWLM. En otro caso, devuelve false. supportsDB2ProgressiveStreaming Formato:
public boolean supportsDB2ProgressiveStreaming();

Devuelve true si la fuente de datos de destino es compatible con la modalidad continua progresiva. En otro caso, devuelve false.

Interfaz DB2Diagnosable
La interfaz com.ibm.db2.jcc.DB2Diagnosable proporciona un mecanismo para obtener informacin de diagnstico de IDS a partir de una SQLException.

Mtodos DB2Diagnosable
Los mtodos siguientes slo se definen para el IBM Data Server Driver para JDBC y SQLJ. getSqlca Formato:
public DB2Sqlca getSqlca()
IBM Data Server Driver para JDBC y SQLJ para IDS

1-145

Devuelve un objeto DB2Sqlca a partir de una excepcin java.sql.Exception que se genera al utilizar un IBM Data Server Driver para JDBC y SQLJ. getThrowable Formato:
public Throwable getThrowable()

Devuelve un objeto java.lang.Throwable a partir de una excepcin java.sql.Exception que se produce al utilizar un IBM Data Server Driver para JDBC y SQLJ. printTrace Formato:
static public void printTrace(java.io.PrintWriter printWriter, String header)

Imprime informacin de diagnstico despus de emitirse una excepcin java.sql.Exception al utilizar un IBM Data Server Driver para JDBC y SQLJ. Descripciones de parmetros: printWriter Es el destino de la informacin de diagnstico. header Informacin definida por el usuario que se imprime al comienzo de la salida.

Clase DB2ExceptionFormatter
La clase com.ibm.db2.jcc.DB2ExceptionFormatter contiene mtodos para imprimir informacin de diagnstico en una corriente de datos.

Mtodos DB2ExceptionFormatter
Los mtodos siguientes slo se definen para IBM Data Server Driver para JDBC y SQLJ. printTrace Formatos:
static public void printTrace(java.sql.SQLException sqlException, java.io.PrintWriter printWriter, String header) static public void printTrace(DB2Sqlca sqlca, java.io.PrintWriter printWriter, String header) static public void printTrace(java.lang.Throwable throwable, java.io.PrintWriter printWriter, String header)

Imprime informacin de diagnstico despus de emitirse una excepcin. Descripciones de parmetros: sqlException|sqlca|throwable Excepcin que se emiti durante una operacin anterior de JDBC o Java. printWriter Destino de la informacin de diagnstico. header Informacin definida por el usuario que se imprime al comienzo de la informacin de salida.

1-146

IBM Data Server Driver para JDBC y SQLJ para IDS

Clase DB2JCCPlugin
La clase com.ibm.db2.jcc.DB2JCCPlugin es una clase abstracta que define mtodos que se pueden implementar para proporcionar soporte de plugin de DB2 Database para Linux, UNIX y Windows. Esta clase solo atae al DB2 Database para Linux, UNIX y Windows.

Mtodos DB2JCCPlugin
Los mtodos siguientes se definen solamente para el IBM Data Server Driver para JDBC y SQLJ. getTicket Formato:
public abstract byte[] getTicket(String user, String password, byte[] returnedToken) throws org.ietf.jgss.GSSException

Recupera un certificado Kerberos para un usuario. Descripciones de parmetros: user ID de usuario para el que debe recuperarse el certificado Kerberos. password Contrasea de user. returnedToken

Clase DB2PooledConnection
La clase com.ibm.db2.jcc.DB2PooledConnection ofrece mtodos que puede utilizar un servidor de aplicaciones para cambiar de usuarios en una conexin fiable preexistente.

Mtodos DB2PooledConnection
Los mtodos siguientes slo se definen para IBM Data Server Driver para JDBC y SQLJ. getConnection (reutilizacin no fiable o fiable sin reautentificacin) Formato:
public DB2Connection getConnection() throws java.sql.SQLException

Este mtodo sirve para la dirty reuse de una conexin. Esto significa que el estado de la conexin no se restablece cuando se reutiliza el objeto desde la agrupacin. Los valores de propiedad y los valores de registro especiales siguen vigentes a menos que los alteren temporalmente las propiedades pasadas. No se suprimen las tablas temporales globales. Las propiedades que no se especifiquen no se volvern a inicializar. Todas las propiedades transitorias estndar de JDBC, como el nivel de aislamiento, la modalidad de confirmacin automtico y la modalidad de slo lectura se restablecen a sus valores por omisin de JDBC. Ciertas propiedades, como por ejemplo, user, password, databaseName, serverName, portNumber, planName y pkList permanecern sin modificar. getDB2Connection (reutilizacin fiable) Formatos:
IBM Data Server Driver para JDBC y SQLJ para IDS

1-147

public DB2Connection getDB2Connection(byte[] cookie, String user, String password, String userRegistry, byte[] userSecToken, String originalUser, java.util.Properties properties) throws java.sql.SQLException public Connection getDB2Connection(byte[] cookie, org.ietf.GSSCredential gssCredential, String usernameRegistry, byte[] userSecToken, String originalUser, java.util.Properties properties) throws java.sql.SQLException

Cambia el usuario que est asociado a una conexin fiable sin autentificacin. La segunda forma de reuseDB2Connection slo est soportada para la IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 4. Descripciones de parmetros: cookie Cookie exclusivo creado por el controlador JDBC para la instancia de Connection. Slo el servidor de aplicaciones y el controlador JDBC subyacente que estableci la conexin fiable inicial conocen la cookie. El servidor de aplicaciones pasa la cookie creada por el controlador en el momento de la creacin de la instancia de la conexin agrupada. El controlador JDBC comprueba que la cookie proporcionada coincida con la cookie de la conexin fsica fiable subyacente para garantizar que la peticin se ha creado a partir del servidor de aplicaciones que ha establecido la conexin fsica fiable. Si las cookies difieren, la conexin puede quedar disponible, con propiedades diferentes, para que un usuario nuevo la utilice inmediatamente. user La identidad cliente utilizada por la fuente de datos para establecer el ID de autorizacin para el servidor de bases de datos. Si el servidor de aplicaciones no autentific al usuario, el primero debe pasar una identidad de usuario que represente a un usuario sin autentificar. password Contrasea de user. gssCredential Si la fuente de datos utiliza la seguridad Kerberos, especifica una credencial delegada que se pasa desde otro principal. userNameRegistry Nombre que identifica un servicio de correlacin que correlaciona un ID de usuario de estacin de trabajo con un ID de z/OS RACF. Un ejemplo de servicio de correlacin es la correlacin de identidades empresariales (EIM) de servicios de seguridad integrados. El servicio de correlacin se define mediante un plugin. Los proveedores de plugins definen los valores vlidos de userNameRegistry. Si userNameRegistry es nulo, la conexin no utiliza un servicio de correlacin. userSecToken Smbolos de seguridad del cliente. Este valor se rastrea como parte de datos contables de DB2 para z/OS. El contenido de userSecToken es descrito

1-148

IBM Data Server Driver para JDBC y SQLJ para IDS

por el servidor de aplicaciones y es especificado por la fuente de datos como un smbolo de seguridad del servidor de aplicaciones. originalUser La identidad cliente que enva la peticin original al servidor de aplicaciones. originalUser se incluye en los datos contables de DB2 para z/OS en calidad de ID de usuario original que fue utilizado por el servidor de aplicaciones. properties Propiedades de la conexin reutilizada. Estas propiedades alteran temporalmente las propiedades ya definidas en la instancia de DB2PooledConnection. getDB2Connection (reutilizacin no fiable con reautentificacin) Formatos:
public DB2Connection getDB2Connection( String user, String password, java.util.Properties properties) throws java.sql.SQLException public DB2Connection getDB2Connection(org.ietf.jgss.GSSCredential gssCredential, java.util.Properties properties) throws java.sql.SQLException

Cambia el usuario que est asociado a una conexin no fiable con autentificacin. El primer formato de getDB2Connection ofrece un ID de usuario y una contrasea. El segundo formato de getDB2Connection es para conexiones que utilizan la seguridad Kerberos. Descripciones de parmetros: user El ID de usuario utilizado por la fuente de datos para establecer el ID de autorizacin para el servidor de bases de datos. password Contrasea de user. properties Propiedades de la conexin reutilizada. Estas propiedades alteran temporalmente las propiedades ya definidas en la instancia de DB2PooledConnection. getDB2Connection (reutilizacin no fiable o fiable sin reautentificacin) Formatos:
public java.sql.Connection getDB2Connection( java.util.Properties properties) throws java.sql.SQLException

Reutiliza una conexin no fiable, sin reautentificacin. Este mtodo sirve para la dirty reuse de una conexin. Esto significa que el estado de la conexin no se restablece cuando se reutiliza el objeto desde la agrupacin. Los valores de propiedad y los valores de registro especiales siguen vigentes a menos que los alteren temporalmente las propiedades pasadas. No se suprimen las tablas temporales globales. Las propiedades que no se especifiquen no se volvern a inicializar. Todas las propiedades transitorias estndar de JDBC, como el nivel de aislamiento, la modalidad de confirmacin automtico y la modalidad de slo lectura se restablecen a sus
IBM Data Server Driver para JDBC y SQLJ para IDS

1-149

valores por omisin de JDBC. Ciertas propiedades, como por ejemplo, user, password, databaseName, serverName, portNumber, planName y pkList permanecern sin modificar. Descripciones de parmetros: properties Propiedades de la conexin reutilizada. Estas propiedades alteran temporalmente las propiedades ya definidas en la instancia de DB2PooledConnection.

Clase DB2PoolMonitor
La clase com.ibm.db2.jcc.DB2PoolMonitor proporciona mtodos para la supervisin de la agrupacin de objetos de transporte global que se utiliza para el concentrador de conexiones y el equilibrado de carga de trabajo Sysplex.

Campos de DB2PoolMonitor
Los campos siguientes se definen solamente para el IBM Data Server Driver para JDBC y SQLJ. public static final int TRANSPORT_OBJECT = 1 Este valor es un parmetro para el mtodo DB2PoolMonitor.getPoolMonitor.

Mtodos DB2PoolMonitor
Los mtodos siguientes slo se definen para el IBM Data Server Driver para JDBC y SQLJ. agedOutObjectCount Formato:
public abstract int agedOutObjectCount()

Recupera el nmero de objetos que han excedido el tiempo de inactividad especificado por db2.jcc.maxTransportObjectIdleTime y que no se han suprimido de la agrupacin. createdObjectCount Formato:
public abstract int createdObjectCount()

Recupera el nmero de objetos que el IBM Data Server Driver para JDBC y SQLJ ha creado desde la creacin de la agrupacin. getMonitorVersion Formato:
public int getMonitorVersion()

Recupera la versin de la clase DB2PoolMonitor que se entrega con el IBM Data Server Driver para JDBC y SQLJ. getPoolMonitor Formato:
public static DB2PoolMonitor getPoolMonitor(int tipoMonitor)

Recupera una instancia de la clase DB2PoolMonitor. Descripciones de parmetros:

1-150

IBM Data Server Driver para JDBC y SQLJ para IDS

tipoMonitor El tipo de monitor. Este valor debe ser DB2PoolMonitor.TRANSPORT_OBJECT. heavyWeightReusedObjectCount Formato:
public abstract int heavyWeightReusedObjectCount()

Recupera el nmero de de la agrupacin que se han vuelto a utilizar. lightWeightReusedObjectCount Formato:


public abstract int lightWeightReusedObjectCount()

Recupera el nmero de objetos que se han vuelto a utilizar pero que no se encontraban en la agrupacin. Esto puede ocurrir si un objeto Connection libera un objeto de transporte en el lmite de una transaccin. Si el objeto Connection necesita un objeto de transporte posteriormente y ningn otro objeto Connection ha utiliza el objeto de transporte original, el objeto Connection podr utilizar el objeto de transporte. longestBlockedRequestTime Formato:
public abstract long longestBlockedRequestTime()

Recupera, en milisegundos, la mayor cantidad de tiempo que una peticin estuvo bloqueada. numberOfConnectionReleaseRefused Formato:
public abstract int numberOfConnectionReleaseRefused()

Recupera el nmero de veces que se rechaz la liberacin de una conexin. numberOfRequestsBlocked Formato:
public abstract int numberOfRequestsBlocked()

Recupera el nmero de peticiones que el IBM Data Server Driver para JDBC y SQLJ ha realizado a la agrupacin que la agrupacin bloque debido a que sta haba llegado a su capacidad mxima. Es posible que una peticin bloqueada se ejecute correctamente si el objeto se devuelve a la agrupacin antes de que se supere el tiempo especificado por db2.jcc.maxTransportObjectWaitTime y que se haya emitido una excepcin. numberOfRequestsBlockedDataSourceMax Formato:
public abstract int numberOfRequestsBlockedDataSourceMax()

Recupera el nmero de peticiones que IBM Data Server Driver para JDBC y SQLJ ha realizado a la agrupacin que la agrupacin bloque debido a que sta haba llegado al mximo del objeto DataSource. numberOfRequestsBlockedPoolMax Formato:
public abstract int numberOfRequestsBlockedPoolMax()

IBM Data Server Driver para JDBC y SQLJ para IDS

1-151

Recupera el nmero de peticiones que IBM Data Server Driver para JDBC y SQLJ ha realizado a la agrupacin que la agrupacin bloque debido a que sta haba llegado al mximo de la agrupacin. removedObjectCount Formato:
public abstract int removedObjectCount()

Recupera el nmero de objetos que se han suprimido de la agrupacin desde que sta fue creada. shortestBlockedRequestTime Formato:
public abstract long shortestBlockedRequestTime()

Recupera, en milisegundos, la menor cantidad de tiempo que una peticin estuvo bloqueada. successfullRequestsFromPool Formato:
public abstract int successfullRequestsFromPool()

Recupera el nmero de peticiones satisfactorias que el IBM Data Server Driver para JDBC y SQLJ ha realizado a la agrupacin desde la creacin de sta. Una peticin satisfactoria indica que la agrupacin ha devuelto un objeto. totalPoolObjects Formato:
public abstract int totalPoolObjects()

Recupera el nmero de objetos que se encuentran actualmente en la agrupacin. totalRequestsToPool Formato:


public abstract int totalRequestsToPool()

Recupera el nmero total de peticiones que el IBM Data Server Driver para JDBC y SQLJ ha realizado a la agrupacin desde la creacin de sta. totalTimeBlocked Formato:
public abstract long totalTimeBlocked()

Recupera el tiempo total en milisegundos que la agrupacin ha empleado para bloquear las peticiones. Este tiempo puede ser mucho mayor que el tiempo de ejecucin de la aplicacin transcurrido si la aplicacin utiliza varias hebras.

Interfaz DB2PreparedStatement
La interfaz com.ibm.db2.jcc.DB2PreparedStatement ampla las interfaces com.ibm.db2.jcc.DB2Statement y java.sql.PreparedStatement.

Mtodos DB2PreparedStatement
Los mtodos siguientes slo se definen para IBM Data Server Driver para JDBC y SQLJ. executeDB2QueryBatch Formato:

1-152

IBM Data Server Driver para JDBC y SQLJ para IDS

public void executeDB2QueryBatch() throws java.sql.SQLException

Ejecuta un lote de sentencias que contiene consultas con parmetros. Este mtodo no se puede utilizar para conexiones con fuentes de datos IBM Informix Dynamic Server.

Interfaz DB2ResultSet
La interfaz com.ibm.db2.jcc.DB2ResultSet se utiliza para crear objetos de los cuales se puede obtener informacin de consulta para IBM Data Server Driver para JDBC y SQLJ.

Mtodos DB2ResultSet:
Los mtodos siguientes slo se definen para el IBM Data Server Driver para JDBC y SQLJ. getDB2RowChangeToken Formato:
public long DB2ResultSet.getDB2RowChangeToken() throws java.sql.SQLException

Devuelve el distintivo de cambio de fila para la fila actual, si est disponible. Devuelve 0 si no se solicitaron columnas de bloqueo optimista o no estn disponibles. getDB2RID Formato:
public Object DB2ResultSet.getDB2RID() throws java.sql.SQLException

Devuelve el RID de la fila actual, si est disponible. Se puede obtener el RID si se solicitaron columnas de bloqueo optimista y estn disponibles. Devuelve un valor nulo si no se solicitaron columnas de bloqueo optimista o no estn disponibles. getDB2RIDType Formato:
public int DB2ResultSet.getDB2RIDType() throws java.sql.SQLException

Devuelve el tipo de datos de la columna RID en un DB2ResultSet. El valor devuelto se correlaciona con una constante java.sql.Types. Si el DB2ResultSet no contiene una columna RID, se devuelve java.sql.Types.NULL.

Interfaz DB2ResultSetMetaData
La interfaz com.ibm.db2.jcc.DB2ResultSetMetaData proporciona mtodos que proporcionan informacin sobre un objeto ResultSet. Para poder utilizar un mtodo com.ibm.db2.jcc.DB2ResultSetMetaData, se debe difundir a com.ibm.db2.jcc.DB2ResultSetMetaData un objeto java.sql.ResultSetMetaData que se devuelva de una llamada a java.sql.ResultSet.getMetaData.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-153

Mtodos de DB2ResultSetMetaData:
Los mtodos siguientes slo se definen para IBM Data Server Driver para JDBC y SQLJ. getDB2OptimisticLockingColumns Formato:
public int getDB2OptimisticLockingColumns() throws java.sql.SQLException

Devuelve un valor que indica si estn disponibles columnas de bloqueo optimista. Los valores posibles son: 0 1 No existen columnas de bloqueo optimista disponibles. Existen columnas de bloqueo optimista disponibles, pero el distintivo de cambio puede no tener la granularidad necesaria para evitar negativos falsos. Existen columnas de bloqueo optimista disponibles, y el distintivo de cambio tiene la granularidad necesaria para evitar negativos falsos.

isDB2ColumnNameDerived Formato:
public boolean isDB2ColumnNameDerived (int columna) throws java.sql.SQLException

Devuelve el valor true si el nombre de la columna ResultSet se deriva de la lista de SQL SELECT que ha generado el conjunto de resultados (ResultSet). Por ejemplo, supongamos que se genera un conjunto de resultados (ResultSet) a partir de la sentencia de SQL SELECT EMPNAME, SUM(SALARY) FROM EMP. El nombre de columna EMPNAME ResultSet se deriva de la lista de SQL SELECT, pero el nombre de la columna del conjunto de resultados (ResultSet) que corresponde a SUM(SALARY) no se deriva de la lista de SELECT. Descripciones de parmetros: columna Nombre de una columna del conjunto de resultados (ResultSet).

Interfaz DB2RowID
La interfaz com.ibm.db2.jcc.DB2RowID se utiliza para declarar objetos Java para su utilizacin con el tipo de datos ROWID de SQL.

Mtodos DB2RowID
El mtodo siguiente slo se define para el IBM Data Server Driver para JDBC y SQLJ. getBytes Formato:
public byte[] getBytes()

Convierte un objeto com.ibm.jcc.DB2RowID a bytes.

Clase DB2SimpleDataSource
La clase com.ibm.db2.jcc.DB2SimpleDataSource ampla la clase DB2BaseDataSource.

1-154

IBM Data Server Driver para JDBC y SQLJ para IDS

Un objeto DB2BaseDataSource no da soporte a la agrupacin de conexiones ni a las transacciones distribuidas. Contiene todas las propiedades y los mtodos contenidos por la clase DB2BaseDataSource. Adems, DB2SimpleDataSource contiene las siguientes propiedades especficas del IBM Data Server Driver para JDBC y SQLJ.

Propiedades de DB2SimpleDataSource
La propiedad siguiente se define solamente para el IBM Data Server Driver para JDBC y SQLJ. Consulte Propiedades de IBM Data Server Driver para JDBC y SQLJ para obtener una explicacin de esta propiedad. String com.ibm.db2.jcc.DB2SimpleDataSource.password

Mtodos DB2SimpleDataSource
El mtodo siguiente slo se define para el IBM Data Server Driver para JDBC y SQLJ. setPassword Formato:
public void setPassword(String password)

Establece la contrasea para el objeto DB2SimpleDataSource. No existe un mtodo correspondiente para getPassword. Por tanto, la contrasea no se puede cifrar, pues no hay forma de recuperar la contrasea para poder descifrarla.

Clase DB2Sqlca
La clase com.ibm.db2.jcc.DB2Sqlca es una encapsulacin de la SQLCA.

Mtodos DB2Sqlca
Los mtodos siguientes se definen solamente para el IBM Data Server Driver para JDBC y SQLJ. getMessage Formato:
public abstract String getMessage()

Devuelve el texto de mensajes de error. getSqlCode Formato:


public abstract int getSqlCode()

Devuelve el valor de un cdigo de error de SQL. getSqlErrd Formato:


public abstract int[] getSqlErrd()

Devuelve una matriz, cuyos elementos contienen un SQLERRD de SQLCA. getSqlErrmc Formato:
public abstract String getSqlErrmc()

IBM Data Server Driver para JDBC y SQLJ para IDS

1-155

Devuelve una cadena de caracteres que contiene los valores SQLERRMC de SQLCA, delimitados por espacios. getSqlErrmcTokens Formato:
public abstract String[] getSqlErrmcTokens()

Devuelve una matriz, cuyos elementos contienen un smbolo SQLERRMC de SQLCA. getSqlErrp Formato:
public abstract String getSqlErrp()

Devuelve el valor SQLERRP de SQLCA. getSqlState Formato:


public abstract String getSqlState()

Devuelve el valor SQLSTATE de SQLCA. getSqlWarn Formato:


public abstract char[] getSqlWarn()

Devuelve una matriz, cuyos elementos contienen un valor SQLWARN de SQLCA.

Interfaz DB2Statement
La interfaz com.ibm.db2.jcc.DB2Statement ampla la interfaz java.sql.Statement.

Mtodos DB2Statement
Los mtodos siguientes se definen solamente para el IBM Data Server Driver para JDBC y SQLJ. getDB2ClientProgramId Formato:
public String getDB2ClientProgramId() throws java.sql.SQLException

Devuelve el identificador del programa cliente definido por el usuario correspondiente a la conexin, que est almacenado en la fuente de datos. setDB2ClientProgramId Formato:
public abstract void setDB2ClientProgramId(String program-ID) throws java.sql.SQLException

Establece un identificador de programa definido por el usuario correspondiente a la conexin, en servidores DB2 para z/OS. El identificador de programa es una serie de caracteres de 80 bytes que se utiliza para identificar al peticionario del programa. El servidor DB2 para z/OS coloca la serie de caracteres en registros de rastreo IFCID 316 junto con otras estadsticas, para que el usuario pueda identificar qu programa est asociado a una determinada sentencia de SQL.

1-156

IBM Data Server Driver para JDBC y SQLJ para IDS

getIDSSerial Formato:
public int getIDSSerial() throws java.sql.SQLException

Recupera una clave que se ha creado automticamente en la columna SERIAL de la sentencia INSERT ejecutada anteriormente. Se deben cumplir las condiciones siguientes para que getIDSSerial se ejecute satisfactoriamente: v La sentencia INSERT es la ltima sentencia de SQL que se ha ejecutado antes de invocar este mtodo. v La tabla en la que se inserta la fila contiene una columna SERIAL. v El formato del mtodo Connection.prepareStatement o Statement.executeUpdate de JDBC por el que se prepara o ejecuta la sentencia INSERT no tiene parmetros que solicitan claves de generacin automtica. Este mtodo es aplicable solamente a conexiones con bases de datos IBM Informix Dynamic Server (IDS). getIDSSerial8 Formato:
public long getIDSSerial8() throws java.sql.SQLException

Recupera una clave que se ha creado automticamente en la columna SERIAL8 de la sentencia INSERT ejecutada anteriormente. Se deben cumplir las condiciones siguientes para que getIDSSerial8 se ejecute satisfactoriamente: v La sentencia INSERT es la ltima sentencia de SQL que se ha ejecutado antes de invocar este mtodo. v La tabla en la que se inserta la fila contiene una columna SERIAL8. v El formato del mtodo Connection.prepareStatement o Statement.executeUpdate de JDBC por el que se prepara o ejecuta la sentencia INSERT no tiene parmetros que solicitan claves de generacin automtica. Este mtodo solamente es aplicable a conexiones con fuentes de datos IDS. getIDSSQLStatementOffSet Formato:
public int getIDSSQLStatementOffSet() throws java.sql.SQLException

Despus de que una sentencia de SQL se ejecute en una fuente de datos IDS, si la sentencia contiene un error de sintaxis, getIDSSQLStatementOffSet devuelve el desplazamiento dentro del texto de la sentencia del error de sintaxis. getIDSSQLStatementOffSet devuelve: v 0, si la sentencia no contiene un error de sintaxis. v -1, si la fuente de datos no es IDS. Este mtodo solamente es aplicable a conexiones con fuentes de datos IDS.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-157

Interfaz DB2SystemMonitor
La interfaz com.ibm.db2.jcc.DB2SystemMonitor se utiliza para recoger datos de supervisin del sistema correspondientes a una conexin. Cada conexin puede tener una sola instancia de DB2SystemMonitor.

Campos de DB2SystemMonitor
Los campos siguientes se definen solamente para el IBM Data Server Driver para JDBC y SQLJ. public final static int RESET_TIMES public final static int ACCUMULATE_TIMES Estos valores son argumentos del mtodo DB2SystemMonitor.start. RESET_TIMES inicializa a cero los contadores de tiempo antes del comienzo de la supervisin. ACCUMULATE_TIMES no pone a cero los contadores de tiempo.

Mtodos DB2SystemMonitor
Los mtodos siguientes slo se definen para el IBM Data Server Driver para JDBC y SQLJ. enable Formato:
public void enable(boolean on) throws java.sql.SQLException

Habilita el supervisor del sistema que est asociado a una conexin. Este mtodo no se puede invocar durante la supervisin. Todos los tiempo se inicializan cuando se invoca enable. getApplicationTimeMillis Formato:
public long getApplicationTimeMillis() throws java.sql.SQLException

Devuelve la suma de los tiempos transcurridos correspondientes a la aplicacin, el controlador JDBC, la E/S de red y el servidor de bases de datos. El tiempo est expresado en milisegundos. Un intervalo de tiempo transcurrido supervisado es la diferencia, en milisegundos, entre estos puntos en el proceso del controlador JDBC: Inicio del intervalo Es el momento en el que se invoca start. Fin del intervalo Es el momento en el que se invoca stop. getApplicationTimeMillis devuelve un 0 si la supervisin del sistema est inhabilitada. Si se invoca este mtodo sin invocar primero stop, se produce una excepcin SQLException. getCoreDriverTimeMicros Formato:
public long getCoreDriverTimeMicros() throws java.sql.SQLException

1-158

IBM Data Server Driver para JDBC y SQLJ para IDS

Devuelve la suma de los tiempos transcurridos de API supervisada que se recogieron mientras la supervisin del sistema estaba habilitada. El tiempo est expresado en microsegundos. Una API supervisada es un mtodo de controlador JDBC para la cual se obtiene el tiempo de proceso. En general, los tiempos transcurridos slo se supervisan para las API que puedan producir interaccin con la E/S de red o servidor de bases de datos. Por ejemplo, los mtodos PreparedStatement.setXXX y y ResultSet.getXXX no se supervisan. El tiempo transcurrido de las API supervisadas incluye el tiempo total que se invierte en el controlador para una llamada de mtodo. Este tiempo incluye cualquier tiempo de E/S de red y tiempo transcurrido de servidor de bases de datos. Un intervalo de tiempo transcurrido de API supervisada es la diferencia, en microsegundos, entre estos puntos en el proceso del controlador JDBC: Inicio del intervalo Es el momento en el que la aplicacin llama a la API supervisada. Fin del intervalo Inmediatamente antes de este momento la API supervisada devuelve el control a la aplicacin. getCoreDriverTimeMicros devuelve un 0 si la supervisin del sistema est inhabilitada. Si se invoca este mtodo sin primero llamar al mtodo stop, o si se invoca este mtodo cuando la JVM subyacente no da soporte a la notificacin de tiempos en microsegundos, se produce una excepcin SQLException. getNetworkIOTimeMicros Formato:
public long getNetworkIOTimeMicros() throws java.sql.SQLException

Devuelve la suma de los tiempos transcurridos de E/S de red que se recogieron mientras la supervisin del sistema estaba habilitada. El tiempo est expresado en microsegundos. El tiempo transcurrido de E/S de red incluye el tiempo que se invierte en escribir y leer datos de DRDA procedentes de corrientes de E/S de la red. Un intervalo de tiempo transcurrido de E/S de red es el intervalo de tiempo que se invierte en realizar las operaciones siguientes en el controlador JDBC: v Emitir un mandato TCP/IP para enviar un mensaje de DRDA al servidor de bases de datos. Este intervalo de tiempo es la diferencia, en microsegundos, entre los momentos inmediatamente anterior y posterior a la realizacin de una escritura y vaciado en la corriente de E/S de la red. v Emitir un mandato TCP/IP para recibir mensajes de respuesta de DRDA procedentes del servidor de bases de datos. Este intervalo de tiempo es la diferencia, en microsegundos, entre los momentos inmediatamente anterior y posterior a la realizacin de una lectura en la corriente de E/S de la red. Los intervalos de tiempo de E/S de red se recogen para todas las operaciones de envo y recepcin, incluido el envo de mensajes para operaciones de confirmacin y retrotraccin. El tiempo invertido en la espera a causa de operaciones de E/S de red puede verse afectado por retrasos en la CPU que despacha peticiones de SQL de baja prioridad en el servidor de bases de datos.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-159

getNetworkIOTimeMicros devuelve un 0 si la supervisin del sistema est inhabilitada. Si se invoca este mtodo sin primero llamar al mtodo stop, o si se invoca este mtodo cuando la JVM subyacente no da soporte a la notificacin de tiempos en microsegundos, se produce una excepcin SQLException. getServerTimeMicros Formato:
public long getServerTimeMicros() throws java.sql.SQLException

Devuelve la suma de todos los tiempos transcurridos notificados del servidor de bases de datos que se recopilaron mientras la supervisin del sistema estaba habilitada. El tiempo est expresado en microsegundos. El servidor de bases de datos notifica tiempos transcurridos cuando se dan estas condiciones: v El servidor de bases de datos da soporte a la devolucin de datos sobre tiempos transcurridos al cliente. DB2 Database para Linux, UNIX y Windows Versin 9.5 y posterior, y DB2 para z/OS son compatibles con esta funcin. v El servidor de bases de datos efecta operaciones que se pueden supervisar. Por ejemplo, el tiempo transcurrido del servidor de bases de datos no se devuelve para operaciones de confirmacin ni retrotraccin. El tiempo transcurrido del servidor de bases de datos se define como el tiempo transcurrido necesario para analizar la corriente de datos de la peticin, procesar el mandato y generar la corriente de datos de respuesta en el servidor de bases de datos. El tiempo de red necesario para recibir o enviar la corriente de datos no se incluye. Un intervalo de tiempo transcurrido del servidor de bases de datos es la diferencia, en microsegundos, entre estos puntos en el proceso del servidor: Inicio del intervalo Cuando el sistema operativo hace que el servidor de bases de datos procese un mensaje TCP/IP que se recibe del controlador JDBC. Fin del intervalo Cuando el servidor de bases de datos est preparado para emitir el mandato de TCP/IP para devolver el mensaje de respuesta al cliente. getServerTimeMicros devuelve un 0 si la supervisin del sistema est inhabilitada. Si se invoca este mtodo sin invocar primero stop, se produce una excepcin SQLException. start Formato:
public void start (int lapMode) throws java.sql.SQLException

Si el supervisor del sistema est habilitado, start inicia la recogida de datos de supervisin del sistema para una conexin. Los valores vlidos de lapMode son RESET_TIMES o ACCUMULATE_TIMES. La invocacin de este mtodo cuando la supervisin del sistema est inhabilitada no produce ningn efecto. La invocacin de este mtodo ms de una vez sin que medie una llamada a stop produce una excepcin SQLException.

1-160

IBM Data Server Driver para JDBC y SQLJ para IDS

stop Formato:
public void stop() throws java.sql.SQLException

Si el supervisor del sistema est habilitado, stop finaliza la recogida de datos de supervisin del sistema para una conexin. Una vez detenida la supervisin, se pueden obtener los tiempos supervisados utilizando los mtodos getXXX de DB2SystemMonitor. La invocacin de este mtodo cuando la supervisin del sistema est inhabilitada no produce ningn efecto. La invocacin de este mtodo sin primero invocar start, o la invocacin repetida de este mtodo sin que medie una llamada a start produce una excepcin SQLException.

Clase DB2TraceManager
La clase com.ibm.db2.jcc.DB2TraceManager controla el grabador de anotaciones globales. El grabador de anotaciones globales se aplica a todas las conexiones en todo el controlador. El grabador de anotaciones globales altera temporalmente todos los dems grabadores de anotaciones globales de JDBC. Adems de iniciar el grabador de anotaciones globales, la clase DB2TraceManager proporciona la capacidad de suspender y reanudar el rastreo de cualquier tipo de grabador de anotaciones. Es decir, los mtodos de suspensin y reanudacin de la clase DB2TraceManager son aplicables a todos los programas de registro actuales y futuros de DriverManager, programas de registro de DataSource o programas de registro a nivel de conexin especficos de IBM Data Server Driver para JDBC y SQLJ.

Mtodos DB2TraceManager
getTraceManager Formato:
static public DB2TraceManager getTraceManager() throws java.sql.SQLException

Obtiene una instancia del grabador de anotaciones cronolgicas globales. setLogWriter Formatos:
public abstract void setLogWriter(String traceDirectory, String baseTraceFileName, int traceLevel) throws java.sql.SQLException public abstract void setLogWriter(String traceFile, boolean fileAppend, int traceLevel) throws java.sql.SQLException public abstract void setLogWriter(java.io.PrintWriter logWriter, int traceLevel) throws java.sql.SQLException

Habilita un rastreo global. Despus de llamar a setLogWriter, se descartan todas las llamadas para los rastreos de DataSource o Connection hasta que se llame a DB2TraceManager.unsetLogWriter. Cuando se llama a setLogWriter, se redireccionan todos los rastreos de Connection o DataSource a un archivo de rastreo o PrintWriter, en funcin del formato de setLogWriter que se utilice. Si se suspende el rastreo global cuando se llama a setLogWriter, los valores especificados surten efecto cuando se reanuda el rastreo.
IBM Data Server Driver para JDBC y SQLJ para IDS

1-161

Descripciones de parmetros: traceDirectory Especifica un directorio en el que se graba la informacin de rastreo global. Este valor prevalece sobre los valores de las propiedades traceDirectory y logWriter para una conexin DataSource o DriverManager. Cuando se utiliza el formato de setLogWriter con el parmetro traceDirectory, el controlador de JDBC establece la propiedad traceFileAppend en false cuando se llama a setLogWriter, lo que significa que se sobregraban los archivos de anotaciones existentes. Cada conexin de controlador de JDBC se rastrea en un archivo diferente en el directorio especificado. El convenio de denominacin para los archivos de dicho directorio depende de si se especifica un valor no nulo para baseTraceFileName: v Si se especifica un valor nulo para baseTraceFileName, se rastrea una conexin para un archivo denominado traceFile_global_n. n es la conexin de controlador de JDBC nmero n. v Si se especifica un valor no nulo para baseTraceFileName, se rastrea una conexin para un archivo denominado baseTraceFileName_global_n. baseTraceFileName es el valor del parmetro baseTraceFileName. n es la conexin de controlador de JDBC nmero n. baseTraceFileName Especifica la raz de los nombres de los archivos en los que se graba la informacin de rastreo global. La combinacin de baseTraceFileName y traceDirectory determina el nombre de va de acceso completa para los archivos de anotaciones de rastreo globales. traceFileName Especifica el archivo en el que se graba la informacin de rastreo global. Este valor prevalece sobre los valores de las propiedades traceFile y logWriter para una conexin DataSource o DriverManager. Cuando se utiliza el formato de setLogWriter con el parmetro traceFileName, se escribe un solo archivo de registro. traceFileName puede incluir una va de acceso de directorio. logWriter Especifica una corriente de salida de caracteres en el que se graban todos los registros de anotaciones globales. Este valor prevalece sobre la propiedad logWriter en una conexin DataSource o DriverManager. traceLevel Especifica qu se debe rastrear. Puede especificar uno o ms de los valores de rastreo siguientes con el parmetro traceLevel: v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_NONE (X00) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTION_CALLS (X01) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_STATEMENT_CALLS (X02) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_RESULT_SET_CALLS (X04) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRIVER_CONFIGURATION (X10) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS (X20) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS (X40)

1-162

IBM Data Server Driver para JDBC y SQLJ para IDS

v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_RESULT_SET_META_DATA (X80) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_PARAMETER_META_DATA (X100) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DIAGNOSTICS (X200) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_SQLJ (X400) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_XA_CALLS (slo IBM Data Server Driver para conectividad JDBC y SQLJ de tipo 2 para DB2 Database para Linux, UNIX y Windows) (X800) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_META_CALLS (X2000) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DATASOURCE_CALLS (X4000) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_LARGE_OBJECT_CALLS (X8000) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_SYSTEM_MONITOR (X20000) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_TRACEPOINTS (X40000) v com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL (XFFFFFFFF) Para especificar ms de un valor de rastreo, utilice una de estas tcnicas: v Utilice operadores OR (|) de bits con dos o ms valores de rastreo. Por ejemplo, para rastrear flujos de DRDA y llamadas de conexin, especifique este valor para traceLevel:
TRACE_DRDA_FLOWS|TRACE_CONNECTION_CALLS

v Utilice un operador de complemento a nivel de bit ( tilde (~)) con un valor de rastreo para especificar todos los rastreos excepto uno determinado. Por ejemplo, para rastrear todo excepto los flujos de DRDA, especifique este valor para traceLevel:
~TRACE_DRDA_FLOWS

fileAppend Especifica si deben aadir o sobrescribir datos en el archivo especificado por medio del parmetro traceFile. true significa que no se sobregrabar el archivo existente. unsetLogWriter Formato:
public abstract void unsetLogWriter() throws java.sql.SQLException

Inhabilita la alteracin temporal del programa de registro global para conexiones futuras. suspendTrace Formato:
public void suspendTrace() throws java.sql.SQLException

Suspende todos los rastreos globales a nivel de Connection o a nivel de DataSource para las conexiones actuales y futuras. suspendTrace puede llamarse cuando se habilita o inhabilita el grabador de anotaciones globales. resumeTrace Formato:
public void resumeTrace() throws java.sql.SQLException

Reanuda todos los rastreos globales a nivel de Connection o a nivel de DataSource para las conexiones actuales y futuras. resumeTrace puede llamarse cuando se habilita o inhabilita el grabador de anotaciones globales. Si se
IBM Data Server Driver para JDBC y SQLJ para IDS

1-163

inhabilita el grabador de anotaciones globales, resumeTrace reanuda los rastreos a nivel de Connection o a nivel de DataSource. Si se habilita el grabador de anotaciones globales, resumeTrace reanuda el rastreo global. getLogWriter Formato:
public abstract java.io.PrintWriter getLogWriter() throws java.sql.SQLException

Devuelve el PrintWriter para el grabador de anotaciones globales, si se establece ste. En caso contrario, getLogWriter devuelve un nulo. getTraceFile Formato:
public abstract String getTraceFile() throws java.sql.SQLException

Devuelve el nombre del archivo de destino para el grabador de anotaciones globales, si se establece ste. De lo contrario, getTraceFile devuelve un nulo. getTraceDirectory Formato:
public abstract String getTraceDirectory() throws java.sql.SQLException

Devuelve el nombre del directorio de destino para los archivos del grabador de anotaciones globales, si se establece ste. En caso contrario, getTraceDirectory devuelve un nulo. getTraceLevel Formato:
public abstract int getTraceLevel() throws java.sql.SQLException

Devuelve el nivel de rastreo para el rastreo global, si se establece ste. De lo contrario, getTraceLevel devuelve -1 (TRACE_ALL). getTraceFileAppend Formato:
public abstract boolean getTraceFileAppend() throws java.sql.SQLException

Devuelve true si los registros de rastreo globales se agregan al archivo de rastreo. De lo contrario, getTraceFileAppend devuelve false.

Clase DB2XADataSource
DB2XADataSource es una fbrica para los objetos XADataSource. Un objeto que implementa esta interfaz se registra con un servicio de asignacin de nombres que se basa en Java Naming and Directory Interface (JNDI). La clase com.ibm.db2.jcc.DB2XADataSource ampla la clase com.ibm.db2.jcc.DB2BaseDataSource e implementa las interfaces javax.sql.XADataSource, java.io.Serializable y javax.naming.Referenceable.

Mtodos DB2XADataSource
getDB2TrustedXAConnection Formatos:

1-164

IBM Data Server Driver para JDBC y SQLJ para IDS

public Object[] getDB2TrustedXAConnection(String user, String password, java.util.Properties properties) throws java.sql.SQLException public Object[] getDB2TrustedXAConnection( java.util.Properties properties) throws java.sql.SQLException public Object[] getDB2TrustedXAConnection( org.ietf.jgss.GSSCredential gssCredential, java.util.Properties properties) throws java.sql.SQLException

Un servidor de aplicaciones que utiliza un ID de autorizacin del sistema utiliza este mtodo para establecer una conexin fiable. Los elementos siguientes se devuelven en Object[]: v El primer elemento es una instancia de DB2TrustedXAConnection. v El segundo elemento es una cookie exclusiva para la instancia de conexin generada de XA. El primer formato getDB2TrustedXAConnection ofrece un ID de usuario y una contrasea. El segundo formato de getDB2TrustedXAConnection utiliza el ID de usuario y la contrasea del objeto DB2XADataSource. El tercer formato de getDB2TrustedXAConnection es para conexiones que utilizan la seguridad Kerberos. Descripciones de parmetros: user El ID de autorizacin que se utiliza para establecer la conexin fiable. password Contrasea del ID de autorizacin que se utiliza para establecer la conexin fiable. gssCredential Si la fuente de datos utiliza la seguridad Kerberos, especifica una credencial delegada que se pasa desde otro principal. properties Propiedades de la conexin. getDB2TrustedPooledConnection Formato:
public Object[] getDB2TrustedPooledConnection(java.util.Properties properties) throws java.sql.SQLException

Un servidor de aplicaciones que utiliza un ID de autorizacin del sistema utiliza este mtodo para establecer una conexin fiable, utilizando el ID de usuario y la contrasea para el objeto DB2XADataSource. Los elementos siguientes se devuelven en Object[]: v El primer elemento es una instancia fiable de DB2TrustedPooledConnection. v El segundo elemento es una cookie exclusiva para la instancia de conexin agrupada que se ha generado. Descripciones de parmetros: properties Propiedades de la conexin. getDB2XAConnection Formatos:
IBM Data Server Driver para JDBC y SQLJ para IDS

1-165

public DB2XAConnection getDB2XAConnection(String user, String password, java.util.Properties properties) throws java.sql.SQLException public DB2XAConnection getDB2XAConnection( org.ietf.jgss.GSSCredential gssCredential, java.util.Properties properties) throws java.sql.SQLException

Establece la conexin no fiable inicial en un entorno de agrupacin heterogneo. El primer formato de getDB2PooledConnection ofrece un ID de usuario y una contrasea. El segundo formato de getDB2XAConnection es para conexiones que utilizan la seguridad Kerberos. Descripciones de parmetros: user ID de autorizacin que se utiliza para establecer la conexin. password Contrasea del ID de autorizacin que se utiliza para establecer la conexin. gssCredential Si la fuente de datos utiliza la seguridad Kerberos, especifica una credencial delegada que se pasa desde otro principal. properties Propiedades de la conexin.

Diferencias entre IBM Data Server Driver para JDBC y SQLJ y el IBM Informix JDBC Driver
Antes de migrar sus aplicaciones JDBC desde controladores ms antiguos al IBM Data Server Driver para JDBC y SQLJ, es necesario que comprenda las diferencias entre esos controladores. Las diferencias en el soporte para los mtodos de JDBC se describen en el tema Soporte de controladores para las API de JDBC en la pgina 1-109. Las siguientes secciones describen las diferencias entre IBM Data Server Driver para JDBC y SQLJ y Informix JDBC Driver: v Variables de entorno IDS no soportadas en la pgina 1-167 v Mandatos SQL en la pgina 1-167 v Cierre de conexiones con transacciones activas en la pgina 1-167 v Correlacin de variables de entorno entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ en la pgina 1-168 v Mecanismos de seguridad en la pgina 1-168 v Espacios de nombres en la pgina 1-168 v Cursores en la pgina 1-169 v Tipos de datos en la pgina 1-170 v Comportamiento de objeto grande en la pgina 1-171 v Conversiones de datos en la pgina 1-171 v Sentencias preparadas en la pgina 1-172 v Comportamiento de getIDSSerial() y getIDSSerial8() en la pgina 1-172

1-166

IBM Data Server Driver para JDBC y SQLJ para IDS

v Comportamiento de afterLast() seguido de getRow() en la pgina 1-172 v Orden de los parmetros en la pgina 1-172 v Cdigos de error en la pgina 1-173

Variables de entorno IDS no soportadas


Las siguientes variables de entorno IDS soportadas para Informix JDBC Driver no estn soportadas para IBM Data Server Driver para JDBC y SQLJ.
v ALLOWREGISTEROUTFORINPARAM v BIG_FET_BUF_SIZE v CSM v ENABLE_HDRSWITCH v IFX_BATCHUPDATE_PER_SPEC v IFX_CODESETLOB v IFX_SET_FLOAT_AS_SMFLOAT v IFX_TRIMTRAILINGSPACES v IFXHOST_SECONDARY v IFXHOST INFORMIXCONRETRY v IFXPORTNO_SECONDARY v INFORMIXCONTIME v INFORMIXOPCACHE v INFORMIXSERVER_SECONDARY v INFORMIXSTACKSIZE v JDBCTEMP v LDAP_IFXBASE v LDAP_PASSWD v LDAP_URL v LDAP_USER v LOBCACHE v NEWCODESET v NEWLOCALE v NEWNLSMAP v PROXY v SECURITY v SQLH_FILE v SQLH_LOC v SQLH_TYPE v SQLIDEBUG

Mandatos SQL
Los siguientes mandatos SQL no se soportan al cambiar los atributos de conexin utilizados con mayor frecuencia: v CREATE DATABASE v DROP DATABASE v DATABASE v SET ISOLATION LEVEL v SET TRANSACTION LEVEL

Cierre de conexiones con transacciones activas


Al cerrar una conexin durante una transaccin activa, IBM Data Server Driver para JDBC y SQLJ impide que se cierre la conexin y emite la siguiente excepcin:
Se ha solicitado [ibm][db2][jcc][t4][10251] [10308][versin de controlador] java.sql.Connection.close() mientras se procesaba una transaccin en la conexin. La transaccin permanece activa y la conexin no se puede cerrar. ERRORCODE=-4471, SQLSTATE=estadosql

Mientras que Informix JDBC Driver cierra la conexin y retrotrae automticamente la transaccin activa.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-167

Correlacin de variables de entorno entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ
Esta seccin describe las variables para IBM Data Server Driver para JDBC y SQLJ que sustituyen las de Informix JDBC Driver que no estn soportadas.
Tabla 1-48. Sustitucin de las variables de entorno de IBM Data Server Driver para JDBC y SQLJ Variables de entorno utilizadas por Informix JDBC Driver TRACEFILE, PROTOCOLTRACEFILE TRACE, PROTOCOLTRACE FET_BUF_SIZE IFX_AUTOFREE INFORMIXCONTIME IFX_LOCK_MODE_WAIT Variables de entorno equivalentes para IBM Data Server Driver para JDBC y SQLJ traceFile traceLevel queryBlockSize queryCloseImplicit loginTimeout, blockingReadConnectionTimeout currentLockTimeout

Mecanismos de seguridad
Esta seccin describe las diferencias en los mecanismos de seguridad entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ.
Tabla 1-49. Diferencias en los mecanismos de seguridad Funcionalidad Informix JDBC Driver Cifrado de idusuario y contrasea Se da soporte al cifrado de contraseas, utilizando la variable de entorno SECURITY=PASSWORD. No se da soporte al cifrado de idusuario. IBM Data Server Driver para JDBC y SQLJ Se da soporte a varios tipos de implantaciones de cifrado: v DB2BaseDataSource.USER_ONLY_SECURITY v DB2BaseDataSource.ENCRYPTED_USER _AND_PASSWORD_SECURITY No soportado.

Cifrado de datos

Utiliza el mdulo de soporte de comunicaciones (CSM), variable de entorno: csm=(classname=com.informix.jdbc.Crypto, config=test.cfg) Mdulos de autenticacin conectables; las aplicaciones utilizan com.informix.jdbc.IfmxPAM como respuesta ante el desafo.

Autenticacin

No soportado.

Espacios de nombres
Esta seccin describe las diferencias en las funciones de espacio de nombres entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ.
Tabla 1-50. Diferencias de espacio de nombres Funcionalidad Informix JDBC Driver IBM Data Server Driver para JDBC y SQLJ (com.ibm.db2.jcc.DB2Driver) Cambian el nombre de clase inicial. Por ejemplo: Class.forName(com.ibm.db2.jcc.DB2Driver)

Cargador de clase (com.informix.jdbc.IfxDriver) inicial

1-168

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-50. Diferencias de espacio de nombres (continuacin) Funcionalidad Espacio de nombres de paquete Espacio de nombres de DataSource Nombres de mtodo de DataSource Informix JDBC Driver com.informix.xxx IBM Data Server Driver para JDBC y SQLJ com.ibm.db2.jcc.xxx

com.informix.jdbcx.IfxDataSource com.informix.jdbcx.IfxXA DataSource Las variables de entorno se anteponen con getIfx o setIfx.

com.ibm.db2.jcc.DB2SimpleDataSource com.ibm.db2.jcc.DB2XADataSource Las variables de entorno se anteponen con get o set.

Por ejemplo: setIfxINFORMIXSTACKSIZE Por ejemplo: setINFORMIXSTACKSIZE

Cursores
Esta seccin describe las diferencias en las funciones de cursor entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ.
Tabla 1-51. Diferencias de cursor Funcionalidad ResultSet de slo reenvo Informix JDBC Driver El ResultSet de slo reenvo permanece abierto despus de que se haya accedido a la ltima fila; permanece abierto hasta que se produzca una llamada explcita a ResultSet.close(); IBM Data Server Driver para JDBC y SQLJ El ResultSet de slo reenvo se cierra automticamente despus de que se acceda a la ltima fila. Emite un error si una aplicacin intenta recuperar ResultSetMetaData despus de leer todas las filas. * Emite una SQLException (en el lado del cliente) con nmeros de error especfico de cliente.

ResultSet.wasNull(): ResultSet no tiene v wasNull() devuelve FALSE si la datos consulta no devuelve datos (ResultSet no est vaco pero no contiene datos). v wasNull() devuelve FALSE si se mueve resultset ms all de ResetSet.last(). Las series de versin y nombre de producto tienen cambios semnticos dmd.getDatabaseProduct Version()=11.10.UC1 dmd.getDatabaseProductName() =Informix Dynamic Server ResultSet.relative(): Para operaciones ilegales ResultSet.next(): IFX no tiene ningn dato Emite el error SQLException -79739 No hay fila actual. Devuelve FALSE.

dmd.getDatabaseProductVersion()= IFX11100 dmd.getDatabaseProductName()= IDS/UNIX32 Emite el error SQLException -4476 El cursor no est en una fila vlida. Emite un error SQLException con la siguiente SELECT anmala: com.ibm.db2.jcc.am.SqlException: [ibm][db2][jcc][10120][10898] Operacin no vlida: el conjunto de resultados est cerrado. Emite SQLException [ibm][db2][jcc][10177][11611] Conversin de datos no vlida: La conversin solicitada dara como resultado una prdida de precisin de nnnnnn.

ResultSet.next(): si getByte() y getShort() estn en la columna DECIMAL el resultado es un desbordamiento

Devuelve -1 para ambos mtodos para indicar un error.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-169

Tabla 1-51. Diferencias de cursor (continuacin) Funcionalidad ResultSet.updateTime() Informix JDBC Driver ResultSet.updateTime() puede llamarse en la columna DATETIME YEAR TO FRACTION. IBM Data Server Driver para JDBC y SQLJ No est soportado; utilice updateTimestamp().

Statement.setCursorName(): Establecer nombre de cursor en una serie vaca Cursores de desplazamiento actualizables

Comprueba esta condicin y emite un Pasa la serie vaca al servidor sin nombre de cursor ilegal devolver un error. SQLException. Soportado para los archivos en el servidor Utilizan el cursor actualizable, de slo reenvo

Para las sentencias SELECT, la sentencia estar completa cuando se cierre el conjunto de resultados asociados. El conjunto de resultados se cierra tan pronto como se produzca una de las condiciones siguientes: v Se han recuperado todas las filas. v Se ha vuelto a ejecutar el objeto de sentencia asociado. v Se ha ejecutado otro objeto de sentencia en la misma conexin.

Tipos de datos
Esta seccin describe las diferencias en las funciones de tipo de datos entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ.
Tabla 1-52. Diferencia en los tipos de datos Tipo de datos Clases de extensiones Informix JDBC para objetos grandes inteligentes (BLOB y CLOB) y objetos grandes sencillos (BYTE y TEXT) y tipo de Sentencia Informix JDBC Driver Clases de extensiones soportadas por Informix JDBC Driver: v IfxBblob v IfxCblob v IfxSmartBlob v IfxStatementTypes v IfxTypes v IfxLoStat IfxLobDescriptor Conversin de coma flotante a entero/byte Tipo de datos de INTERVAL Coleccin de IDS: LIST, SET, MULTISET y ROW Funciones de objeto grande inteligente como filetoblob, filetoclob, lotofile y soporte de locopy getString() en la semntica de la columna BYTE La semntica de actualizaciones de BLOB en el lado del cliente se est reflejando automticamente en el servidor JDBC devuelve un valor incorrecto. Soportado. Soportado. Soportado. Emite una SQLException si la conversin no es posible. No soportado. No soportado. No soportado. IBM Data Server Driver para JDBC y SQLJ No soportado.

JDBC convierte BYTE en STRING

No soportado.

Los cambios en los datos BLOB en el BLOB no se actualiza lado del cliente pueden reflejarse en el automticamente a menos que el servidor. usuario emita una actualizacin.

1-170

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-52. Diferencia en los tipos de datos (continuacin) Tipo de datos Es necesario convertir BYTE, BLOB, TEXT y CLOB para resolver la ambigedad cuando se pasan como parmetros a funciones o procedimientos. IDS BOOLEAN se identifica como SMALLINT Informix JDBC Driver JDBC identifica BYTE como BINARY y los objetos grandes inteligentes como BLOB. IBM Data Server Driver para JDBC y SQLJ No soportado.

El controlador de JDBC identifica BOOLEAN como BOOLEAN.

No diferencia BOOLEAN de SMALLINT.

Comportamiento de objeto grande


Esta seccin describe las diferencias en el comportamiento de los objetos grandes entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ.
Tabla 1-53. Diferencias en el comportamiento del objeto grande Funcionalidad getString en una columna BYTE getBlob en una columna CLOB Insercin de datos LOB utilizando filetoblob o filetoclob Actualizaciones de objetos BLOB y CLOB con setBinaryStream() o setCharacterStream() Informix JDBC Driver Soportado. Soportado. Soportado. Objetos actualizados automticamente. IBM Data Server Driver para JDBC y SQLJ Devuelve una representacin HEX de los datos insertados. No soportado. No soportado. Objetos no actualizados automticamente. Despus de llamar a setXXXStream(), deber emitir una SQL UPDATE.

Conversiones de datos
Esta seccin describe las diferencias en las conversiones de datos entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ.
Tabla 1-54. Diferencia en la conversin de datos Funcionalidad DataConversion de DECIMAL a SHORT/BYTE con resultados fuera de rango DECIMAL PRECISION con PreparedStatement.setDouble() Conversin de REAL a DECIMAL Informix JDBC Driver v Conversin de getByte: (-1) v Conversin de getShort: (-1) Un decimal empaquetado puede tener un mximo de 32. IBM Data Server Driver para JDBC y SQLJ v Conversin de getByte: (0) v Conversin de getShort: (23552) Un decimal empaquetado puede tener un mximo de 31.

v Conversin de getInt: (-323855360) v Conversin de getInt: (-323855360)

Devuelve una conversin de REAL a Limita la escala para proporcionar DECIMAL. Por ejemplo: 12345.67871 resultados coherentes para se devuelve como 12345.67871. DECIMAL sin tener en cuenta la precisin y la escala. Por ejemplo: 12345,67871 se devuelve como 12345,67800. No soportado. Emite una SQLException.

Conversin de DECIMAL a BYTE/SHORT

IBM Data Server Driver para JDBC y SQLJ para IDS

1-171

Sentencias preparadas
Esta seccin describe las diferencias en las funciones de sentencia preparadas entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ.
Tabla 1-55. Diferencias en las sentencias preparadas Funcionalidad Manejo de errores de PreparedStatement.executeBatch() Informix JDBC Driver Emite una SQLException, slo hay un error en la ejecucin del proceso por lotes. Lee n caracteres con la longitud proporcionada desde el principio; se ignoran los caracteres que superan la longitud. IBM Data Server Driver para JDBC y SQLJ Emite la SQLException:com.ibm. db2.jcc.am.BatchUpdateException; las aplicaciones que no manejan la excepcin fallarn en tiempo de ejecucin. Emite una SQLException.

PreparedStatement.setCharacter Stream(): los caracteres del lector dado no coinciden con la longitud

Comportamiento de getIDSSerial() y getIDSSerial8()


Esta seccin describe las diferencias para getIDSSerial() y getIDSSerial8() entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ.
Tabla 1-56. Diferencias para getIDSSerial() y getIDSSerial8() Funcionalidad Cuando se llama despus de una retrotraccin Se utilizan con el mtodo JDBC API getGeneratedKeys() Informix JDBC Driver Soportado. Soportado. IBM Data Server Driver para JDBC y SQLJ No soportado; devuelve 0. No soportado; devuelve 0.

Comportamiento de afterLast() seguido de getRow()


Cuando afterLast() va seguido de getRow(), IBM Data Server Driver para JDBC y SQLJ devuelve 0, restaurando el cursor al principio. Despus de afterLast(), no hay filas vlidas. Informix JDBC Driver devuelve el nmero de fila ltima+1 si llama a getRow() inmediatamente despus de la llamada a afterLast().

Orden de los parmetros


Hay algunas diferencias en el orden de los parmetros entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ. Con arreglo a las especificaciones de JDBC, cuando el procedimiento almacenado devuelve un parmetro de resultados, una forma del parmetro OUT, ste se trata como cualquier otro parmetro OUT. Su tipo de datos debe registrarse con el mtodo registerOutParameter y su valor se recupera con el mtodo getXXX apropiado. Puesto que un parmetro de resultados viene en primer lugar en una llamada a un procedimiento almacenado, su posicin ordinal es siempre 1. Cuando el procedimiento almacenado devuelve el parmetro de resultados, devuelve un conjunto de resultados y su valor se recupera con el mtodo getXXX del conjunto de resultados apropiado.

1-172

IBM Data Server Driver para JDBC y SQLJ para IDS

Para IBM Data Server Driver para JDBC y SQLJ, el resultado de un procedimiento almacenado se trata como un parmetro OUT. Su tipo de datos debe registrarse (como otros parmetros OUT) con el mtodo registeroutparameter y su valor se recupera con el mtodo getXXX de sentencia invocable apropiada. Para migrar las aplicaciones, elimine el signo de interrogacin (?) = de la sentencia {? = call (.......}.

Cdigos de error
Esta seccin describe las diferencias en los cdigos de error entre Informix JDBC Driver y IBM Data Server Driver para JDBC y SQLJ.
Tabla 1-57. Diferencias en los cdigos de error Funcionalidad SQLException.getNextException y getErrorCode Informix JDBC Driver Devuelven un un cdigo ISAM y un mensaje detallado en SQLException.getNextException y getErrorCode. IBM Data Server Driver para JDBC y SQLJ Un error de ISAM no se puede devolver mediante SQLException o getNextException(). Algunos errores de IDS tienen un cdigo de error de SQL y un cdigo de error de RSAM. El controlador no da soporte a los cdigos de error de RSAM devueltos como nextException o como SQLException.getCause(). Algunos mensajes proceden del servidor y tienen un formato y una descripcin diferentes. Los mensajes de error de cliente tienen el formato: -4nnn. Las aplicaciones han de utilizar extensiones de diagnsticos para obtener el cdigo de error ISAM. Las aplicaciones pueden obtener un mensaje de error detallado para los cdigos de error de ISAM.

Mensajes de error de cliente

Utiliza -79xxx.

Acceso a los cdigos de error de ISAM

Proporciona cdigos de error ISAM a las aplicaciones.

Cdigos de error emitidos por IBM Data Server Driver para JDBC y SQLJ
Los cdigos de error comprendidos dentro de los rangos +4200 a +4299, +4450 a +4499, -4200 a -4299, y -4450 a -4499 estn reservados para el IBM Data Server Driver para JDBC y SQLJ. Cuando invoca el mtodo SQLException.getMessage despus de producirse un error de IBM Data Server Driver para JDBC y SQLJ, el mtodo devuelve una serie de caracteres que incluye lo siguiente: v Indicacin si la conexin es de tipo 2 o tipo 4 v Informacin de diagnstico para el centro de soporte de software de IBM v Nivel del controlador v Un mensaje explicatorio v El cdigo de error v El estado de SQL (SQLSTATE) Por ejemplo:
IBM Data Server Driver para JDBC y SQLJ para IDS

1-173

[jcc][t4][20128][12071][3.50.54] Invalid queryBlockSize specified: 1,048,576,012. Using default query block size of 32,767. ERRORCODE=0, SQLSTATE=

Actualmente, el IBM Data Server Driver para JDBC y SQLJ emite los cdigos de error siguientes:
Tabla 1-58. Cdigos de error emitidos por el IBM Data Server Driver para JDBC y SQLJ Cdigo de error Texto del mensaje y explicacin +4204 Se han encontrado errores y se han tolerado segn lo especificado en la clusula RETURN DATA UNTIL. Explicacin: Los errores tolerados incluyen errores de autorizacin, autentificacin y conexin federada. Este aviso se aplica solamente a las conexiones con los servidores DB2 Database para Linux, UNIX y Windows. Se emite solamente cuando una operacin del cursor, como una llamada ResultSet.next o ResultSet.previous, devuelve false. +4222 texto-de-getMessage Explicacin: se produjo una condicin de aviso al conectarse con la fuente de datos. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4223 texto-de-getMessage Explicacin: se produjo una condicin de aviso durante la inicializacin. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4225 texto-de-getMessage Explicacin: se produjo una condicin de aviso al enviar datos a un servidor o al recibirlos de un servidor. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4226 texto-de-getMessage Explicacin: se produjo una condicin de aviso en la vinculacin o la personalizacin de una aplicacin SQLJ. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4228 texto-de-getMessage Explicacin: se produjo una condicin de aviso que no se adecua en otra categora. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4450 No se soporta la caracterstica: nombre-caracterstica.

SQLSTATE 02506

1-174

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-58. Cdigos de error emitidos por el IBM Data Server Driver para JDBC y SQLJ (continuacin) Cdigo de error Texto del mensaje y explicacin +4460 texto-de-getMessage Explicacin: el valor especificado no es una opcin vlida. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4461 texto-de-getMessage Explicacin: el valor especificado no es vlido o se encuentra fuera del intervalo esperado. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4462 texto-de-getMessage Explicacin: falta un valor necesario. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4470 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que el recurso de destino est cerrado. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4471 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que se est utilizando el recurso de destino. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4472 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que el recurso de destino no est disponible. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. +4474 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que el recurso de destino no se puede cambiar. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema.

SQLSTATE

IBM Data Server Driver para JDBC y SQLJ para IDS

1-175

Tabla 1-58. Cdigos de error emitidos por el IBM Data Server Driver para JDBC y SQLJ (continuacin) Cdigo de error Texto del mensaje y explicacin -4200 Operacin no vlida: Se ha llamado una operacin COMMIT o ROLLBACK no vlida en un entorno XA durante una transaccin global. Explicacin: Una aplicacin perteneciente a una transaccin global en un entorno XA ha emitido una operacin de confirmacin o retrotraccin. Una operacin de confirmacin o retrotraccin en una transaccin global no es vlida. -4201 Operacin no vlida: no se permite setAutoCommit(true) durante la transaccin global. Explicacin: Una aplicacin perteneciente a una transaccin global en un entorno XA ha ejecutado la sentencia setAutoCommit(true). La emisin de setAutoCommit(true) en una transaccin global no es vlida. -4203 Error al ejecutar la funcin. El servidor ha devuelto rc. Explicacin: Se ha producido un error en una conexin XA durante la ejecucin de una sentencia de SQL. Para la optimizacin de la red, el IBM Data Server Driver para JDBC y SQLJ retarda algunos flujos XA hasta que se ejecuta la siguiente sentencia de SQL. Si se produce un error en un flujo XA retardado, se informa de ese error como parte de una excepcin SQLException que emite la sentencia de SQL actual. -4210 -4211 -4212 -4214 Tiempo de espera excedido al obtener un objeto de transporte de la agrupacin. Tiempo de espera excedido al obtener un objeto de la agrupacin. Miembro de Sysplex no disponible. texto-de-getMessage Explicacin: la autorizacin no era vlida. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4220 texto-de-getMessage Explicacin: se produjo un error al convertir caracteres. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4221 texto-de-getMessage Explicacin: se produjo un error al cifrar o descifrar. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. 28000 2D521

SQLSTATE 2D521

1-176

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-58. Cdigos de error emitidos por el IBM Data Server Driver para JDBC y SQLJ (continuacin) Cdigo de error Texto del mensaje y explicacin -4222 texto-de-getMessage Explicacin: se produjo un error al conectarse con la fuente de datos. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4223 texto-de-getMessage Explicacin: se produjo un error en la inicializacin. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4224 texto-de-getMessage Explicacin: se produjo un error al realizar la limpieza de recursos. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4225 texto-de-getMessage Explicacin: se produjo un error al enviar datos a un servidor o al recibirlos de un servidor. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4226 texto-de-getMessage Explicacin: se produjo un error en la vinculacin o la personalizacin de una aplicacin SQLJ. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4227 texto-de-getMessage Explicacin: se produjo un error en el restablecimiento. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4228 texto-de-getMessage Explicacin: se produjo un error que no se adecua en otra categora. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema.

SQLSTATE

IBM Data Server Driver para JDBC y SQLJ para IDS

1-177

Tabla 1-58. Cdigos de error emitidos por el IBM Data Server Driver para JDBC y SQLJ (continuacin) Cdigo de error Texto del mensaje y explicacin -4296 Excepcin clase-excepcin: se produjo un error al abrir el socket para el servidor servidor en el puerto puerto con el mensaje mensaje. Explicacin: el controlador no pudo establecer una conexin. Respuesta de usuario: verifique que el nombre o la direccin del sistema principal y el nmero de puerto del servidor son correctos. Verifique tambin que ste est iniciado. En el caso de una conexin con una fuente de datos de DB2 Database para Linux, UNIX y Windows, verifique que el parmetro de configuracin svcename est configurado de forma adecuada. -4297 Se ha producido un error de comunicacin durante operaciones en el socket asociado a la conexin, la corriente de entrada del socket o la corriente de salida del socket. Ubicacin del error: funcin. Mensaje: mensaje. El gestor de bases de datos no puede aceptar nuevas peticiones, ha concluido todas las peticiones en curso o ha terminado la peticin actual debido a que se detectaron condiciones de error inesperadas en el sistema de destino. No se soporta la caracterstica: nombre-caracterstica. texto-de-getMessage Explicacin: el valor especificado no es una opcin vlida. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4461 texto-de-getMessage Explicacin: el valor especificado no es vlido o se encuentra fuera del intervalo esperado. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4462 texto-de-getMessage Explicacin: falta un valor necesario. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4463 texto-de-getMessage Explicacin: el valor especificado tiene un error de sintaxis. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4470 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que el recurso de destino est cerrado. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. 42601 42815 08001

SQLSTATE 08001

-4298

58009

-4450 -4460

1-178

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-58. Cdigos de error emitidos por el IBM Data Server Driver para JDBC y SQLJ (continuacin) Cdigo de error Texto del mensaje y explicacin -4471 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que se est utilizando el recurso de destino. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4472 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que el recurso de destino no est disponible. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4473 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que el recurso de destino ya no est disponible. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4474 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que el recurso de destino no se puede cambiar. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4475 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que el acceso al recurso de destino est restringido. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4476 texto-de-getMessage Explicacin: la operacin solicitada no se puede realizar debido a que no se permite la operacin en el recurso de destino. Respuesta de usuario: llamar a SQLException.getMessage para recuperar informacin especfica sobre el problema. -4496 Se ha emitido una sentencia OPEN de SQL para un cursor retenido en una conexin XA. El controlador JDBC no permite abrir un cursor retenido en el servidor de bases de datos para una conexin XA.

SQLSTATE

IBM Data Server Driver para JDBC y SQLJ para IDS

1-179

Tabla 1-58. Cdigos de error emitidos por el IBM Data Server Driver para JDBC y SQLJ (continuacin) Cdigo de error Texto del mensaje y explicacin -4497 La aplicacin debe emitir una retrotraccin. Ya se ha retrotrado la unidad de trabajo en el servidor DB2, pero es posible que otros gestores de recursos implicados en la unidad de trabajo no hayan retrotrado sus cambios. Para asegurar la integridad de la aplicacin, todas las peticiones de SQL se rechazan hasta que la aplicacin emite una retrotraccin. Ha fallado una conexin pero se ha restablecido. Direccin IP o nombre de sistema principal: nombre-sistema-principal, nmero de puerto o nombre de servicio: puerto, indicador de modificacin de registro especial: rc. Explicacin: nombre-sistema-principal y puerto indican la fuente de datos en la que se restablece la conexin. rc indica si las sentencias SQL que establecen valores de registro especial se ejecutaron de nuevo: 1 2 Las sentencias SQL que establecen valores de registro especial se ejecutaron de nuevo. Las sentencias SQL que establecen valores de registro especial podran no haberse ejecutado de nuevo.

SQLSTATE

-4498

Para el redireccionamiento de cliente en relacin a servidores DB2 para z/OS, no se han restablecido los valores especiales de registro que se establecieron despus del ltimo punto de confirmacin. La aplicacin se retrotrae a su punto de confirmacin anterior. -4499 Se ha producido un error grave que ha dado como resultado una desconexin. La conexin existente ha pasado a estar inutilizable. Explicacin: Una causa posible es que un error de red haya provocado la desconexin de un socket. -30108 -99999 Excepcin de redireccionamiento del cliente para Sysplex. El IBM Data Server Driver para JDBC y SQLJ ha emitido un error que no tiene asignado todava un cdigo de error. 08506

Estados de SQL emitidos por IBM Data Server Driver para JDBC y SQLJ
Los estados de SQL (SQLSTATE) comprendidos dentro del rango 46600 a 466ZZ estn reservados para el IBM Data Server Driver para JDBC y SQLJ. La tabla siguiente lista los estados de SQL producidos o utilizados por IBM Data Server Driver para JDBC y SQLJ.

1-180

IBM Data Server Driver para JDBC y SQLJ para IDS

Tabla 1-59. Estados de SQL devueltos por IBM Data Server Driver para JDBC y SQLJ Clase de estado de SQL SQLSTATE 01xxx 02xxx 02501 02506 08xxx 08003 08004 08506 0Axxx 0A502 22xxx 22007 22021 23xxx 23502 Descripcin Aviso Ningn dato La posicin del cursor no es vlida para una operacin FETCH sobre la fila actual. Error tolerable Excepcin de conexin No existe una conexin El servidor de aplicaciones ha rechazado el establecimiento de la conexin Excepcin de redireccionamiento del cliente Funcin no admitida La accin u operacin no est permitida para esta instancia de base de datos Excepcin de datos La representacin de caracteres de un valor de fecha y hora no es vlida Un carcter no pertenece al juego de caracteres codificados Violacin de restriccin Un valor que se ha insertado en una columna o actualiza una columna es nulo, pero la columna no puede contener valores nulos. Estado de cursor no vlido 24501 28xxx 28000 2Dxxx 2D521 34xxx 34000 3Bxxx 3B503 El cursor identificado no est abierto Excepcin de autorizacin Nombre de autorizacin no vlido. Terminacin de transaccin no vlida Las operaciones COMMIT o ROLLBACK de SQL no son vlidas en el entorno operativo actual. Nombre de cursor no vlido El nombre del cursor no es vlido. Punto de salvaguarda no vlido No est permitido utilizar una sentencia SAVEPOINT, RELEASE SAVEPOINT o ROLLBACK TO SAVEPOINT en un activador o transaccin global. Retrotraccin de transaccin Error de sintaxis o violacin de regla de acceso 42601 42734 Un carcter, distintivo o clusula no es vlido o se ha omitido Se ha detectado un duplicado para nombre de parmetro, nombre de variable de SQL, nombre de cursor, nombre de condicin o etiqueta. La operacin INSERT, UPDATE o DELETE no est permitida en este objeto

24xxx

40xxx 42xxx

42807

IBM Data Server Driver para JDBC y SQLJ para IDS

1-181

Tabla 1-59. Estados de SQL devueltos por IBM Data Server Driver para JDBC y SQLJ (continuacin) Clase de estado de SQL SQLSTATE 42808 42815 42820 42968 58xxx 58008 Descripcin Una columna identificada en la operacin de insercin o actualizacin no es actualizable El tipo de datos, longitud, escala, valor o CCSID no es vlido Una constante numrica es demasiado larga o tiene un valor que no est dentro del rango de su tipo de datos La conexin ha fallado debido a que no existe ninguna licencia de software actual. Error del sistema La ejecucin ha fallado debido a un error de protocolo de distribucin, el cual no afectar a la ejecucin satisfactoria de los mandatos de DDM o sentencias de SQL subsiguientes La ejecucin ha fallado debido a un error de protocolo de distribucin que hizo que se desasignara la conversacin El proceso de vinculacin con el nombre de paquete y distintivo de coherencia especificados no est activo El mandato de DDM no est permitido El objeto de DDM no est permitido El parmetro de DDM no est permitido El valor del parmetro de DDM no est permitido

58009 58012 58014 58015 58016 58017

Bsqueda de informacin de versin y de entorno sobre IBM Data Server Driver para JDBC y SQLJ
Para determinar la versin de IBM Data Server Driver para JDBC y SQLJ, as como para obtener informacin sobre el entorno en el que se est ejecutando el controlador, ejecute el programa de utilidad DB2Jcc en la lnea de mandatos de .

Sintaxis de DB2Jcc
java com.ibm.db2.jcc.DB2Jcc -version -configuration -help

Descripciones de las opciones de DB2Jcc


-version Especifica que el IBM Data Server Driver para JDBC y SQLJ muestra su nombre y versin. -configuration Especifica que el IBM Data Server Driver para JDBC y SQLJ muestra su nombre y versin, as como informacin sobre el entorno, como la informacin sobre restricciones de licencia, informacin sobre la va de acceso, el sistema operativo y el entorno de ejecucin de Java. -help Especifica que el programa de utilidad DB2Jcc describe todas las opciones a las que da soporte. Si se especifica cualquier otra opcin con -help, no se tiene en cuenta.

1-182

IBM Data Server Driver para JDBC y SQLJ para IDS

Datos de salida de ejemplo de DB2Jcc


Los datos de salida siguientes son el resultado de invocar DB2Jcc con el parmetro -configuration.
Figura 1-26. Datos de salida de ejemplo de DB2Jcc (myid@mymachine) /home/myusrid $ java com.ibm.db2.jcc.DB2Jcc -version [jcc] Driver: IBM DB2 JDBC Universal Driver Architecture 3.50.137 (myid@mymachine) /home/myusrid $ java com.ibm.db2.jcc.DB2Jcc -configuration [jcc] BEGIN TRACE_DRIVER_CONFIGURATION [jcc] Driver: IBM DB2 JDBC Universal Driver Architecture 3.50.137 [jcc] Compatible JRE versions: { 1.4, 1.5 } [jcc] Target server licensing restrictions: { z/OS: enabled; SQLDS: enabled; iSe ries: enabled; DB2 for Unix/Windows: enabled; Cloudscape: enabled; Informix: ena bled } [jcc] Range checking enabled: true [jcc] Bug check level: 0xff [jcc] Default fetch size: 64 [jcc] Default isolation: 2 [jcc] Collect performance statistics: false [jcc] No security manager detected. [jcc] Detected local client host: lead.svl.ibm.com/9.30.10.102 [jcc] Access to package sun.io is permitted by security manager. [jcc] JDBC 1 system property jdbc.drivers = null [jcc] Java Runtime Environment version 1.4.2 [jcc] Java Runtime Environment vendor = IBM Corporation [jcc] Java vendor URL = http://www.ibm.com/ [jcc] Java installation directory = /wsdb/v91/bldsupp/AIX5L64/jdk1.4.2_sr1/sh/.. /jre [jcc] Java Virtual Machine specification version = 1.0 [jcc] Java Virtual Machine specification vendor = Sun Microsystems Inc. [jcc] Java Virtual Machine specification name = Java Virtual Machine Specificati on [jcc] Java Virtual Machine implementation version = 1.4.2 [jcc] Java Virtual Machine implementation vendor = IBM Corporation [jcc] Java Virtual Machine implementation name = Classic VM [jcc] Java Runtime Environment specification version = 1.4 [jcc] Java Runtime Environment specification vendor = Sun Microsystems Inc. [jcc] Java Runtime Environment specification name = Java Platform API Specificat ion [jcc] Java class format version number = 48.0 [jcc] Java class path = :.:/home2/myusrid/sqllib/java/db2java.zip:/lib/classes.z ip:/home2/myusrid/sqllib/java/sqlj.zip:./test:/home2/myusrid/sqllib/java/db2jcc. jar:/home2/myusrid/sqllib/java/db2jcc_license_cisuz.jar:... [jcc] Java native library path = /wsdb/v91/bldsupp/AIX5L64/jdk1.4.2_sr1/sh/../jr e/bin:/wsdb/v91/bldsupp/AIX5L64/jdk1.4.2_sr1/jre/bin/classic:/wsdb/v91/bldsupp/A IX5L64/jdk1.4.2_sr1/jre/bin:/home2/myusrid/sqllib/lib:/local/cobol:/home2/myusri d/sqllib/samples/c:/usr/lib [jcc] Path of extension directory or directories = /wsdb/v91/bldsupp/AIX5L64/jdk 1.4.2_sr1/sh/../jre/lib/ext [jcc] Operating system name = AIX [jcc] Operating system architecture = ppc64 [jcc] Operating system version = 5.3 [jcc] File separator ("/" on UNIX) = / [jcc] Path separator (":" on UNIX) = : [jcc] Users account name = myusrid [jcc] Users home directory = /home2/myusrid [jcc] Users current working directory = /home2/myusrid [jcc] Dumping all system properties: { java.assistive=ON, java.runtime.name=Java (TM) 2 Runtime Environment, Standard Edition, sun.boot.library.path=/wsdb/v91/bl dsupp/AIX5L64/jdk1.4.2_sr1/sh/../jre/bin, java.vm.version=1.4.2, java.vm.vendor= IBM Corporation, java.vendor.url=http://www.ibm.com/, path.separator=:, java.vm.

IBM Data Server Driver para JDBC y SQLJ para IDS

1-183

name=Classic VM, file.encoding.pkg=sun.io, user.country=US, sun.os.patch.level=u nknown, ... } [jcc] Dumping all file properties: { } [jcc] END TRACE_DRIVER_CONFIGURATION

1-184

IBM Data Server Driver para JDBC y SQLJ para IDS

Apndice. Accesibilidad
IBM se esfuerza por proporcionar productos que puedan ser utilizados por todas las personas, cualquiera que sea su edad o capacidad.

Funciones de accesibilidad de IBM Informix Dynamic Server


Las funciones de accesibilidad ayudan a un usuario que tenga una minusvala fsica, tal como una movilidad restringida o una visin limitada, a utilizar satisfactoriamente productos de tecnologa de la informacin.

Funciones de accesibilidad
La lista siguiente incluye las funciones de accesibilidad principales de IBM Informix Dynamic Server. Estas funciones permiten: v Utilizacin del sistema basada en el teclado solamente. v Interfaces que son utilizadas habitualmente por lectores de pantalla. v Conexin de dispositivos alternativos de entrada y salida. Consejo: El Centro de informacin de IBM Informix Dynamic Server y sus publicaciones asociadas estn habilitados para el dispositivo IBM Home Page Reader. Puede utilizar todas las funciones mediante el teclado en lugar de utilizar el ratn.

Navegacin mediante el teclado


El presente producto utiliza teclas de navegacin estndar de Microsoft Windows.

Informacin afn sobre accesibilidad


IBM se compromete a que su documentacin sea accesible para las personas con discapacidades. Nuestras publicaciones estn disponibles en formato HTML, por lo que se puede acceder a ellas mediante tecnologa de asistencia a discapacitados, tal como software lector de pantallas. Los diagramas de sintaxis contenidos en nuestras publicaciones estn disponibles en el formato decimal con puntos. Para obtener ms informacin sobre el formato decimal con puntos, consulte Diagramas de sintaxis en formato decimal con puntos. Puede visualizar las publicaciones de IBM Informix Dynamic Server en formato PDF (Portable Document Format) de Adobe, utilizando el lector Adobe Acrobat Reader.

IBM y accesibilidad
Consulte la publicacin IBM Accessibility Center en http://www.ibm.com/able para obtener ms informacin sobre el compromiso que IBM tiene con respecto al tema de la accesibilidad.

Diagramas de sintaxis en formato decimal con puntos


Los diagramas de sintaxis de nuestras publicaciones estn disponibles en el formato decimal con puntos, que es un formato accesible que solamente se puede utilizar con un lector de pantallas.

Copyright IBM Corp. 2007

A-1

En el formato decimal con puntos, cada elemento de sintaxis est escrito en una lnea separada. Si dos o ms elementos de sintaxis estn siempre presentes a la vez (o estn siempre ausentes a la vez), los elementos pueden aparecer en la misma lnea porque se pueden considerar como un elemento de sintaxis individual compuesto. Cada lnea empieza por un nmero decimal con puntos; por ejemplo, 3 o 3.1 o 3.1.1. Para escuchar correctamente estos nmeros, asegrese de que su lector de pantallas est establecido para leer los smbolos de puntuacin. Todos los elementos de sintaxis que tienen el mismo nmero decimal con puntos (por ejemplo, todos los elementos de sintaxis que tienen el nmero 3.1) son alternativas mutuamente excluyentes. Si escucha las lneas 3.1 USERID y 3.1 SYSTEMID, la sintaxis puede incluir USERID o SYSTEMID, pero no ambas cosas. El nivel de numeracin decimal con puntos indica el nivel de anidamiento. Por ejemplo, si un elemento de sintaxis con un nmero decimal con puntos 3 va seguido de una serie de elementos de sintaxis con un nmero decimal con puntos 3.1, todos los elementos de sintaxis con el nmero 3.1 son subordinados del elemento de sintaxis con el nmero 3. Se utilizan determinadas palabras y smbolos junto a los nmeros decimales con puntos para aadir informacin sobre los elementos de sintaxis. Ocasionalmente, estas palabras y smbolos podran aparecer al principio del propio elemento. Para facilitar la identificacin, si la palabra o el smbolo forma parte del elemento de sintaxis, la palabra o el smbolo van precedidos por el carcter de barra inclinada invertida (\). El smbolo * se puede utilizar junto a un nmero decimal con puntos para indicar que se repite el elemento de sintaxis. Por ejemplo, el elemento de sintaxis *FILE con el nmero decimal con puntos 3 se lee como 3 \* FILE. El formato 3* FILE indica que se repite el elemento de sintaxis FILE. El formato 3* \* FILE indica que el elemento de sintaxis * FILE se repite. Los caracteres como por ejemplo comas, que se utilizan para separar una serie de elementos de sintaxis, se muestran en la sintaxis justo antes de los elementos que separan. Estos caracteres pueden aparecer en la misma lnea que cada elemento o en una lnea separada con el mismo nmero decimal con puntos que los elementos relevantes. La lnea tambin puede mostrar otro smbolo que proporciona informacin sobre los elementos de sintaxis. Por ejemplo, las lneas 5.1*, 5.1 LASTRUN, y 5.1 DELETE significan que si utiliza ms de uno de los elementos de sintaxis LASTRUN y DELETE, los elementos deben ir separados por una coma. Si no se proporciona ningn separador, se presupone que se utiliza un espacio en blanco para separar cada elemento de sintaxis. Si un elemento de sintaxis va precedido por el smbolo %, identifica una referencia que est definida en otro lugar. La serie que va a continuacin del smbolo % es el nombre de un fragmento de sintaxis en vez de un literal. Por ejemplo, la lnea 2.1 %OP1 indica que deber consultar un fragmento de sintaxis independiente OP1. Las palabras y smbolos que se indican a continuacin se utilizan junto a los nmeros decimales con puntos: ? Especifica un elemento de sintaxis opcional. Un nmero decimal con puntos seguido del smbolo ? indica que todos los elementos de sintaxis con un nmero decimal con puntos correspondiente, y cualquier elemento de sintaxis subordinado, son opcionales. Si slo hay un elemento de sintaxis con un nmero decimal con puntos, el smbolo ? se visualiza en la misma lnea que el elemento de sintaxis (por ejemplo, 5? NOTIFY). Si hay

A-2

IBM Data Server Driver para JDBC y SQLJ para IDS

ms de un elemento de sintaxis con un nmero decimal con puntos, el smbolo ? se visualiza en una lnea por s mismo, seguido por los elementos de sintaxis que son opcionales. Por ejemplo, si aparecen las lneas 5 ?, 5 NOTIFY y 5 UPDATE, significa que los elementos de sintaxis NOTIFY y UPDATE son opcionales; es decir, puede elegir uno de ellos o ninguno. El smbolo ? es equivalente a una lnea de derivacin en un diagrama de va frrea. ! Especifica un elemento de sintaxis por omisin. Un nmero decimal con puntos seguido por el smbolo ! y un elemento de sintaxis indica que el elemento de sintaxis es la opcin por omisin para todos los elementos de sintaxis que comparten el mismo nmero decimal con puntos. Slo uno de los elementos de sintaxis que comparten el mismo nmero decimal con puntos puede especificar un smbolo ! . Por ejemplo, si escucha las lneas 2? FILE, 2.1! (KEEP) y 2.1 (DELETE), sabe que (KEEP) es la opcin por omisin para la palabra clave FILE. En este ejemplo, si incluye la palabra clave FILE pero no especifica una opcin, se aplica la opcin por omisin KEEP. Tambin se aplica una opcin por omisin en el siguiente nmero decimal con puntos ms alto. En este ejemplo, si se omite la palabra clave FILE, se utiliza el valor por omisin FILE(KEEP). Sin embargo, si escucha las lneas 2? FILE, 2.1, 2.1.1! (KEEP) y 2.1.1 (DELETE), la opcin por omisin KEEP slo se aplica al siguiente nmero decimal con puntos ms alto, 2.1 (que no tiene una palabra clave asociada), y no se aplica a 2? FILE. No se utiliza nada si se omite la palabra clave FILE. Especifica un elemento de sintaxis que se puede repetir cero o ms veces. Un nmero decimal con puntos seguido del smbolo * indica que este elemento de sintaxis se puede utilizar cero o ms veces; es decir, es opcional y se puede repetir. Por ejemplo, si escucha la lnea 5.1* rea-datos, sabe que puede incluir ms de un rea de datos o puede no incluir ninguno. Si escucha las lneas 3* , 3 HOST, y 3 STATE, sabe que puede incluir HOST, STATE, ambos a la vez, o bien nada. Notas: 1. Si un nmero decimal con puntos tiene un asterisco (*) junto a l, y slo hay un elemento con dicho nmero decimal con puntos, puede repetir el mismo elemento ms de una vez. 2. Si un nmero decimal con puntos tiene un asterisco junto a l y varios elementos tienen dicho nmero decimal con puntos, puede utilizar ms de un elemento de la lista, pero no puede utilizar los elementos ms de una vez. En el ejemplo anterior, poda escribir HOST STATE , pero no poda escribir HOST HOST. 3. El smbolo * es equivalente a una lnea de bucle de retorno en un diagrama de sintaxis de va frrea. + Especifica un elemento de sintaxis que debe incluirse una o ms veces. Un nmero decimal con puntos seguido del smbolo + indica que este elemento de sintaxis debe incluirse una o ms veces. Por ejemplo, si escucha la lnea 6.1+ rea-datos, debe incluir al menos un rea de datos. Si escucha las lneas 2+, 2 HOST y 2 STATE, sabe que debe incluir HOST, STATE, o ambos. En cuanto al smbolo *, slo puede repetir un elemento especfico si es el nico elemento con ese nmero decimal con puntos. El smbolo +, al igual que el smbolo * es equivalente a una lnea de bucle de retorno en un diagrama de sintaxis de va frrea.

Apndice. Accesibilidad

A-3

A-4

IBM Data Server Driver para JDBC y SQLJ para IDS

Avisos
Es posible que IBM no ofrezca en todos los pases los productos, los servicios o las caractersticas que se describen en este documento. Consulte al representante local de IBM para obtener informacin sobre los productos y servicios que actualmente estn disponibles en su rea. Las referencias a un producto, programa o servicio de IBM no pretenden indicar o implicar que solo se pueda utilizar ese producto, programa o servicio de IBM. En su lugar, se puede utilizar cualquier producto, programa o servicio funcionalmente equivalente que no infrinja ninguno de los derechos de propiedad intelectual de IBM. No obstante, es responsabilidad del usuario evaluar y verificar el funcionamiento de cualquier producto, programa o servicio que no sea de IBM. IBM puede tener patentes o solicitudes de patentes pendientes que cubran temas tratados en este documento. El suministro de este documento no le confiere ninguna licencia sobre dichas patentes. Puede enviar consultas acerca de licencias, por escrito, a la direccin siguiente: IBM Director of Licensing IBM Corporation North Castle Drive Armonk, NY 10504-1785 EE.UU. Para formular consultas acerca de licencias referentes a informacin de doble byte (DBCS), pngase en contacto con el Departamento de la Propiedad Intelectual de IBM de su pas o enve las consultas, por escrito, a la direccin siguiente: IBM World Trade Asia Corporation Licensing 2-31 Roppongi 3-chome, Minato-ku Tokio 106-0032, Japn El prrafo siguiente no es aplicable al Reino Unido ni a ningn otro pas en el que tales disposiciones sean incompatibles con la legislacin local: INTERNATIONAL BUSINESS MACHINES CORPORATION PROPORCIONA ESTA PUBLICACIN TAL CUAL SIN GARANTAS DE NINGUNA CLASE, NI EXPLCITAS NI IMPLCITAS, INCLUIDAS, PERO SIN LIMITARSE A ELLAS, LAS GARANTAS IMPLCITAS DE NO INFRACCIN, COMERCIABILIDAD O ADECUACIN A UN PROPSITO DETERMINADO. Algunos estados no permiten la renuncia a las garantas explcitas o implcitas en determinadas transacciones, por lo que puede que esta declaracin no le sea aplicable. Esta informacin puede contener imprecisiones tcnicas o errores tipogrficos. Peridicamente, se efectan cambios en la informacin aqu incluida; estos cambios se incorporarn en nuevas ediciones de la publicacin. En cualquier momento y sin previo aviso, IBM puede efectuar mejoras y/o cambios en los productos y/o programas descritos en esta publicacin. Las referencias hechas en esta informacin a sitios Web que no sean de IBM se proporcionan nicamente por comodidad y de ningn modo suponen un aval de dichos sitios Web. El contenido de esos sitios Web no forma parte del contenido del presente producto de IBM y la utilizacin de esos sitios Web corre a cuenta y riesgo del usuario.

Copyright IBM Corp. 2007

B-1

IBM puede utilizar o distribuir la informacin que se le facilite del modo que IBM considere oportuno sin incurrir en ninguna obligacin con el remitente. Los licenciatarios de este programa que deseen obtener informacin sobre el mismo con el fin de permitir: (i) el intercambio de informacin entre programas creados de forma independiente y otros programas (incluido ste) y (ii) el uso mutuo de la informacin intercambiada, deben ponerse en contacto con: IBM Corporation J46A/G4 555 Bailey Avenue San Jos, CA 95141-1003 EE.UU. Esta informacin puede estar disponible, de acuerdo con los trminos y condiciones pertinentes, incluido, en algunos casos, el pago de una tarifa. IBM proporciona el programa bajo licencia descrito en esta informacin y todo el material bajo licencia disponible para el mismo segn los trminos del Acuerdo del cliente de IBM, del Acuerdo internacional de licencia de programas de IBM o de cualquier acuerdo equivalente entre ambas partes. Los datos de rendimiento que contiene esta publicacin se han determinado en un entorno controlado. Por ello, los resultados obtenidos en otros entornos operativos pueden variar significativamente. Algunas medidas pueden haberse tomado en sistemas en desarrollo y no se garantiza que tales medidas sean las mismas en los sistemas disponibles de forma generalizada. Adems, es posible que algunas medidas se hayan calculado mediante extrapolacin. Los resultados reales pueden variar. Los usuarios de este documento debern verificar los datos adecuados para su entorno especfico. La informacin concerniente a productos que no sean de IBM se ha conseguido de los suministradores de dichos productos, de sus anuncios publicados o bien de otras fuentes pblicas. IBM no ha probado esos productos y no puede confirmar con precisin el rendimiento, la compatibilidad ni otras exigencias en relacin con los productos que no son de IBM. Las preguntas sobre las prestaciones de los productos que no son de IBM deben ir dirigidas a los suministradores de dichos productos. Todas las referencias a intenciones u orientaciones futuras de IBM estn sujetas a cambios o retractacin sin previo aviso, y representan nicamente metas y objetivos. Todos los precios de IBM que se muestran en este documento son precios al por mayor recomendados por IBM, vigentes y estn sujetos a cambios sin previo aviso. Los precios de los concesionarios pueden variar. Esta informacin contiene ejemplos de datos e informes que se utilizan en las operaciones comerciales diarias. Para ilustrarlos lo ms exhaustivamente posible, los ejemplos incluyen nombres de personas, compaas, marcas y productos. Todos estos nombres son ficticios y cualquier similitud con los nombres y direcciones utilizados por una compaa comercial real es pura coincidencia. LICENCIA DE COPYRIGHT: Esta informacin contiene programas de aplicacin de ejemplo en lenguaje fuente, que ilustran tcnicas de programacin en diversas plataformas operativas. Puede

B-2

IBM Data Server Driver para JDBC y SQLJ para IDS

copiar, modificar y distribuir estos programas de ejemplo del modo que considere adecuado sin previo pago a IBM, con el objeto de desarrollar, utilizar, comercializar o distribuir programas de aplicacin de acuerdo con la interfaz de programacin de aplicaciones para la plataforma operativa para la cual se han escrito los programas de ejemplo. Estos ejemplos no se han probado en profundidad bajo todas las condiciones. Por lo tanto, IBM no puede garantizar ni implicar la fiabilidad, el servicio ni el funcionamiento de estos programas. Puede copiar, modificar y distribuir estos programas de ejemplo del modo que considere adecuado sin pagar a IBM con el objeto de desarrollar, utilizar, comercializar o distribuir programas de aplicacin de acuerdo con las interfaces de programacin de aplicaciones de IBM. Cada copia o fragmento de estos programas de ejemplo o de cualquier trabajo derivado debe incluir un aviso de copyright como el que se muestra a continuacin: (nombre de la compaa) (ao). Partes de este cdigo proceden de los programas de ejemplo de IBM Corp.. Copyright IBM Corp. (escriba el ao o aos). Reservados todos los derechos. Si est visualizando esta informacin en copia software, es posible que las fotografas y las ilustraciones en color no aparezcan.

Marcas registradas
Los trminos siguientes se utilizan en una o ms publicaciones de productos IBM Informix y los trminos son marcas registradas de International Business Machines Corporation en los Estados Unidos o en otros pases:
AIX AnalystStudio C-ISAM Cloudscape DataBlade DB2 DB2 Connect DB2 Universal Database Distributed Relational Database Architecture Domino DRDA Dynamic Connect IBM Informix Lotus Lotus Notes MQSeries NetView Notes NUMA-Q OS/2 OS/390 OS/400 Passport Advantage ProjectConsole Rational Rational Suite Rational Unified Process RedBack Red Brick RequisitePro RETAIN SQL/DS SystemBuilder Tivoli TME 10 UniData UniVerse WebSphere z/OS

Adobe, Acrobat, Portable Document Format (PDF) y PostScript son marcas registradas de Adobe Systems Incorporated en los Estados Unidos o en otros pases.

Avisos

B-3

Intel, el logotipo de Intel, Intel Inside, el logotipo de Intel Inside, Intel Centrino, el logotipo de Intel Centrino, Celeron, Intel Xeon, Intel SpeedStep, Itanium y Pentium son marcas registradas de Intel Corporation o de sus empresas filiales en los Estados Unidos y en otros pases. Java y todas las marcas registradas y logotipos basados en Java son marcas registradas de Sun Microsystems, Inc. en los Estados Unidos o en otros pases. Microsoft, Windows, Windows NT y el logotipo de Windows son marcas registradas de Microsoft Corporation en los Estados Unidos o en otros pases. UNIX es una marca registrada de The Open Group en los Estados Unidos y en otros pases. Linux es una marca registrada de Linus Torvalds en los Estados Unidos o en otros pases. Otros nombres de empresas, productos o servicios utilizados en esta publicacin pueden ser marcas registradas o marcas de servicio de terceros.

B-4

IBM Data Server Driver para JDBC y SQLJ para IDS

ndice A
acceder a paquetes JDBC 1-14 accesibilidad A-1 teclado A-1 teclas de atajo A-1 Accesibilidad diagramas de sintaxis, lectura en un lector de pantallas A-1 formato decimal con puntos de los diagramas de sintaxis A-1 actualizaciones por lotes JDBC 1-20 actualizar aplicaciones para el controlador actual diferencias JCBC 1-166 actualizar datos de tablas IDS JDBC 1-18 agrupacin de conexiones visin general 1-73 API de JDBC comparacin del soporte de controlador 1-109 aplicacin Java personalizar entorno 1-4 aplicacin JDBC declarar variables 1-17 ejemplo 1-5 aplicaciones soportado por Java 2 Platform, Enterprise Edition aviso de SQL manejo en JDBC 1-48 avisos IBM Data Server Driver para JDBC y SQLJ 1-43 cdigos de retorno IBM Data Server Driver para JDBC y SQLJ, errores de 1-173 columna LOB eleccin de tipos de datos Java compatibles, JDBC 1-36 comparacin del soporte de controlador API de JDBC 1-109 conectar con una fuente de datos interfaz DataSource 1-11 conexin JDBC utilizar 1-13 configurar JDBC 1-4 SQLJ 1-4 confirmacin automtica por omisin JDBC 1-42 confirmar transaccin JDBC 1-42 conjunto de resultados actualizable comprobar fila insertada 1-31 JDBC 1-26, 1-28 conjunto de resultados desplazable JDBC 1-26, 1-28 contenedores Java 2 Platform, Enterprise Edition 1-65 control de transacciones, JDBC 1-41 Controladores JDBC (Conexin de base de datos Java) cambios en la versin 9.5 variables de entorno 1-166 correlaciones de tipos de datos Java, JDBC y base de datos 1-74 crear objetos JDBC 1-18 crear y desplegar DataSource, objetos 1-13

1-64

B
BatchUpdateException, recuperar informacin 1-49

D
DatabaseMetaData recuperar informacin sobre una fuente de datos JDBC 1-15 DataSource, objetos crear y desplegar 1-13 datos recuperacin JDBC 1-23 datos cifrados sensibles a la seguridad IBM Data Server Driver para JDBC y SQLJ 1-54 DB2Diagnosable referencia 1-145 DB2SimpleDataSource definicin 1-13 declarar variables en una aplicacin JDBC 1-17 diagnstico de problemas JDBC 1-55 diagnstico de problemas de JDBC 1-55 Diagramas de sintaxis lectura en un lector de pantallas A-1 Discapacidades, visuales lectura de los diagramas de sintaxis A-1

C
CallableStatement invocar procedimientos almacenados 1-33 capacidad de retencin del cursor para el conjunto de resultados JDBC 1-26, 1-28 cerrar conexin importancia de 1-50 Clase DB2BaseDataSource 1-132 Clase DB2ClientRerouteServerList 1-136 Clase DB2ConnectionPoolDataSource 1-143 Clase DB2ExceptionFormatter 1-146 Clase DB2PoolMonitor 1-150 Clase DB2SimpleDataSource 1-155 Clase DB2Sqlca 1-155 Clase DB2TraceManager 1-161 clase DB2XADataSource 1-164 clave auto-generada recuperar en aplicacin JDBC 1-38 claves generadas automticamente recuperar con mtodos especficos 1-40 recuperar en aplicacin JDBC 1-38 Copyright IBM Corp. 2007

X-1

Discapacidades visuales lectura de los diagramas de sintaxis

A-1

E
ejecutar SQL JDBC 1-17 Enterprise Java Beans visin general 1-72 error de proceso por lotes JDBC BatchUpdateException 1-49 errores cdigos diferencias del controlador JDBC 1-166 espacios de nombre diferencias del controlador JDBC 1-166 especificacin de Sun Microsystems JDBC 1-1 excepciones IBM Data Server Driver para JDBC y SQLJ 1-43 extensiones de JDBC IBM Data Server Driver para JDBC y SQLJ 1-130

Interfaz DB2Connection 1-137 Interfaz DB2JCCPlugin 1-147 interfaz DB2PooledConnection 1-147 Interfaz DB2PreparedStatement 1-152 Interfaz DB2ResultSet 1-153 Interfaz DB2ResultSetMetaData 1-153 Interfaz DB2RowID 1-154 Interfaz DB2Statement 1-156 Interfaz DB2SystemMonitor 1-158 invocar procedimientos almacenados CallableStatement 1-33

J
Java aplicaciones soporte 1-1 Enterprise Java Beans 1-72 informacin de consulta 1-74 Java 2 Platform, Enterprise Edition contenedores 1-65 Enterprise Java Beans 1-72 gestin de transacciones 1-66 requisitos 1-66 requisitos de base de datos 1-66 servidor 1-66 soporte de aplicaciones 1-64 visin general 1-64 Java Naming and Directory Interface (JNDI) descripcin 1-66 Java Transaction API descripcin 1-66 Java Transaction Service descripcin 1-66 JDBC acceder a paquetes para 1-14 actualizaciones por lotes 1-20 capacidad de retencin del cursor para el conjunto de resultados 1-26, 1-28 configurar 1-4 conjunto de resultados actualizable 1-26, 1-28 conjunto de resultados desplazable 1-26, 1-28 correlaciones de tipos de datos 1-74 crear objetos 1-18 diagnstico de problemas 1-55 ejecutar SQL 1-17 manejo de avisos de SQL 1-48 modificar objetos 1-18 variables de entorno 1-4 JDBC (conexin de base de datos Java), diferencias mandatos SQL 1-166 JDBC (Java database connectivity) aplicaciones control de transacciones 1-41 recuperacin de datos 1-23 IBM Data Server Driver para JDBC y SQLJ instalar 1-3 nivel de aislamiento 1-41 programacin de aplicaciones 1-5 ResultSet comprobar fila insertada 1-31 insertar una fila 1-30 transacciones confirmacin automtica 1-42 JDBC y SQLJ controladores soportados 1-1

F
formato de URL Clase DB2BaseDataSource 1-10 Formato decimal con puntos de los diagramas de sintaxis A-1 fuente de datos conectar utilizando DriverManager 1-8 conectar utilizando JDBC 1-7 conexin utilizando JDBC DataSource 1-11

G
getCause, mtodo 1-43

I
IBM Data Server Driver para JDBC y SQLJ avisos 1-43 cdigos de retorno de errores de internos 1-173 conectar con fuente de datos interfaz DriverManager 1-8 ejemplo, programa de rastreo 1-58 ejemplo, rastreo con parmetros de configuracin 1-57 especificacin de la versin 1-182 estados de SQL para errores internos 1-180 excepciones 1-43 extensiones de JDBC 1-130 instalar 1-3 manejo de excepciones de SQL 1-44 propiedades 1-80 restricciones en IDS 1-1 seguridad 1-51 seguridad basada en ID de usuario y contrasea 1-52 seguridad mediante ID de usuario 1-53 seguridad mediante ID de usuario cifrado o contrasea cifrada 1-54 soporte de LOB, JDBC 1-35 ID de usuario, seguridad basada solo en IBM Data Server Driver para JDBC y SQLJ 1-53 informacin de consulta sobre Java 1-74 instalar IBM Data Server Driver para JDBC y SQLJ 1-3

X-2

IBM Data Server Driver para JDBC y SQLJ para IDS

JNDI (Java Naming and Directory Interface) visin general 1-66 JTA (Java Transaction API) descripcin 1-66 JTS (Java Transaction Service) descripcin 1-66

P
ParameterMetaData obtener informacin sobre parmetros, JDBC 1-22 parmetros literales procedimientos almacenados de DB2 para z/OS, llamadas a, JDBC 1-33 personalizar entorno Java 1-4 PreparedStatement, mtodos de diferencias del controlador JDBC 1-166 sentencias de SQL con marcadores de parmetros 1-18, 1-24 sentencias de SQL sin marcadores de parmetros 1-19 programa de rastreo IBM Data Server Driver para JDBC y SQLJ, ejemplo 1-58 programacin de aplicaciones JDBC 1-5 properties para 1-96 propiedades configuracin parmetros 1-4 IBM Data Server Driver para JDBC y SQLJ 1-80 para 1-98 para IDS 1-103 para IDS y servidores de bases de datos 1-94, 1-95 para todas las fuentes de datos 1-80 para y 1-86 propiedades de configuracin 1-107 parmetros 1-4 propiedades de configuracin, 1-107 propiedades especficas Clase DB2BaseDataSource 1-132 Clase DB2ClientRerouteServerList 1-136 Clase DB2ConnectionPoolDataSource 1-143 Clase DB2SimpleDataSource 1-155 propiedades globales 1-107 propiedades globales, 1-107

L
La interfaz DB2DatabaseMetaData 1-145 Lector de pantallas lectura de los diagramas de sintaxis A-1 liberar recursos cerrar conexin 1-50 LOB (objetos grandes) IBM Data Server Driver para JDBC y SQLJ soporte de localizador de LOB 1-35 localizadores de LOB IBM Data Server Driver para JDBC y SQLJ

1-35

1-35

M
mandatos SQL, diferencias del controlador JDBC 1-166 mtodos, diferencias del controlador JDBC 1-166 mtodos especficos Clase DB2BaseDataSource 1-132 Clase DB2ClientRerouteServerList 1-136 Clase DB2ConnectionPoolDataSource 1-143 Clase DB2ExceptionFormatter 1-146 Clase DB2PoolMonitor 1-150 Clase DB2SimpleDataSource 1-155 clase DB2sqlca 1-155 Clase DB2TraceManager 1-161 clase DB2XADataSource 1-164 Interfaz DB2Connection 1-137 Interfaz DB2Diagnosable 1-145 Interfaz DB2JCCPlugin 1-147 interfaz DB2PooledConnection 1-147 Interfaz DB2PreparedStatement 1-152 Interfaz DB2ResultSet 1-153 Interfaz DB2ResultSetMetaData 1-153 Interfaz DB2RowID 1-154 Interfaz DB2Statement 1-156 Interfaz DB2SystemMonitor 1-158 La interfaz DB2DatabaseMetaData 1-145 para recuperar claves generadas automticamente 1-40 minusvala fsica A-1 modalidad continua progresiva IBM Data Server Driver para JDBC y SQLJ 1-35 modificar objetos JDBC 1-18

R
rastreo con parmetros de configuracin IBM Data Server Driver para JDBC y SQLJ, ejemplo 1-57 recuperacin datos de tablas IDS, JDBC 1-23 recuperar datos de tablas IDS JDBC 1-24 recuperar informacin sobre conjunto de resultados JDBC 1-25 recuperar informacin sobre una fuente de datos JDBC 1-15 restricciones para IBM Data Server Driver para JDBC y SQLJ en IDS 1-1 ResultSet comprobar fila insertada, JDBC 1-31 insertar una fila, JDBC 1-30 ResultSet actualizable insertar una fila 1-30 ResultSetMetaData recuperar informacin sobre un conjunto de resultados en JDBC 1-25 retrotraer transaccin JDBC 1-42

N
niveles de aislamiento JDBC 1-41

O
obtener informacin sobre parmetros JDBC 1-22 operaciones sobre varias filas 1-32 orden de los parmetros diferencias del controlador JDBC 1-166

ndice

X-3

S
seguridad IBM Data Server Driver para JDBC y SQLJ 1-51 seguridad, datos cifrados sensibles a la IBM Data Server Driver para JDBC y SQLJ 1-54 seguridad basada en ID de usuario y contrasea IBM Data Server Driver para JDBC y SQLJ 1-52 seguridad mediante ID de usuario IBM Data Server Driver para JDBC y SQLJ 1-53 seguridad mediante ID de usuario cifrado o contrasea cifrada IBM Data Server Driver para JDBC y SQLJ 1-54 sistema, supervisor IBM Data Server Driver para JDBC y SQLJ 1-61 soporte de LOB IBM Data Server Driver para JDBC y SQLJ 1-35 SQLException manejo con IBM Data Server Driver para JDBC y SQLJ 1-44 SQLJ instalar entorno de tiempo de ejecucin 1-4 variables de entorno 1-4 SQLSTATE IBM Data Server Driver para JDBC y SQLJ, errores de 1-180 SSID cmo se determina 1-107 Statement.executeQuery recuperar datos de tablas IDS 1-23

T
teclas de atajo teclado A-1 tipos de datos correlaciones diferencias del controlador JDBC transaccin distribuida, ejemplo JDBC 1-68 transaccin JDBC confirmar 1-42 retrotraer 1-42

1-166

V
variables de entorno diferencias del controlador JDBC 1-166 JDBC 1-4 SQLJ 1-4 versin del controlador IBM Data Server Driver para JDBC y SQLJ

1-182

X-4

IBM Data Server Driver para JDBC y SQLJ para IDS

SC11-3675-00

Spine information:

IBM Informix

Versin 3.5

IBM Data Server Driver para JDBC y SQLJ para IDS

You might also like