You are on page 1of 504

IBM DB2 Everyplace

Gua de aplicaciones y desarrollo


V ersin 8.2

SC10-3942-02

IBM DB2 Everyplace

Gua de aplicaciones y desarrollo


V ersin 8.2

SC10-3942-02

Nota Antes de utilizar este manual y el producto al que da soporte, lea la informacin incluida en el apartado Avisos en la pgina 485.

Tercera edicin (agosto de 2004) Este manual es la traduccin del original ingls IBM DB2 Everyplace Application and Development Guide Version 8.2, (SC18-7185-02). Esta edicin es aplicable a la versin 8, release 2 de IBM DB2 Everyplace y a todos los releases y modificaciones subsiguientes hasta que se indique lo contrario en nuevas ediciones. Copyright International Business Machines Corporation 1998, 2004. Reservados todos los derechos.

Contenido
Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2 . . . . 1 Visiones generales del producto . . . . 3
Visin general de DB2 Everyplace . . . . . . . 3 Qu es DB2 Everyplace? . . . . . . . . . 3 Componentes de la solucin DB2 Everyplace . . 4 Configuracin bsica para la solucin DB2 Everyplace . . . . . . . . . . . . . . 5 Base de datos porttil DB2 Everyplace . . . . . 5 DB2 Everyplace Sync Server . . . . . . . . 6 DB2 Everyplace Sync Client . . . . . . . . 7 DB2 Everyplace Mobile Application Builder . . . 7 Aplicaciones de ejemplo de DB2 Everyplace . . . 7 Caso prctico de ejemplo de DB2 Everyplace . . 8 Accesibilidad . . . . . . . . . . . . . 8 Visin general de la documentacin de DB2 Everyplace . . . . . . . . . . . . . . . 9 Conjunto de informacin de DB2 Everyplace . . 9 Acceso a la documentacin de DB2 Everyplace 10 Acceso a documentacin tcnica en la Web . . . 10 Cdigo de ejemplo de aplicacin de DB2 Everyplace .NET Data Provider para WinCE y Windows . . . . . . . . . . . . . . Codificacin de caracteres en aplicaciones .NET Desarrollo mediante SQL y procedimientos almacenados . . . . . . . . . . . . . . Visin general de los marcadores de parmetros Ejemplos de utilizacin de marcadores de parmetros . . . . . . . . . . . . . Marcadores de parmetros soportados por DB2 Everyplace . . . . . . . . . . . . . Adaptador de consultas y procedimientos almacenados remotos . . . . . . . . . . Desarrollo de aplicaciones Visual Basic . . . . . Desarrollo de aplicaciones Visual Basic de DB2 Everyplace . . . . . . . . . . . . . Sistemas operativos que dan soporte a la interfaz de Visual Basic . . . . . . . . . . . . Visin general de la aplicacin Visual Basic de ejemplo . . . . . . . . . . . . . . . Compilacin y prueba del programa Visual Basic de ejemplo . . . . . . . . . . . . . Temas avanzados . . . . . . . . . . . . Visin general de las tablas de las bases de datos porttiles DB2 Everyplace . . . . . . . . Manejo de conflictos de denominacin . . . . Serializacin de conexiones . . . . . . . . Comportamiento del cursor en el contexto de una conexin . . . . . . . . . . . . . . Tablas base del catlogo del sistema de DB2 Everyplace . . . . . . . . . . . . . 64 66 67 67 67 71 72 77 77 78 78 82 83 83 84 84 85 87

Desarrollo . . . . . . . . . . . . . 11
Herramientas de desarrollo . . . . . . . . . WebSphere Studio Device Developer . . . . . Desarrollo de aplicaciones C/C++ . . . . . . . Desarrollo de aplicaciones C/C++ de DB2 Everyplace . . . . . . . . . . . . . CLI (Interfaz de nivel de llamada) . . . . . . Desarrollo de aplicaciones para DB2 Everyplace Sync Client utilizando C/C++ . . . . . . . Desarrollo de aplicaciones Java . . . . . . . . Desarrollo de aplicaciones Java para DB2 Everyplace . . . . . . . . . . . . . Sincronizacin de Java de DB2 Everyplace . . . Codificacin de caracteres en aplicaciones Java Visin general de las aplicaciones Java de ejemplo . . . . . . . . . . . . . . . JDBC . . . . . . . . . . . . . . . JNI . . . . . . . . . . . . . . . . JSP . . . . . . . . . . . . . . . . Desarrollo de aplicaciones .NET . . . . . . . Visin general del soporte de .NET para crear aplicaciones en la base de datos porttil DB2 Everyplace . . . . . . . . . . . . . Visin general del desarrollo de aplicaciones ADO.NET utilizando DB2 Everyplace .NET Data Provider . . . . . . . . . . . . . . API para desarrollar aplicaciones de Sync Server Uso de la API de ISync.NET . . . . . . . . Uso de ISyncComponent . . . . . . . . . Aplicacin de ejemplo simple que utiliza la API de ISync.NET . . . . . . . . . . . . . 11 12 18 18 23 26 29 29 30 33 34 35 37 40 57

Ajuste . . . . . . . . . . . . . . . 91
Ajuste de aplicaciones de base de datos . . Varias conexiones con una base de datos . . . . . 91 . 91

Seguridad . . . . . . . . . . . . . 97
Visin general del cifrado local de los datos . . . 97 Establecimiento de una conexin con la base de datos porttil DB2 Everyplace . . . . . . . . 98 Cmo otorgar privilegios de cifrado a un usuario. . 99 Creacin de una tabla cifrada . . . . . . . . 99 Gestin de los privilegios de cifrado . . . . . . 100 Cifrado utilizando DB2eCLP . . . . . . . . 100 Contraseas cifradas de Sync Server . . . . . . 105

57

Resolucin de problemas . . . . . . 109


58 62 63 63 64 Rastreo y diagnsticos . . . . . . . . . Herramienta de comprobacin de la integridad de los datos . . . . . . . . . . . . . . Tratamiento de los problemas de sincronizacin Resolucin de conflictos de sincronizacin . . Orden de sincronizacin y recepcin de mensajes de error . . . . . . . . . . . 109 . 110 110 . 110 . 111

Copyright IBM Corp. 1998, 2004

iii

Visualizacin del archivo de anotaciones cronolgicas de errores para diagnosticar problemas . . . . . . . . . . . . . Supervisin de la sincronizacin del cliente . . Sincronizacin del servidor . . . . . . . . Cmo proporcionar lgica de manejo de errores para salidas de usuario . . . . . . . . .

112 114 124 125

Consulta . . . . . . . . . . . . . 129
Correlaciones de tipos de datos entre DB2 Everyplace y fuentes de datos . . . . . . . IBM Cloudscape Versin 10 . . . . . . DB2 Universal Database . . . . . . . . Informix . . . . . . . . . . . . . Lotus Domino . . . . . . . . . . . Oracle . . . . . . . . . . . . . . Microsoft SQL Server . . . . . . . . . Sybase . . . . . . . . . . . . . . Restricciones de las correlaciones de tipos de datos . . . . . . . . . . . . . . Valores por omisin soportados para las bases de datos . . . . . . . . . . . . . . . Mensajes de error . . . . . . . . . . . Lmites de DB2 Everyplace . . . . . . . . Palabras reservadas de DB2 Everyplace. . . . Mensajes de error de DB2 Everyplace Update Tool Interfaces . . . . . . . . . . . . . . ADO .NET . . . . . . . . . . . . Mandatos del CLP. . . . . . . . . . DB2 CLI . . . . . . . . . . . . . IBM Sync Client . . . . . . . . . . JDBC . . . . . . . . . . . . . . . . . . . . . . 129 129 130 131 132 134 135 136

. 136 . . . . . . . . . . 137 140 194 195 196 198 198 206 208 311 347

Soporte de idioma nacional (NLS) . . . . . . Soporte NLS por sistema operativo de DB2 Everyplace . . . . . . . . . . . . . Habilitadores de idioma de DB2 Everyplace . . Soporte para UNICODE de DB2 Everyplace . . Ejemplo . . . . . . . . . . . . . . . Cdigo de la aplicacin de ejemplo . . . . . Visin general de las aplicaciones de ejemplo de DB2 Everyplace . . . . . . . . . . . Visiting Nurse . . . . . . . . . . . . CLP . . . . . . . . . . . . . . . Java . . . . . . . . . . . . . . . DB2eAppl . . . . . . . . . . . . . Soporte de SQL . . . . . . . . . . . . Sentencias de SQL soportadas . . . . . . . Compatibilidad entre tipos de datos para las operaciones de asignacin y comparacin . . . Atributos de tipos de datos . . . . . . . . Reglas de resta para DATE, TIME y TIMESTAMP . . . . . . . . . . . . Tipos de datos por omisin y simblicos de SQL SQLState . . . . . . . . . . . . . .

381 381 383 384 385 385 388 390 395 398 412 419 419 465 466 469 471 471

Glosario
Glosario . .

. . . . . . . . . . . . . 477
. . . . . . . . . . . . . 477

Avisos . . . . . . . . . . . . . . 485
Marcas registradas. . . . . . . . . . . . 488

ndice . . . . . . . . . . . . . . . 489

iv

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Copyright IBM Corp. 1998, 2004

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Visiones generales del producto


Este apartado proporciona una visin general de DB2 Everyplace y del Centro de informacin de DB2 Everyplace.

Visin general de DB2 Everyplace


Este apartado describe las caractersticas y los componentes de DB2 Everyplace.

Qu es DB2 Everyplace?
DB2 Everyplace forma parte de la solucin de IBM para procesos de informtica distribuida. Mediante DB2 Everyplace, los profesionales que se desplazan con frecuencia (como vendedores, inspectores, auditores, tcnicos de mantenimiento, mdicos, agentes inmobiliarios y tasadores de seguros) pueden tener acceso a datos vitales que necesitan mientras estn fuera de su despacho. Las empresas pueden ahora transferir sus datos corporativos a dispositivos porttiles o incorporados. Con DB2 Everyplace, puede acceder a una base de datos que se encuentre en un dispositivo porttil y realizar actualizaciones en ella. Con DB2 Everyplace Sync Server, puede sincronizar datos entre el dispositivo porttil y otras fuentes de datos ubicadas en la empresa. El Adaptador de Archivos le permite distribuir archivos y aplicaciones hacia usuarios mviles. La base de datos porttil DB2 Everyplace es una base de datos relacional que reside en el dispositivo porttil. Para acceder a datos del dispositivo porttil, puede escribir sus propias aplicaciones utilizando las herramientas para el desarrollo rpido de aplicaciones, el conjunto soportado de funciones de DB2 CLI (Call Level Interface), mtodos JDBC (Java Database Connectivity), mtodos ODBC (Open Database Connectivity) o mtodos ADO.NET. IBM ofrece DB2 Everyplace en las siguientes ediciones: DB2 Everyplace Enterprise Edition Proporciona software de bases de datos y de sincronizacin para dispositivos porttiles. En el lado servidor, Enterprise Edition proporciona DB2 Everyplace Sync Server para sincronizar datos entre el dispositivo porttil y las fuentes de datos corporativas. DB2 Everyplace Express Edition Desarrollado sobre la misma base de cdigo que DB2 Everyplace Enterprise Edition, DB2 Everyplace Express resulta fcil de instalar, desplegar y gestionar. DB2 Everyplace Express Edition utiliza un modelo de licencia diseado para ofrecer un precio atractivo para las instalaciones ms reducidas proporcionando a la vez una solucin de datos porttiles completamente funcional. DB2 Everyplace Database Edition Proporciona una base de datos de alto rendimiento y conforme a las normas que se ejecuta en una gran variedad de plataformas porttiles e incorporadas. Importante: Puede instalar distintas ediciones en el mismo servidor, pero debe instalarlas en distintos directorios.
Copyright IBM Corp. 1998, 2004

Componentes de la solucin DB2 Everyplace


La solucin DB2 Everyplace para la sincronizacin de datos porttiles incluye los siguientes componentes principales: Base de datos porttil DB2 Everyplace Software que se ejecuta en el dispositivo porttil y que permite a los usuarios acceder a una copia local de datos de un sistema fuente y modificarlos. Consulte la Gua de desarrollo de aplicaciones de DB2 Everyplace para obtener informacin sobre la base de datos porttil DB2 Everyplace y sobre cmo escribir aplicaciones que utilicen el software de base de datos. DB2 Everyplace Sync Server Programa cliente/servidor que gestiona la sincronizacin de datos bidireccional entre una base de datos fuente y una base de datos de destino. Sync Server acta como intermediario entre el software del cliente de sincronizacin del dispositivo porttil y la base de datos DB2 UDB o la base de datos JDBC del servidor fuente. El Centro de administracin de dispositivos porttiles, una herramienta de administracin grfica para Sync Server, permite definir subconjuntos de datos y archivos para que grupos de usuarios puedan acceder a ellos. Sync Server accede a esta informacin de administracin cada vez que un usuario solicita la sincronizacin de datos. DB2 Everyplace Sync Client DB2 Everyplace Sync Client, que se ejecuta en dispositivos porttiles, es una API que las aplicaciones utilizan para permitir la sincronizacin con DB2 Everyplace Sync Server. Gestiona la sincronizacin bidireccional de los datos relacionales corporativos con la base de datos porttil DB2 Everyplace. DB2 Everyplace Mobile Application Builder Una rpida herramienta para el desarrollo de aplicaciones que se puede descargar del sitio Web de DB2 Everyplace y que permite crear y probar aplicaciones de DB2 Everyplace para dispositivos porttiles. Consulte la ayuda en lnea de DB2 Everyplace Mobile Application Builder para obtener ms informacin sobre esta herramienta. La Figura 1 muestra el funcionamiento conjunto de las herramientas en la solucin.
Desarrollo de aplicaciones
probar mover a produccin
DB2 Everyplace (motor de base de datos)

Sincronizacin

DB2 Everyplace Sync Server Sistema de nivel medio

DB2 Universal Database Sistema fuente

Personal Application Builder DB2 Everyplace (motor de base de datos)

Dispositivo porttil

desarrollar

Figura 1. Funcionamiento conjunto de las herramientas de la solucin DB2 Everyplace

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Configuracin bsica para la solucin DB2 Everyplace


La configuracin de la solucin DB2 Everyplace implica las dos tareas siguientes: 1. Desarrollo de aplicaciones para DB2 Everyplace. Estas aplicaciones proporcionan a los usuarios de dispositivos porttiles acceso a tablas de bases de datos DB2 Everyplace en sus dispositivos porttiles. Puede desarrollar aplicaciones para DB2 Everyplace utilizando DB2 Everyplace Mobile Application Builder u otro conjunto de herramientas para el desarrollo de aplicaciones para dispositivos porttiles. Consulte el apartado Desarrollo de aplicaciones DB2 Everyplace del Centro de informacin de DB2 Everyplace o la versin en PDF de la Gua de desarrollo de aplicaciones de DB2 Everyplace. 2. Configuracin de la sincronizacin. Debe definir los datos del servidor fuente a los que debe acceder cada grupo de usuarios. Los trabajadores mviles utilizan la aplicacin que la API de DB2 Everyplace Sync Client utiliza para conectarse al servidor y copiar datos fuente a sus dispositivos porttiles. Modifican estos datos utilizando estas aplicaciones y, a continuacin, sincronizan sus cambios con la base de datos fuente.

Base de datos porttil DB2 Everyplace


Esta base de datos reside en el dispositivo porttil. La base de datos porttil se incluye en DB2 Everyplace Database Edition, DB2 Everyplace Express Edition, DB2 Everyplace Enterprise Edition y en la caracterstica Mobility on Demand de DB2 UDB. Encontrar una lista de los dispositivos soportados en el apartado Procesadores de dispositivos porttiles y sistemas operativos soportados.

Procesadores de dispositivos porttiles y sistemas operativos soportados


En la tabla siguiente, las combinaciones soportadas de procesadores de dispositivos porttiles y sistemas operativos se marcan con una X. La disponibilidad de los dispositivos y el nivel de soporte de los dispositivos puede cambiar a lo largo del tiempo segn las acciones que realice el fabricante del dispositivo. Es posible que algunos dispositivos se queden sin soporte y que se aadan dispositivos nuevos.
Tabla 1. Procesadores de dispositivos porttiles y sistemas operativos soportados Procesador / SO Palm OS 4.1 Palm OS 5.0 Palm OS 5.2.1 ARM X X X X X X X X X X X X X X X ARM v4T Strong ARM x86 XScale WINS MIPS

Windows CE X v3 Windows CE X v4 Symbian OS 7 Linux QNX Neutrino X

Visiones generales del producto

Tabla 1. Procesadores de dispositivos porttiles y sistemas operativos soportados (continuacin) Procesador / SO Windows 2000 / XP / 2003 Server ARM ARM v4T Strong ARM x86 X XScale WINS MIPS

El diseo de algunos dispositivos puede limitar las funciones de DB2 Everyplace que el dispositivo puede utilizar. No todos los dispositivos admiten todas las funciones que DB2 Everyplace ofrece. IBM no puede garantizar que todos los dispositivos funcionen correctamente debido a diferencias de fabricacin, configuracin y software preinstalado del dispositivo. Algunos clientes de DB2 Everyplace para los dispositivos soportados se encuentran disponibles para descargarlos en lugar de estar incluidos en el soporte de DB2 Everyplace.

DB2 Everyplace Sync Server


DB2 Everyplace Sync Server se incluye con DB2 Everyplace Enterprise Edition, DB2 Everyplace Express Edition y la caracterstica Mobility on Demand de DB2 UDB. Entre otros componentes importantes asociados a Sync Server estn los siguientes: v El Centro de administracin de dispositivos porttiles de DB2 Everyplace v La herramienta de realizacin de scripts XML v Las aplicaciones de ejemplo (lado del servidor) Puede sincronizar datos y aplicaciones entre dispositivos porttiles de DB2 Everyplace y fuentes de datos corporativas utilizando DB2 Everyplace Sync Server y DB2 Everyplace Sync Client. La sincronizacin de datos puede ser bidireccional o unidireccional. Los datos se pueden actualizar en el dispositivo mvil de DB2 Everyplace o en la base de datos corporativa. Por ejemplo, los usuarios pueden descargar un subconjunto de datos de una base de datos DB2 para z/OS a una base de datos DB2 Everyplace en el dispositivo mvil, ver los datos, realizar cambios en los datos y, a continuacin, sincronizar los datos modificados de vuelta al servidor z/OS. DB2 Everyplace Sync Server tambin proporciona un mecanismo para la resolucin de conflictos. DB2 Everyplace Sync Server brinda una herramienta de administracin que le ser de ayuda para gestionar y proporcionar servicios de sincronizacin a grupos de usuarios con necesidades parecidas de sincronizacin de datos. En la publicacin Sync Server Administration Guide dispone de ms informacin sobre el Centro de administracin de dispositivos porttiles. DB2 Everyplace Sync Server da soporte a la sincronizacin de datos relacionales con las fuentes de datos siguientes: v DB2 Universal Database para z/OS v DB2 Universal Database para iSeries v DB2 Universal Database para Linux, UNIX y Windows v Fuentes de datos con una interfaz JDBC soportada. Consulte el apartado Configuracin de Sync Server para el acceso a fuentes de datos si desea obtener informacin sobre los controladores JDBC que DB2 Everyplace soporta.

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

DB2 Everyplace Sync Client


DB2 Everyplace Sync Client se incluye con DB2 Everyplace Enterprise Edition, DB2 Everyplace Express Edition. DB2 Everyplace Sync Client, que se ejecuta en dispositivos porttiles, es una API que las aplicaciones utilizan para permitir la sincronizacin con DB2 Everyplace Sync Server. Gestiona la sincronizacin bidireccional de los datos relacionales corporativos con la base de datos porttil DB2 Everyplace ubicada en el dispositivo porttil. El dispositivo porttil tambin maneja operaciones referentes a suscripciones de archivos para facilitar la distribucin de aplicaciones porttiles al dispositivo, y puede ejecutar procedimientos almacenados situados en una base de datos DB2. Para obtener informacin sobre las interfaces de programas de aplicacin (API) proporcionadas con Sync Client, consulte el apartado Resumen de funciones de la API C de IBM Sync Client, los Javadocs de %DSYINSTDIR%\doc\idioma\javadoc\SyncClientJavaAPI\index.html, o la API .NET API en %DSYINSTDIR%\doc\idioma\javadoc\ISyncNetAPI\ISync.NET.chm.

DB2 Everyplace Mobile Application Builder


Puede descargar DB2 Everyplace Mobile Application Builder de http://www.ibm.com/software/data/db2/everyplace/support.html. Puede utilizar DB2 Everyplace Mobile Application Builder para desarrollar aplicaciones de DB2 Everyplace para plataformas Palm OS, Windows, Symbian OS y otras plataformas que den soporte a una interfaz de usuario y una Mquina virtual Java. Mediante Mobile Application Builder, puede crear aplicaciones sin tener que escribir una sola lnea de cdigo. Para obtener informacin sobre cmo obtener Mobile Application Builder, visite el sitio Web de DB2 Everyplace. Existen otras herramientas de desarrollo como, por ejemplo, WebSphere Studio Device Developer, Visual Age Micro Edition, Metrowerks CodeWarrior y GNU Software Developers Kit.

Aplicaciones de ejemplo de DB2 Everyplace


Las aplicaciones de ejemplo proporcionan una muestra de aplicacin que utiliza DB2 Everyplace. Puede utilizar la aplicacin de ejemplo Visiting Nurse para comprobar rpidamente la sincronizacin bidireccional entre la base de datos porttil y Sync Server. Las aplicaciones de ejemplo constan de dos partes: una parte se ejecuta en Sync Server y otra se ejecuta en el dispositivo porttil en el que se encuentra la base de datos porttil DB2 Everyplace. Esta aplicacin de ejemplo en el dispositivo porttil demuestra el funcionamiento del motor de base de datos en un entorno autnomo. Cuando la aplicacin de ejemplo de Sync Server y la aplicacin de ejemplo del motor de base de datos porttil DB2 Everyplace se ejecutan juntas, funcionan como una aplicacin completa que invoca todos los componentes de DB2 Everyplace. DB2 Sync tambin es una aplicacin de ejemplo que muestra cmo utilizar la API de IBM Sync Client para sincronizar las tablas de las suscripciones definidas en el Centro de administracin de dispositivos porttiles. El Procesador de lnea de mandatos es una herramienta para el desarrollo de aplicaciones que se proporciona como aplicacin de ejemplo de utilizacin de DB2 Everyplace en plataformas que disponen de una interfaz de lnea de mandatos. El
Visiones generales del producto

Procesador de lnea de mandatos se utiliza para la base de datos porttil DB2 Everyplace en dispositivos porttiles. Sync Server no lo utiliza. Las sentencias de SQL soportadas por DB2 Everyplace permiten crear y eliminar una tabla o ndice, y suprimir, insertar y actualizar las filas de una tabla.

Caso prctico de ejemplo de DB2 Everyplace


Los tasadores de seguros son los encargados de inspeccionar los bienes daados de los clientes que presentan una reclamacin. En la mayora de las empresas, el tasador visita los bienes del reclamante, rellena formularios para validar o rechazar la reclamacin y evala el importe de los daos por los que se debe indemnizar al reclamante. Ms adelante, cuando el tasador regresa a su oficina, la informacin de los formularios se entra manualmente en el sistema informtico de la empresa, lo cual es un proceso tedioso y caro. Este proceso se puede simplificar considerablemente equipando a los tasadores con una aplicacin que ejecute DB2 Everyplace. Mediante sus dispositivos porttiles, los tasadores pueden acceder, dondequiera que est, a su plan de inspecciones, a su ruta de trabajo y a la informacin sobre la pliza de seguro del reclamante. Los tasadores tambin pueden cumplimentar el formulario de tasacin en el dispositivo porttil. Luego, los tasadores pueden sincronizar los datos de sus dispositivos porttiles con el sistema informtico de la empresa transfiriendo los nuevos datos del formulario de tasacin a la base de datos corporativa de la empresa. Si los tasadores necesitan informacin in situ, pueden sincronizar inmediatamente los datos de sus dispositivos porttiles con el sistema informtico de la empresa mediante un mdem. De esta forma, el proceso de evaluar reclamaciones puede prescindir totalmente del papel como soporte de informacin, lo cual supone un gran ahorro de costes para la empresa de seguros. Adems, las reclamaciones se liquidan con ms rapidez, pues el tasador tiene acceso inmediato a las bases de datos corporativas de la empresa.

Accesibilidad
Las funciones de accesibilidad ayudan a un usuario que tiene una discapacidad fsica, como, por ejemplo, movilidad restringida o visin limitada, a utilizar productos de software de forma satisfactoria. El Programa de instalacin, el Asistente de configuracin y el Centro de administracin de dispositivos porttiles de DB2 Everyplace son accesibles en incluyen las siguientes caractersticas de accesibilidad: v Posibilidad de controlar todas las funciones con el teclado en lugar del ratn v Personalizacin del tamao y el color de los fonts. v Recepcin de indicaciones de alerta visuales o bien auditivas. v Da soporte a las aplicaciones de accesibilidad que utilizan la API de accesibilidad Java. v Incluyen documentacin que se proporcionan en formato accesible. Entrada de datos mediante el teclado Entrada de datos mediante el teclado Puede utilizar teclas o combinaciones de teclas para realizar operaciones que tambin se pueden realizar utilizando un ratn. Se puede acceder a mens sensibles al contexto desde la barra de mens en lugar de pulsando el botn derecho del ratn.

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Visualizacin accesible DB2 Everyplace dispone de caractersticas que amplan la interfaz de usuario y mejoran la accesibilidad para los usuarios con poca visin. Estas mejoras de la accesibilidad incluyen el soporte para propiedades personalizables para los fonts. Valores de font Se puede especificar el color, el tamao y el font para el texto de los mens y ventanas de dilogos. No dependencia del color No es necesario distinguir los colores para utilizar cualquier funcin de este producto. Soporte de colores de alto contraste El Centro de administracin de dispositivos porttiles se visualiza correctamente cuando se utiliza un esquema de color de alto contraste. No hay contenido que centellee o aparezca de modo intermitente Ningn texto ni elemento de la interfaz grfica de usuario parpadea ni aparece de modo intermitente durante el funcionamiento. Seales de alerta alternativas Puede especificar si desea recibir alertas mediante seales auditivas o visuales. Compatibilidad con tecnologas asistenciales La interfaz del Centro de administracin de dispositivos porttiles de DB2 Everyplace da soporte a la API de accesibilidad Java, lo que permite el uso mediante lectores de pantalla y otras tecnologas asistenciales utilizadas por personas con discapacidades. Documentacin accesible Hay documentacin accesible disponible sobre el producto DB2 Everyplace en el Centro de informacin de DB2 Everyplace: http://www.elink.ibmlink.ibm.com /public/applications/publications/cgibin/pbi.cgi?CTY=US&&FNC=ICL&

Visin general de la documentacin de DB2 Everyplace


Este captulo proporciona informacin sobre la documentacin de DB2 Everyplace, incluidos los manuales, la ayuda en lnea y el centro de informacin basado en la Web.

Conjunto de informacin de DB2 Everyplace


La informacin tcnica de DB2 Everyplace se encuentra disponible en los siguientes formatos: v Manuales (PDF e impresos) Encontrar una descripcin de cada manual de la biblioteca de DB2 Everyplace en el Centro de publicaciones de IBM en www.ibm.com/shop/publications/order, o en el sitio Web de DB2 Everyplace en http://www-3.ibm.com/software/data/db2/everyplace/library.html. Las versiones PDF de estos manuales llevan los ttulos siguientes: DB2 Everyplace - Gua de desarrollo de aplicaciones DB2 Everyplace Sync Server Administration Guide
Visiones generales del producto

DB2 Everyplace - Gua de instalacin v Un centro de informacin El centro de informacin contiene la biblioteca completa de DB2 Everyplace en un formato til y en el que se pueden realizar bsquedas. Si desea obtener ms informacin, acceda a
http://www.elink.ibmlink.ibm.com/public/applications/publications/ cgibin/pbi.cgi?CTY=US&&FNC=ICL&

y seleccione DB2 Everyplace Information Center (Centro de informacin de DB2 Everyplace). v Ayuda en lnea Ayuda en lnea basada en un navegador HTML que se inicia desde la interfaz del Centro de administracin de dispositivos porttiles. En esta documentacin, %DSYINSTDIR% hace referencia al directorio en el que est instalado DB2 Everyplace en un sistema Windows y $DSYINSTDIR hace referencia al directorio en el que est instalado DB2 Everyplace en un sistema Linux o UNIX.

Acceso a la documentacin de DB2 Everyplace


La informacin tcnica de DB2 Everyplace se encuentra disponible en los siguientes formatos: v Manuales (PDF e impresos). Encontrar una descripcin de cada manual de la biblioteca de DB2 Everyplace en el Centro de publicaciones de IBM en www.ibm.com/shop/publications/order, o en el sitio Web de DB2 Everyplace en http://www-3.ibm.com/software/data/db2/everyplace/library.html. v Un centro de informacin (en formato HTML). La documentacin de DB2 Everyplace est disponible en un formato nuevo, el Centro de informacin de DB2 Everyplace. El centro de informacin contiene la biblioteca completa de DB2 Everyplace en un formato til y en el que se pueden realizar bsquedas. Si desea obtener ms informacin, acceda a
http://www.elink.ibmlink.ibm.com/public/applications/publications/ cgibin/pbi.cgi?CTY=US&&FNC=ICL&

y seleccione DB2 Everyplace Information Center (Centro de informacin de DB2 Everyplace).

Acceso a documentacin tcnica en la Web


La documentacin de DB2 Everyplace est disponible en un formato nuevo, el Centro de informacin de DB2 Everyplace. El centro de informacin contiene la biblioteca completa de DB2 Everyplace en un formato til y en el que se pueden realizar bsquedas. Si desea obtener ms informacin, acceda a
http://www.elink.ibmlink.ibm.com/public/applications/publications/cgibin/ pbi.cgi?CTY=US&&FNC=ICL&

y seleccione DB2 Everyplace Information Center (Centro de informacin de DB2 Everyplace).

10

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Desarrollo
Este captulo proporciona informacin para ayudarle a desarrollar aplicaciones y procedimientos almacenados para DB2 Everyplace. Tambin describe cmo utilizar WebSphere Studio Device Developer y ejecutar aplicaciones de ejemplo.

Herramientas de desarrollo
Las siguientes herramientas y aplicaciones de ejemplo le ayudarn a desarrollar aplicaciones para DB2 Everyplace. WebSphere Studio Device Developer WebSphere Studio Device Developer (WSDD) proporciona un entorno de desarrollo integrado (IDE) para crear, probar y desplegar aplicaciones Java 2 Micro Edition (J2ME) que se ejecutan en dispositivos inalmbricos como, por ejemplo, telfonos mviles, agendas personales electrnicas (PDA) y ordenadores de mano. Puede descargar una versin de prueba en http://www.ibm.com/software/wireless/wsdd/ Cuando utilice WSDD, tambin puede utilizar el plug-in de IBM DB2 Everyplace, que proporciona caractersticas que facilitan el desarrollo de aplicaciones para plataformas y dispositivos soportados por DB2 Everyplace. Para obtener informacin detallada, vaya a http://www.ibm.com/software/data/db2/everyplace/eclipse.html. WSDD utiliza J9 VM, que es posible que no soporte el tipo de procesador de su dispositivo. Si utiliza otro entorno de desarrollo y una JVM, asegrese de que la JVM soporte la JNI, puesto que el controlador JDBC de DB2 Everyplace usa la JNI. Otras JVM compatibles incluyen Sun PersonalJava, Insignia Jeode y NSIcom CrEme. Si el destino es Palm OS, deber utilizar la mquina virtual J9 que se proporciona con WSDD. Para obtener ms informacin y descargar una versin de evaluacin de WSDD, vaya a http://www.ibm.com/software/wireless/wsdd/index.html. Debido a cambios en el mecanismo de carga de la biblioteca compartida de Palm para J9, las distintas versiones de DB2 Everyplace slo son compatibles con versiones especficas de WSDD/J9: v DB2 Everyplace Versin 8.2 da soporte a WSDD 5.7/J9 2.2. Nota: J9 2.2 slo da soporte a jclMidp20 para Palm OS 5. Puesto que J9 2.2 ya no da soporte a jclXtr, DB2 Everyplace Versin 8.2 tampoco le da soporte. v El plug-in Versin 1.0.3 de Eclipse para DB2 Everyplace incluye soporte para WSDD 5.6/J9 2.1. v DB2 Everyplace Versin 8.1.4 da soporte a WSDD 5.5/J9 2.0. DB2 Everyplace Mobile Application Builder Puede desarrollar aplicaciones para DB2 Everyplace en una estacin de trabajo con herramientas de desarrollo C/C++ y Java disponibles como DB2 Everyplace Mobile Application Builder. Esta herramienta permite crear y probar aplicaciones para DB2 Everyplace en dispositivos porttiles. Puede descargar Mobile Application Builder de http://www.ibm.com/software/data/db2/everyplace/index.html.

Copyright IBM Corp. 1998, 2004

11

WebSphere Studio Device Developer


Instalacin de WCE Tooling para WSDD para destinos que no sean Palm OS
Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS. Despus de completar estos pasos, vuelva al apartado Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411. 1. En WSDD, pulse Help (Ayuda) Software Updates (Actualizaciones de software) Update Manager (Gestor de actualizacin) para abrir la perspectiva Install/Update (Instalar/Actualizar). 2. Utilice Update Manager para instalar las siguientes caractersticas: v SMF Bundle Development Kit 5.7.0 v Extension Services 5.7.0 v JSR 169 (BETA) para Extension Services 5.7.0 El proyecto de ejemplo de DB2 Everyplace slo necesita la caracterstica JSR 169; no obstante, las otras dos caractersticas son necesarias para la caracterstica JSR 169. 3. En la vista Feature Updates (Actualizaciones de caractersticas) de la perspectiva Install/Update (Instalar/Actualizar), pulse Sites to Visit (Sitios a visitar) IBM Micro Environment Toolkit for WebSphere Studio Extension Services For WebSphere Everyplace. 4. Para cada una de las caractersticas seleccionadas anteriormente, seleccione la caracterstica y pulse Install (Instalar) en la vista Preview (Vista previa). 5. Siga las instrucciones de instalacin para instalar la caracterstica. Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411.

Creacin de un proyecto de WSDD para DB2eAppl.java para destinos Palm OS


Puede utilizar el controlador JDBC de DB2 Everyplace para Palm OS con la biblioteca de clases de J9 jclMidp20. El proyecto de ejemplo DB2eAppl para Palm OS utiliza la biblioteca de clases de J9 jclMidp20. Puesto que el archivo jdbc.jar de J9 definido por JSR 169 no es compatible con jclMidp20, el soporte para el paquete java.sql en Palm OS se incluye en DB2eJDBC.jar y DB2eJDBC.prc en el directorio %DSYINSTDIR%\Clients\palmos\database\JDBC\midp20. DB2eJDBC.jar se utiliza en la va de acceso a clases al compilar aplicaciones JDBC, y DB2eJDBC.prc, que incluye el paquete java.sql, se instala en el simulador o en el dispositivo Palm. Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS. Despus de llevar a cabo estos pasos, vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS. 1. En WSDD, pulse Window (Ventana) Open (Abrir) Perspective (Perspectiva) Java para pasar a la perspectiva Java. 2. Pulse File (Archivo) New (Nuevo) Other (Otro). 3. Cree un proyecto para el ejemplo en Palm: a. En la pgina Select (Seleccionar) de la ventana New Project (Nuevo proyecto), seleccione J2ME en el panel izquierdo, seleccione MIDlet Suite en el panel derecho y, a continuacin, pulse Next (Siguiente).

12

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

b. En la pgina MIDlet Suite Creation (Creacin de MIDlet Suite) de la ventana New Project (Nuevo proyecto), escriba lo que se indica a continuacin y pulse Next (Siguiente). v Project (slo MIDP): DB2Everyplace-Sample-midp20 v MIDlet Suite Name: DB2eApplSuite v MIDlet Name: DB2eAppl v MIDlet class Name: DB2eAppl c. En la pgina Select J9 (Seleccionar J9) de la ventana New project (Nuevo proyecto), seleccione ive-2.2 y pulse Finish (Finalizar). Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS en la pgina 411.

Creacin de un proyecto WSDD y adicin de archivos jar a la va de acceso de creacin para DB2eAppl.java para destinos que no sean Palm OS
Requisitos previos: El proyecto de ejemplo DB2eAppl para destinos que no sean Palm OS utiliza la biblioteca de clases de J9 jclFoundation. Para el soporte del paquete java.sql, utiliza el archivo jdbc.jar de J9 definido por JSR 169. Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS. Despus de completar estos pasos, vuelva al apartado Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411. 1. En WSDD, pulse Window Open Perspective (Abrir perspectiva) Java para pasar a la perspectiva Java. 2. Cree el proyecto para el ejemplo: a. Pulse File (Archivo) New (Nuevo) Other (Otro). b. En la pgina Select (Seleccionar) de la ventana New Project (Nuevo proyecto), seleccione J2ME en el panel izquierdo, seleccione el proyecto J2ME en el panel derecho y despus pulse Next (Siguiente). c. En la pgina J2ME Project (Proyecto J2ME) de la ventana New Project (Nuevo proyecto), escriba DB2Everyplace-Sample como nombre de proyecto y pulse Next (Siguiente). d. En la pgina Library selection (Seleccin de biblioteca) de la ventana New Project (Nuevo proyecto), expanda 2.2.0, seleccione JCL Foundation 1.0 y, a continuacin, pulse Next (Siguiente). e. En la pgina Java Settings (Valores de Java) de la ventana New Project (Nuevo proyecto), pulse la pestaa Libraries (Bibliotecas). 3. Aada db2ejdbc.jar a la va de acceso de creacin: a. Pulse Add External JARs (Aadir JAR externos). b. En la ventana JAR Selection (Seleccin de JAR), navegue a %DSYINSTDIR%\Clients\Win32\database\jdbc\db2ejdbc.jar y despus pulse Open (Abrir). 4. De vuelta en la pgina Java Settings (Valores de Java), aada jdbc.jar a la va de acceso de creacin. a. Pulse Add Variable (Aadir variable).

Desarrollo

13

b. En la ventana New Variable Classpath Entry (Nueva entrada de variable Classpath), seleccione la variable ESWE_BUNDLES y pulse Extend (Ampliar). c. En la ventana Variable Extension (Ampliacin de variable), seleccione jdbc.jar y pulse OK (Bien). 5. De vuelta en la pgina Java Settings (Valores de Java) de la ventana New Project (Nuevo proyecto), pulse Finish (Finalizar). Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411

Instalacin y verificacin del proveedor de sincronizacin nativo basado en la deteccin


El proveedor de sincronizacin nativo basado en la deteccin requiere las siguientes bibliotecas compartidas nativas de Sync Client y las bibliotecas de DB2 Everyplace: v isyncore.prc v v v v v v v isyncconf.prc imsaconfig.prc imsafile.prc imsadb2e.prc wbxmllib.prc isyncxpt.prc isyncstat.prc

Adems, es necesario instalar los binarios de JVM de J9 Palm OS en el dispositivo. Si la aplicacin est utilizando el proveedor de sincronizacin nativa basada en la deteccin, debe importar los paquetes isync4j de Java siguientes: v com.ibm.mobileservices.isync v com.ibm.mobileservices.isync.db2e.sti v com.ibm.mobileservices.isync.event v com.ibm.mobileservices.isync.sql Verifique si el software siguiente est instalado en el sistema: v Palm OS Versin 3.5 o posteriores (con un mnimo de ocho MB de memoria) v WebSphere Studio Device Developer (WSDD) Versin 4.0 o posterior v Base de datos porttil DB2 Everyplace para Palm OS Versin 7.1 o posterior v Bibliotecas de DB2 Everyplace Sync Client Versin 8.1 o posteriores Despus de haber instalado WSDD, debe configurar un destino Palm OS. Para configurar un destino Palm OS, consulte el captulo titulado Getting Started with Palm OS Targets de la publicacin WSDD Development Environment & Tools Product Documentation. La documentacin de WSDD est ubicada en el CD-ROM del producto en IBM\wsdd\wsdd4.0\doc\wsddCustomer.pdf. Finalmente, verifique que WSDD est bien instalado creando y ejecutando una aplicacin de ejemplo de WSDD. El proveedor de sincronizacin nativo basado en la deteccin slo se utiliza con WebSphere Studio Device Developer J9 JVM en plataformas Palm OS.

14

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

En este tema se describe cmo se puede utilizar isync4j de DB2 Everyplace para Palm OS con la configuracin jclMidp de la J9 (J2ME MIDP). Este proveedor de sincronizacin hace referencia al paquete com.ibm.oti.palmos, por lo que slo se ejecutar en WSDD J9 JVM para PalmOS v1.5 o superiores. La tabla siguiente describe el lugar en el que estn ubicados los programas que se utilizan para instalar la API en dispositivos Palm, donde %DSYINSTDIR% representa el directorio de instalacin correspondiente a DB2 Everyplace.
Directorio %DSYINSTDIR%/Clients/PalmOS/Sync/isync4jpalm/lib %DSYINSTDIR%/Clients/PalmOS/Sync/isync4jpalm/sample %DSYINSTDIR%/Clients/PalmOS/Sync/isync4jpalm/bin/db2sync.prc Descripcin La carpeta que contiene isync4j para clases Java de Palm OS. Estas clases se importan durante la implementacin. La carpeta que contiene el cdigo fuente para la aplicacin isync4j de ejemplo. La aplicacin isync4j de ejemplo utilizada con la biblioteca CLDC de J9 Palm OS.

1. Cree un nuevo proyecto para la aplicacin de ejemplo de isync4j: a. Abra la perspectiva Java en WSDD. b. Seleccione File (Archivo) New (Nuevo) Other (Otro). c. Seleccione el asistente para J2ME para J9 y Create MIDlet Suite. d. Asigne un nombre al proyecto personalizado, nombre de MIDlet, y nombre de clase de MIDlet en el dilogo MIDlet Suite Creation. e. Pulse Next (Siguiente). f. Vuelva a pulsar Next (Siguiente) para ir a Java Settings (Valores de Java). g. En Java Settings (Valores de Java), pulse la pestaa Libraries (Bibliotecas) y pulse Create Folder... (Crear carpeta...). h. Escriba lib en el dilogo New Class Folder (Nueva carpeta de clase). i. Pulse Finish (Finalizar). 2. Importe las clases Java ISYNC4J de DB2 Everyplace y configure la va de acceso de creacin. a. Pulse el proyecto en la vista Packages (Paquetes) y, a continuacin, pulse el elemento de men File (Archivo) Import... (Importar...) b. Importe la carpeta %DSYINSTDIR%/Clients/PalmOS/Sync/isync4jpalm/lib y seleccione %DSYINSTDIR%/Clients/PalmOS/Sync/isync4jpalm/lib como directorio de origen. c. Expanda el directorio lib y seleccione el recuadro de seleccin correspondiente al directorio com en lib. En Select the destination for imported resources: (Seleccione el destino para los recursos importados), escriba el nombre del proyecto seguido de /lib en el campo Folder: (Carpeta). Por ejemplo, si el nombre del proyecto es DB2Sync, el campo deber contener DB2Sync/lib. d. Pulse Finish (Finalizar). e. Expanda la carpeta lib. Deber ver los siguientes paquetes ISYNC4J de Java: com.ibm.mobileservices.isync com.ibm.mobileservices.isync.db2e.sti com.ibm.mobileservices.isync.event com.ibm.mobileservices.isync.sql 3. Verifique la configuracin de la biblioteca isync4j creando y ejecutando la aplicacin de ejemplo.
Desarrollo

15

a. Importe la aplicacin de ejemplo. v Pulse la carpeta src correspondiente al proyecto en la vista Packages (Paquetes) y despus pulse File (Archivo) Import (Importar) en el men principal. v Importe DB2Sync.java. Seleccione %DSYINSTDIR%/Clients/PalmOS/Sync/isync4jpalm/samples/DB2Sync/ como directorio de origen y, a continuacin, seleccione el recuadro de seleccin correspondiente a DB2Sync.java. Verifique que el destino de los recursos importados sea <proyecto>/src. b. Cree un archivo de construccin para la aplicacin de ejemplo. v En el editor, pulse la pestaa in/exclusion (in/exclusin) y luego New (Nuevo). v Especifique DB2Sync como clase principal y seleccione J9 for Palm 68k como plataforma. Pulse Next (Siguiente). v Escriba el ID de creador y DB2Sync como App Name (Nombre de aplicacin). Pulse Next (Siguiente) dos veces. v Seleccione Prc Application on PalmOS emulator. Pulse Finish (Finalizar). 4. Modifique el archivo DB2Sync.jxeLinkOptions. a. Expanda la carpeta palm68k del proyecto en la vista Packages. b. Realice una doble pulsacin sobre DB2Sync.jxeLinkOptions. c. En el editor, pulse la pestaa in/exclusion (in/exclusin) y luego New (Nuevo). d. Escriba com.ibm.mobileservices.isync.db2e.sti.DB2eISyncProvider como Rule pattern (Patrn de regla) y luego pulse OK (Bien). e. En el editor, pulse la pestaa source (fuente) f. Escriba -vmOption -ms:15 para establecer el tamao de pila. g. Guarde los cambios efectuados. 5. Ejecute la aplicacin de ejemplo. a. Pulse el icono Run (Ejecutar) del men y, a continuacin, seleccione Run (Ejecutar) Build (Creacin) Launch (Iniciar) en el archivo de creacin. b. Seleccione el destino para la aplicacin de ejemplo y pulse Finish. c. Si no hay ningn error, el emulador de Palm OS debe comenzar y ejecutar la aplicacin. Ahora puede crear su propia aplicacin. Cuando cree una aplicacin nueva, incluya un nombre de proyecto nuevo para isync4j de DB2 Everyplace en la va de acceso de construccin del proyecto. Una vez que cree un archivo de construccin para la aplicacin, modifique el archivo jxeLinkOptions del mismo de forma que se ajuste a las necesidades de la aplicacin.

Importacin de DB2eAppl.java a WSDD para Palm OS


Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS. Despus de completar estos pasos, vuelva al apartado Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS en la pgina 411. 1. En la vista Package Explorer (Explorador de paquetes) de la perspectiva Java, pulse el botn derecho del ratn en la carpeta src del proyecto DB2Everyplace-Sample-midp20 y despus pulse Import (Importar) en el men emergente.

16

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

2. En la pgina Select (Seleccionar) de la ventana Import (Importar), seleccione Sistema de archivos (File System) como fuente de importacin y despus pulse Next (Siguiente). 3. En la pgina File system (Sistema de archivos) de la ventana Import (Importar), pulse Browse (Examinar) para el campo From directory (Desde directorio). 4. Navegue a la carpeta %DSYINSTDIR%\Clients\PalmOS\database\JDBC\midp20\sample y, a continuacin, pulse OK (Bien). 5. Seleccione el recuadro de seleccin DB2eAppl.java del panel derecho y despus pulse Finish (Finalizar). 6. Pulse Yes (S) cuando se le pregunte si desea sobregrabar DB2eAppl.java en la carpeta DB2Everyplace-Sample-midp20\src\. Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS en la pgina 411.

Importacin de DB2eAppl.java a WSDD para destinos que no sean Palm OS


Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS. Despus de completar estos pasos, vuelva al apartado Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411. 1. En la vista Package Explorer (Explorador de paquetes) de la perspectiva Java, expanda el proyecto DB2 Everyplace Sample, seleccione la carpeta src y, a continuacin, pulse File (Archivo) Import (Importar). 2. En la pgina Select (Seleccionar) de la ventana Import (Importar), seleccione File System (Sistema de archivos) como fuente de importacin y despus pulse Next (Siguiente). 3. En la pgina File System (Sistema de archivos) de la ventana Import (Importar), pulse Browse (Examinar) para el campo From directory (Desde directorio), navegue a la carpeta %DSYINSTDIR%\Clients\Win32\database\jdbc y despus pulse OK (Bien). 4. De vuelta en la pgina File System (Sistema de archivos) de la ventana Import (Importar), seleccione el recuadro de seleccin DB2eAppl.java del panel derecho y pulse Finish (Finalizar). Despus de importar DB2eAppl.java, deber ver un error en la vista Tasks (Tareas). 5. Expanda la carpeta src correspondiente al proyecto en la vista Package Explorer (Explorador de paquetes) hasta que vea DB2eAppl.java. 6. Efecte una doble pulsacin sobre DB2eAppl.java para abrir el archivo en un editor. El ejemplo DB2eAppl.java se ha diseado para poder obtener una conexin utilizando la clase DriverManager o bien la interfaz DataSource. No obstante el ejemplo no se podr compilar en este entorno, puesto que el archivo jdbc.jar de especificado en la variable de entorno CLASSPATH no soporta DriverManager (de acuerdo con la especificacin JSR 169). 7. Para solucionar el problema anterior, sustituya las siguientes lneas de cdigo:
try { Class.forName("java.sql.DriverManager"); Class.forName("com.ibm.db2e.jdbc.DB2eDriver"); con = DriverManager.getConnection(url); //Paso 2a } catch (ClassNotFoundException e) {

Desarrollo

17

com.ibm.db2e.jdbc.DB2eDataSource ds = new com.ibm.db2e.jdbc.DB2eDataSource(); ds.setUrl(url); con = ds.getConnection(); //Paso 2b }

por estas lneas de cdigo:


com.ibm.db2e.jdbc.DB2eDataSource ds = new com.ibm.db2e.jdbc.DB2eDataSource(); ds.setUrl(url); con = ds.getConnection(); //Paso 2b

Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411

Desarrollo de aplicaciones C/C++


Este captulo proporciona informacin para ayudarle a desarrollar aplicaciones utilizando C o C++. Describe detalladamente cmo utilizar la CLI (Call Level interface) y la API C de IBM Sync Client.

Desarrollo de aplicaciones C/C++ de DB2 Everyplace


Requisito previo: Instale DB2 Everyplace en la estacin de trabajo de desarrollo. Para desarrollar aplicaciones de DB2 Everyplace en C/C++ utilizando la interfaz DB2 Everyplace CLI: 1. Defina la aplicacin y sus requisitos de datos: Determine qu datos necesitar ver o cambiar el usuario final, y cmo se recuperarn, almacenarn y actualizarn los datos en la base de datos porttil DB2 Everyplace. 2. Conozca la interfaz DB2 CLI y determine qu funciones de DB2 CLI se deben utilizar en la aplicacin. 3. Escriba un programa de aplicacin C/C++ utilizando las funciones de DB2 CLI soportadas en DB2 Everyplace. 4. Prepare, compile y enlace el cdigo de aplicacin con los archivos de cabecera y la biblioteca de sistema operativo de DB2 Everyplace. 5. Pruebe la aplicacin: a. Copie las bibliotecas DB2 Everyplace en el emulador o dispositivo de su sistema operativo. b. Pruebe la aplicacin en un dispositivo o emulador, si es apropiado.

Preparacin, compilacin y enlace de un proyecto C/C++


Esta tarea forma parte de la tarea ms amplia del Desarrollo de aplicaciones de DB2 Everyplace utilizando C/C++. Al completar los pasos para Preparar, compilar y enlazar un proyecto C/C++, vuelva a Desarrollo de aplicaciones C/C++ de DB2 Everyplace. 1. Cree un archivo de proyecto. Este procedimiento vara en funcin de las herramientas de desarrollo y del sistema operativo para el que se est realizando el desarrollo. 2. Incluya en el proyecto los archivos de cabecera de DB2 Everyplace siguientes. Los archivos de cabecera contienen las constantes, tipos de datos y prototipos de funcin C/C++ que se proporcionan con DB2 Everyplace. Los archivos de cabecera son los siguientes:

18

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

%DSYINSTDIR%\Clients\include\sqlcli.h %DSYINSTDIR%\Clients\include\sqlcli1.h %DSYINSTDIR%\Clients\include\sqlext.h %DSYINSTDIR%\Clients\include\sqlsystm.h 3. Incluya los archivos de cabecera especficos para su aplicacin. 4. Incluya en el proyecto la biblioteca de DB2 Everyplace apropiada. 5. Opcional: Defina la macro UNICODE y _UNICODE en el archivo del proyecto para obtener el soporte de UNICODE. Consulte el apartado Soporte para UNICODE de DB2 Everyplace en la pgina 384 para obtener ms informacin sobre UNICODE 6. Compile el proyecto y enlace el cdigo de objeto con la biblioteca de DB2 Everyplace apropiada. Muchas de las herramientas de desarrollo de aplicaciones proporcionan la compilacin y el enlace automticos desde dentro de un entorno de desarrollo integrado. Para obtener informacin adicional acerca de cmo compilar y enlazar un proyecto, consulte la documentacin que se incluye con el software de desarrollo de aplicaciones. La tabla siguiente es un resumen de las bibliotecas de DB2 Everyplace y lista informacin adicional correspondiente a cada sistema operativo.
Tabla 2. Bibliotecas de DB2 Everyplace Sistema operativo Palm OS Archivos de biblioteca necesarios e informacin adicional %DSYINSTDIR%\clients\palmos\database\DB2e.libOpcional: Aumente el tamao de la pila de ejecucin de programas hasta 8 KB. El valor por omisin es de 4 KB. Las aplicaciones para Palm OS tienen un tamao predefinido limitado para la pila de ejecucin de programas de la aplicacin. Dependiendo de la aplicacin, puede tener un problema de desbordamiento de pila cuando ejecute el programa. Para evitar este problema, especifique un tamao de pila mayor en el archivo palm-pref.r, que se incluye con DB2 Everyplace. Siga las instrucciones del archivo palm-pref.r e incluya este archivo en el archivo del proyecto. Si est desarrollando una aplicacin utilizando PRC-Tools, aada stack=0x8000 al archivo .def para su aplicacin. Por ejemplo: application {MyApplicationName APID stack=0x8000 } Symbian OS Aplicaciones de emulador: %DSYINSTDIR%\clients\Symbian7\database\wins\DB2e.lib Aplicaciones de dispositivo: %DSYINSTDIR%\clients\Symbian7\database\armi\DB2e.lib

Desarrollo

19

Tabla 2. Bibliotecas de DB2 Everyplace (continuacin) Sistema operativo Windows CE Archivos de biblioteca necesarios e informacin adicional

Procesador ARM: v V3.00 %DSYINSTDIR%\clients\wince\database\v3\armrel\DB2e.lib v V4.00 %DSYINSTDIR%\clients\wince\database\v4\ARM4VRel\DB2e.lib Procesador MIPS: v V3.00 %DSYINSTDIR%\clients\wince\database\v3\mipsrel\DB2e.lib v V4.00 %DSYINSTDIR%\clients\wince\database\v4\MIPSIVRel\DB2e.lib Emulador de Windows CE: v V3.00 %DSYINSTDIR%\clients\wince\database\v3\x86emrel\DB2e.lib (par el emulador de Pocket PC) %DSYINSTDIR%\clients\wince\database\v4\x86rel\DB2e.lib (para el emulador de Pocket PC 2002) v V4.00 %DSYINSTDIR%\clients\wince\database\v4\emulatorRel\DB2e.lib (para el emulador de WinCE.NET) Compruebe que se haya habilitado UNICODE para el proyecto. Aada UNICODE y _UNICODE a la Definicin de preprocesador de la Configuracin del proyecto. Procesador XScale: v v4.00 %DSYINSTDIR%\clients\wince\database\v4\XScaleRel\DB2e.lib

Windows Neutrino

%DSYINSTDIR%\clients\Win32\database\x86\DB2e.lib libdb2e.so Este archivo est ubicado en el directorio %DSYINSTDIR%/clients/neutrino/database/proc.

Linux

libdb2e.so Este archivo est ubicado en el directorio %DSYINSTDIR%/Clients/Linux/database/proc.

Prueba de una aplicacin C/C++


Esta tarea forma parte de la tarea ms amplia del Desarrollo de aplicaciones de DB2 Everyplace utilizando C/C++. Al completar los pasos para probar una aplicacin C/C++, vuelva a Desarrollo de aplicaciones C/C++ de DB2 Everyplace en la pgina 18. 1. Copie las bibliotecas DB2 Everyplace en el emulador o dispositivo de su sistema operativo. Sin estos archivos, una aplicacin de DB2 Everyplace no se cargar. La tabla siguiente es un resumen de los archivos de DB2 Everyplace necesarios para cada sistema operativo.

20

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 3. Archivos de DB2 Everyplace necesarios para las pruebas Sistema operativo Palm OS Archivos necesarios en el dispositivo o emulador %DSYINSTDIR%\clients\palmos\database\DB2eCat.prc %DSYINSTDIR%\clients\palmos\database\DB2eCLI.prc %DSYINSTDIR%\clients\palmos\database\DB2eComp.prc %DSYINSTDIR%\clients\palmos\database\DB2eRunTime.prc %DSYINSTDIR%\clients\palmos\database\DB2eDMS.prc Symbian OS Para pruebas de emuladores, copie el archivo %DSYINSTDIR%\clients\symbian7\database\wins\DB2e.dll en cada uno de los directorios de emulador siguientes: \EPOCROOT%EPOC32\Release\wins\udeb\(para un emulador de depuracin) \EPOCROOT%EPOC32\Release\wins\urel\(para un emulador de liberacin) Para probar el dispositivo, instale el archivo siguiente utilizando el software de conexin PC Suite: %DSYINSTDIR%\clients\symbian7\database\armi\DB2e.sis Windows CE Instale la biblioteca apropiada para su sistema operativo. Procesador ARM: v V3.00 %DSYINSTDIR%\clients\wince\database\v3\armrel\DB2e.dll Procesador MIPS: v V3.00 %DSYINSTDIR%\clients\wince\database\v3\mipsrel\DB2e.dll Emulador de Windows CE: v V3.00 Para un emulador de Pocket PC: %DSYINSTDIR%\clients\wince\database\v3\x86emrel\DB2e.dll Para un emulador de Pocket PC 2002: %DSYINSTDIR%\clients\wince\database\v3\x86rel\DB2e.dll Windows Copie %DSYINSTDIR%\clients\win32\database\x86\DB2e.dll en el directorio actual de la aplicacin en la variable de entorno PATH del sistema. $DSYINSTDIR/database/x86/libdb2e.so(para el tipo de procesador x86) y $DSYINSTDIR/database/strongarm/libdb2e.so(para el tipo de procesador strongarm) $DSYINSTDIR/database/x86/libdb2e.so(para el tipo de procesador x86) y $DSYINSTDIR/database/strongarm/libdb2e.so(para el tipo de procesador strongarm)

Neutrino

Linux

2. Para Linux y Neutrino: Aada libdb2e.so a la va de acceso de bsqueda de biblioteca, utilizando uno de los mtodos siguientes: v Copie libdb2e.so en un directorio que est en la va de acceso de bsqueda de biblioteca. Es posible que esta accin requiera permisos root. v Copie libdb2e.so en otro directorio y aada dicho directorio a la va de acceso de bsqueda de biblioteca. Aadir un directorio a la va de acceso de bsqueda de biblioteca de modo permanente requiere una entrada en /etc/ld.config. Se puede aadir temporalmente un directorio a la va de acceso de bsqueda de biblioteca estableciendo la variable de entorno LD_LIBRARY_PATH del modo apropiado.
Desarrollo

21

Por ejemplo, escriba el mandato siguiente (este mandato slo funciona en bash, con libdb2e.so en el directorio actual): export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<dir>, donde <dir> es el directorio en el que se encuentra libdb2e.so. 3. Cargue los archivos de la aplicacin que est probando. 4. Pruebe la aplicacin.

Aplicaciones C/C++ de ejemplo


Se proporciona, como mnimo, una aplicacin C/C++ de ejemplo para cada sistema operativo. Consulte el directorio de cliente apropiado para ver todas las aplicaciones de ejemplos con cdigo fuente.

Herramientas de desarrollo de C/C++


Puede escribir una aplicacin C/C++ utilizando las funciones de DB2 CLI soportadas por DB2 Everyplace. Entre las herramientas de desarrollo estndar de C/C++ para los sistemas operativos soportados se encuentran las siguientes: Palm OS Se puede utilizar: v DB2 Everyplace Mobile Application Builder. Para obtener informacin sobre Mobile Application Builder, visite el sitio Web de DB2 Everyplace en la direccin http://www.ibm.com/software/data/db2/everyplace/ v Software Developers Kit de GNU. v Metrowerks CodeWarrior para Palm Computing Platform. Este entorno de desarrollo comercial le permite crear programas C/C++ para el sistema operativo Palm OS utilizando una estacin de trabajo Windows. Recomendacin: Registre los ID de creador de aplicacin en Palm, Inc. para evitar conflictos con otras aplicaciones para Palm OS. Las tablas y aplicaciones de DB2 Everyplace tienen ID de creador, cuyo formato es IBDB o DB2x, donde x es una letra de la a a la z. Para obtener ms informacin sobre los ID de creador, visite el sitio Web siguiente: http://www.palmos.com/dev/ Symbian OS Se puede utilizar: v CodeWarrior para Symbian OS v Borland C++ BuilderX Mobile o Mobile Studio v Microsoft Visual C++ 6 junto con el correspondiente SDK (Software Developers Kit) de Symbian para desarrollar sus aplicaciones. Recomendacin: Obtenga los UID de Symbian OS para incluir en el archivo de proyecto. Puede conseguir estos ID de SDK o en el sitio Web siguiente: http://www.symbian.com/developer/techlib/papers/tn_uid/uidinfo.html Windows CE Puede utilizar Microsoft Embedded Visual Tools 3.0 para desarrollar sus aplicaciones para Pocket PC 2000/2002. Puede utilizar Microsoft Embedded Visual Tools 4.0 para desarrollar aplicaciones C/C++ nativas

22

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

para .NET. Para los dispositivos Pocket PC 2003 y .NET, utilice Microsoft Visual Studio .NET 2003 para desarrollar aplicaciones gestionadas para Compact Framework. Sistemas operativos Windows NT y Windows 2000 Puede utilizar Microsoft Visual C++ para desarrollar sus aplicaciones. Puede utilizar Microsoft Visual Studio .NET para desarrollar aplicaciones gestionadas para .NET. QNX Neutrino Puede utilizar Metrowerks Codewarrior for QNX Neutrino o QNX Neutrino Software Developers Kit (SDK) para desarrollar sus aplicaciones. Linux Puede utilizar las herramientas de desarrollo entre plataformas de distribucin de Linux incorporadas para desarrollar las aplicaciones. El kernel de Linux incorporado necesita disponer de soporte para los binarios ELD habilitados. Si desarrolla la aplicacin en un sistema con la misma arquitectura que el sistema de destino, tambin puede utilizar las herramientas C/C++ de GNU.

Sistemas operativos que dan soporte a C/C++


La interfaz C/C++ est totalmente soportada en los sistemas operativos siguientes: v Palm OS v Symbian OS v Windows CE para Pocket PC v Windows (Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows 2003) v QNX Neutrino v Linux y Linux incorporado

CLI (Interfaz de nivel de llamada)


Este captulo proporciona informacin que le ayudar a desarrollar aplicaciones utilizando la CLI, una interfaz de programacin que las aplicaciones C y C++ pueden utilizar para acceder a bases de datos DB2 Everyplace.

Qu es la CLI?
DB2 Everyplace CLI (interfaz de nivel de llamada) es la interfaz SQL invocable de IBM a la base de datos DB2 Everyplace. Es una interfaz de programas de aplicacin C y C++ para el acceso a bases de datos relacionales que utiliza llamadas a funciones para pasar sentencias de SQL dinmico como argumentos de funciones. DB2 Everyplace CLI se basa en DB2 Universal Database CLI, que se basa a su vez en la especificacin ** Open Database Connectivity** (ODBC) de Microsoft y en el estndar internacional para SQL/CLI. Estas especificaciones se eligieron como base para DB2 Everyplace CLI en un esfuerzo de seguir los estndares del sector y de proporcionar una curva de aprendizaje ms corta para los programadores que ya estn familiarizados con cualquiera de estas interfaces de base de datos. DB2 Everyplace CLI incluye soporte para muchas funciones de ODBC e ISO SQL/CLI, as como caractersticas especficas de DB2 Everyplace. Para entender qu es DB2 Everyplace CLI o cualquier interfaz de SQL invocable resulta til conocer en qu se basa y compararla con las interfaces existentes.
Desarrollo

23

X/Open Company y SQL Access Group han desarrollado conjuntamente una especificacin para interfaz de SQL invocable conocida como X/Open Call Level Interface. El objetivo de esta interfaz es aumentar la portabilidad de las aplicaciones permitindoles ser independientes de cualquier interfaz de programacin de cualquier proveedor de bases de datos. La mayor parte de la especificacin X/Open Call Level Interface se ha aceptado como parte de la norma internacional ISO Call Level Interface (ISO/IEC 9075-3:1995 SQL/CLI). Microsoft(R) desarroll una interfaz de SQL invocable denominada Open Database Connectivity (ODBC) para los sistemas operativos Microsoft basada en un borrador preliminar de X/Open CLI. La especificacin ODBC tambin incluye un entorno operativo en el que un gestor de controladores basado en la fuente de datos (nombre de la base de datos) proporcionada en la peticin de conexin carga dinmicamente en tiempo de ejecucin los controladores ODBC especficos de la base de datos. La aplicacin se enlaza directamente con una sola biblioteca de gestor de controladores en lugar de hacerlo con la biblioteca de cada DBMS. El gestor de controladores transmite las llamadas de funcin de la aplicacin en tiempo de ejecucin y garantiza que se dirijan al controlador ODBC adecuado especfico del DBMS. Puesto que el gestor de controladores ODBC slo conoce las funciones especficas de ODBC, no se puede acceder a las funciones especficas del DBMS en un entorno ODBC. Las sentencias de SQL dinmico especficas del DBMS se soportan mediante una mecanismo denominado clusula de escape. ODBC no est limitado a los sistemas operativos Microsoft; hay otras implementaciones disponibles en diversas plataformas. El gestor de controladores ODBC puede cargar la biblioteca de DB2 Everyplace CLI como un controlador ODBC. Para el desarrollo de aplicaciones ODBC, se debe obtener un kit de desarrollo de software (Software Development Kit, SDK) de ODBC. Para la plataforma Windows(R), el SDK de ODBC est disponible como parte del SDK de Microsoft Data Access Components (MDAC), que se puede descargar de http://www.microsoft.com/data/. Para las plataformas distintas a Windows, el SDK de ODBC lo proporcionan otros proveedores. Al desarrollar aplicaciones ODBC que se conecten a bases de datos de DB2 Everyplace, utilice este manual (para obtener informacin sobre extensiones e informacin de diagnstico especficos de DB2 Everyplace), junto con el manual OBDC Programmers Reference and SDK Guide, que se puede obtener de Microsoft. Las aplicaciones escritas directamente en DB2 Everyplace CLI enlazan directamente con la biblioteca de DB2 Everyplace CLI.

Conexin a la base de datos porttil DB2 Everyplace


Normalmente, las aplicaciones crean tablas en una ubicacin especfica, por ejemplo, el directorio C:\TEMP, y acceden a ellas. Al conectarse a la base de datos porttil DB2 Everyplace, puede utilizar la siguiente llamada de CLI:
rc = SQLConnect(hdbc, va-acceso, SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS);

En este ejemplo, va-acceso representa la va de acceso de la base de datos porttil DB2 Everyplace. La va de acceso puede incluir (aunque no es necesario) el nombre de la base de datos. Por lo tanto, los dos ejemplos siguientes son correctos, suponiendo que exista una base de datos porttil DB2 Everyplace en C:\TEMP.
rc = SQLConnect(hdbc, "C:\\TEMP\\mi_base_datos", SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS); rc = SQLConnect(hdbc, "C:\\TEMP\\", SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS);

24

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

La conexin a memoria ampliada Sony Memory Stick en Palm OS requiere una especificacin de va de acceso especial, tal como muestra el ejemplo siguiente.
rc = SQLConnect(hdbc, "#0:\\", SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS);

Mediante el Procesador de lnea de mandatos, puede conectarse a una ubicacin especfica utilizando el mandato CONNECT TO. Por ejemplo, el mandato siguiente conecta a la base de datos porttil DB2 Everyplace en C:\TEMP\ en un sistema que ejecuta Windows:
CONNECT TO C:\TEMP\

Recuperacin gradual de datos por medio de CLI


Hay dos formas en las que un usuario recupera datos procedentes de una tabla de DB2 Everyplace por medio de CLI: v La aplicacin puede optar por asignar la memoria mxima que puede ocupar el valor de columna (basndose en su conocimiento de una columna en el conjunto de resultados por medio de SQLDescribeCol() o un conocimiento previo) y vincularla por medio de SQLBindCol(). v La aplicacin puede llamar a SQLGetData() para obtener datos de columna en el almacenamiento intermedio asignado por la aplicacin. En el caso de los datos binarios (BLOB) o datos de carcter (CHAR o VARCHAR), la columna puede ser muy larga. Es posible que el desarrollador de aplicaciones no desee asignar un almacenamiento intermedio que sea lo suficientemente grande como para que contenga toda la columna o que no pueda permitirse asignar un almacenamiento intermedio tan grande. Adicionalmente, en algunos casos la aplicacin slo requiere algunos fragmentos de la columna. En estos escenarios, se necesita la recuperacin gradual de datos. Una caracterstica de SQLGetData() permite a la aplicacin utilizar llamadas repetidas para obtener, en secuencia, el valor de una nica columna en fragmentos ms manejables. Esencialmente, una llamada a SQLGetData() devuelve SQL_SUCCESS_WITH_INFO (con SQLSTATE 01004) para indicar que hay ms datos para esta columna. Se llama repetidamente a SQLGetData() para obtener los fragmentos de datos restantes hasta que devuelva SQL_SUCCESS, lo que significa que se han recuperado todos los datos para esta columna. La sintaxis es la siguiente:
SQLRETURN SQLGetData ( SQLHSTMT SQLUSMALLINT SQLSMALLINT SQLPOINTER SQLINTEGER SQLINTEGER *FAR StatementHandle, ColumnNumber, TargetType, TargetValuePtr, BufferLength, StrLen_or_IndPtr); /* /* /* /* /* /* hstmt */ icol */ fCType */ rgbValue */ cbValueMax */ pcbValue */

Esta accin recuperar BufferLength bytes a la vez y StrLen_or_IndPtr indica el nmero de bytes restantes. El valor de retorno de la funcin es SQL_SUCCESS_WITH_INFO (con SQLSTATE 01004) si quedan bytes. En caso contrario, si el valor de retorno es SQL_SUCCESS, StrLen_or_IndPtr indica el nmero de bytes que DB2 Everyplace CLI tiene disponibles para volver al almacenamiento intermedio de TargetValuePtr. SQLGetData() puede utilizarse de este modo para recuperar columnas largas en el caso de que el tipo de datos C (TargetType) sea SQL_C_CHAR, SQL_C_BINARY o en el caso de que TargetType sea SQL_C_DEFAULT y el tipo de columna denote un binario o serie de caracteres.

Desarrollo

25

Para utilizar esta caracterstica de SQLGetData(), en primer lugar debe establecer un atributo de sentencia SQL_ATTR_GETDATA_MODE para SQL_PIECEMEAL_DATA. El valor por omisin de este atributo es SQL_CHUNK_DATA. La diferencia entre estas dos modalidades es que, en la modalidad SQL_CHUNK_DATA (que es la modalidad por omisin) y el momento en que se produce el truncamiento, el valor de retorno de SQLGetData() StrLen_or_IndPtr indica el nmero total de bytes de esta columna y la segunda llamada contina recuperando datos del principio de la columna.
sqlrc = SQLSetStmtAttr(hstmt, SQL_ATTR_GETDATA_MODE, (SQLPOINTER) SQL_PIECEMEAL_DATA, 0); SQLCHAR * stmt = (SQLCHAR *) "SELECT blobColumn FROM t1 where c1 = ?"; sqlrc = SQLPrepare( hstmt, stmt, SQL_NTS ) ; sqlrc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, ...); sqlrc = SQLExecute( hstmt ) ; sqlrc = SQLFetch( hstmt ); /* obtener BUFSIZ bytes a la vez, bufInd indica el nmero de */ /* Bytes que quedan */ sqlrc = SQLGetData (hstmt, 1, SQL_C_BINARY, (SQLPOINTER) buffer, BUFSIZ, &bufInd); while( sqlrc == SQL_SUCCESS_WITH_INFO ) { // manejar BUFSIZ bytes de datos blob en almacenamiento intermedio : sqlrc = SQLGetData (hstmt, 1, SQL_C_BINARY, (SQLPOINTER) buffer, BUFSIZ, &bufInd); } if (sqlrc == SQL_SUCCESS) { /* almacenamiento intermedio en ltimo GetData */ // manejar bufInd bytes de datos blob en almacenamiento intermedio : }

Desarrollo de aplicaciones para DB2 Everyplace Sync Client utilizando C/C++


Requisitos previos: Instale DB2 Everyplace en la estacin de trabajo de desarrollo. Este tema proporciona una visin general sobre cmo desarrollar aplicaciones de DB2 Everyplace Sync Client utilizando C/C++ basndose en la API C de IBM Sync Client. Para desarrollar aplicaciones para DB2 Everyplace Sync Client utilizando C/C++: 1. Defina la aplicacin de sincronizacin incluyendo: v los datos que sincronizar v las operaciones permitidas v los usuarios y grupos de usuarios v la seguridad de los datos (por ejemplo, el cifrado de datos sobre el cifrado de datos locales y por cable) 2. Incluya el archivo de cabecera de DB2 Everyplace Sync Client isyncore.h en los programas de aplicacin C y utilice las funciones de la API C de DB2 Everyplace Sync Client. 3. Prepare, compile y enlace el cdigo de la aplicacin con las bibliotecas del sistema operativo de DB2 Everyplace Sync Client, isyncconf e isyncore. 4. Pruebe la aplicacin: a. Instale las bibliotecas DB2 Everyplace en el emulador o dispositivo de su sistema operativo.

26

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

b. Pruebe la aplicacin en un emulador, si es apropiado. c. Pruebe la aplicacin en un dispositivo.

La aplicacin Sync Client C/C++ de ejemplo


El ejemplo siguiente ilustra cmo utilizar un nmero seleccionado de funciones de la API de DB2 Everyplace Sync Client para crear una aplicacin. Puede descargar este ejemplo del sitio Web de DB2 Everyplace: http://www.ibm.com/software/data/db2/everyplace/. Encontrar ms ejemplos de cdigo fuente en %DSYINSTDIR$\Clients\clientapisample\C_API.
/******************************************************************/ /** * Esta funcin define la funcin de escucha de la sincronizacin. * Vea isyncore.h para obtener ms informacin. * parmetro: listenerData, datos personales del usuario. * parmetro: event, objeto de suceso * parmetro: pExtraInfo (reservado) * devolucin: entero, si el tipo de suceso es ISCEVTTYPE_Retry: * . ISCRTNCB_ReplyYes : reintentar menos de 3 veces * . ISCRTNCB_ReplyNo : reintentar 3 o ms veces * si el tipo de suceso es ISCEVTTYPE_Info: * . ISCRTNCB_Done * si tipo suceso es ISCEVTTYPE_Query y cdigo suceso es ISCEVT_QueLogin: * . ISCRTNCB_Done : nombusuario y contrasea entrados correctamente * . ISCRTNCB_Default : nombusuario y contrasea no entrados * otros (ISCEVTTYPE_Fatal, ISCEVTTYPE_Error, ISCEVTTYPE_Query * e ISCEVTTYPE_Conflict) * . ISCRTNCB_Default : emprender la accin por omisin **/ static isy_INT32 syncListener( isy_UINT32 listenerData, ISCEVT *event, isy_VOID *pExtraInfo) { // appEventCodeToMessage es alguna funcin de usuario para correlacionar // un suceso con algn mensaje descriptivo del suceso char *statusMsg = appEventCodeToMessage(event); int timesRetried; switch (event->type) { case ISCEVTTYPE_Fatal: case ISCEVTTYPE_Error: printf("Error: %s\n", statusMsg); return ISCRTNCB_Default ; case ISCEVTTYPE_Retry: timesRetried = event->retry; if (timesRetried >= 3) return ISCRTNCB_ReplyNo; else { char ans; printf("%s [Y/N] ", statusMsg); ans = getchar(); getchar(); if(tolower(ans) == y) return ISCRTNCB_ReplyYes; else return ISCRTNCB_ReplyNo; } case ISCEVTTYPE_Info: switch (event->code) { case ISCEVT_InfSucceeded: case ISCEVT_InfFailed: case ISCEVT_InfCanceled: printf("Conclusion: %s\n", statusMsg);
Desarrollo

27

break; case ISCEVT_InfGeneral: case ISCEVT_InfCancelingSync: case ISCEVT_InfPrepMsg: case ISCEVT_InfSendMsg: case ISCEVT_InfWaitMsg: case ISCEVT_InfApplyMsg: printf("Status: %s\n", statusMsg); break; default: // ignore other event code break; } // switch (event->code) return ISCRTNCB_Done; case ISCEVTTYPE_Query: if (event->code == ISCEVT_QueLogin) { ISCLISTENARG *args = event->info; isy_TCHAR *target = args->argv[0]; // Es slo un ejemplo, no pretende estar libre de fugas de memoria. isy_TCHAR *username = (isy_TCHAR *) calloc(18, sizeof(isy_TCHAR)); isy_TCHAR *password = (isy_TCHAR *) calloc(254, sizeof(isy_TCHAR)); char c; int i; printf("Query on target data(%s): %s ...\n", target, statusMsg); // Solicitar el nombre de usuario printf("Username: "); for(i = 0; (c = getchar()) != \n; i++) username[i] = c; username[i] = \0; if (i == 0) return ISCRTNCB_Default; // nombusuario no entrado // Solicitar la contrasea printf("Password: "); for(i = 0; (c = getchar()) != \n; i++) password[i] = c; password[i] = \0; args->argv[1] = username; args->argv[2] = password; return ISCRTNCB_Done; } return ISCRTNCB_Default; // todos los otros tipos de suceso no importan default: return ISCRTNCB_Default; } // switch (event->type)

// Ejemplo de SyncClient #include "isyncore.h main() { isy_TCHAR user[] = isy_T("usuario1"); isy_TCHAR password[] = isy_T("contraea"); HISCSERV hServ; HISCCONF hConf; HISCENG hEngine; isy_INT32 rc; rc = iscConfigOpen(hServ, isy_T(".\isyncPath"), &hConf;); rc = iscEngineOpen(hConf, &hEngine;); iscEngineSetListener(hEngine, syncListener, NULL); iscEngineSyncConfig(hEngine); // obtener primero la configuracin rc = iscEngineSync(hEngine); // sincronizar config + conjuntos suscripcin if (rc == ISCRTN_Failed) { HISCCSR hCursor;

28

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

isy_TCHAR id[ISCLEN_SubsSetID]; isy_TCHAR name[ISCLEN_SubsSetName]; isy_INT32 enabled; iscConfigOpenCursor(hConf, &hCursor;); while (iscConfigGetNextSubsSet(hConf, hCursor, id, name) == ISCRTN_Succeeded) { enabled = iscConfigSubsSetIsEnable(hConf, id); if (enabled != ISCRTN_True) continue; // olvidar los que se han // inhabilitado rc = iscConfigGetSubsSetStatus(hConf, id); if (rc != ISCRTN_Succeeded) // En ese caso, la aplicacin puede tener cierto cdigo que // procese los conjuntos de suscripcin no satisfactorios aqu. // Para inhabilitar el conjunto de suscripcin, llame a: iscConfigDisableSubsSet(hConf, id); } iscConfigCloseCursor(hConf, hCursor); rc = iscEngineSync(hEngine); // sincronizar config + conjs. suscripcin

} // cerrar todos los descriptores iscEngineClose(hEngine); iscConfigClose(hConf); iscServiceClose(hServ); } // principal

Desarrollo de aplicaciones Java


Este captulo describe cmo desarrollar aplicaciones utilizando Java. Se centra en los temas siguientes: v JDBC v JNI v JSP

Desarrollo de aplicaciones Java para DB2 Everyplace


Si todava no lo ha hecho, instale Java y JDBC en la estacin de trabajo, puesto que las aplicaciones Java que acceden a DB2 Everyplace utilizan el controlador JDBC de DB2 Everyplace. Para desarrollar una aplicacin de DB2 Everyplace utilizando Java, puede utilizar Java Software Developers Kit junto con la interfaz JDBC (Java Database Connectivity) para Java de DB2 Everyplace. Para desarrollar aplicaciones Java para DB2 Everyplace: 1. Importe el paquete java.sql y cualquier otra clase de Java que sea necesaria. 2. Conctese a la base de datos utilizando la clase DriverManager o bien la interfaz DataSource. Para obtener informacin detallada, vea la aplicacin de ejemplo Java. La sintaxis del URL JDBC es jdbc:subprotocolo:subnombre. El subprotocolo de DB2 Everyplace es db2e. Restriccin: DB2 Everyplace no da soporte a la ejecucin de varias tareas en Symbian. Para poder acceder a una base de datos desde un segundo paso, el objeto de Conexin del primer paso se debe cerrar para que se pueda establecer la conexin en el segundo paso. Distintos pasos no pueden compartir el mismo objeto de Conexin.
Desarrollo

29

3. Cree un objeto Statement. 4. Acceda a la base de datos (la lgica de la aplicacin va aqu): a. Ejecute una sentencia de SQL utilizando el objeto Statement. b. Recupere datos del objeto ResultSet devuelto (si la sentencia de SQL que ha ejecutado es una consulta). 5. Libere recursos de base de datos y JDBC cerrando los objetos ResultSet, Statement, y Connection.

Sincronizacin de Java de DB2 Everyplace


Los proveedores de sincronizacin de Java proporcionan la interfaz Java que invoca las bibliotecas de Java Sync Client. Hay dos tipos de proveedores de sincronizacin de Java de DB2 Everyplace: v Sincronizacin J2ME MIDP de DB2 Everyplace v DB2 Everyplace Java Sync Client para IBM Cloudscape Versin 10 en la pgina 31

Visin general de los proveedores de sincronizacin de Java de DB2 Everyplace


En este tema se describe la API de Java Sync Client soportada por DB2 Everyplace. La API es un conjunto de bibliotecas que permiten que los programadores creen aplicaciones que sincronicen los datos entre DB2 Everyplace y bases de datos relacionales empresariales. Funciona junto con DB2 Everyplace Sync Server para simplificar la sincronizacin de archivos y datos relacionales. Sync Server permite la resolucin de conflictos y gestiona el movimiento de datos hacia dispositivos porttiles y desde dispositivos porttiles. La API de Sync Client Java consta de dos tipos de proveedores de sincronizacin: v Sincronizacin nativa de DB2 Everyplace en la pgina 33 v Sincronizacin de Java de DB2 Everyplace Encontrar documentacin sobre la API en %DSYINSTDIR%\doc\idioma\javadoc\SyncClientJavaAPI\, donde idioma representa un idioma como, por ejemplo, es_ES. En los archivos de ejemplo se brinda informacin sobre cmo crear aplicaciones Java en el dispositivo cliente basndose en estos proveedores.

Sincronizacin J2ME MIDP de DB2 Everyplace


J2ME MIDP ISync Client permite crear aplicaciones que sincronizan suscripciones con el MIDP Record Store Management System (RMS). J2ME MIDP ISync Client es un conjunto de bibliotecas que colaboran con DB2 Everyplace Sync Server para simplificar la sincronizacin de datos relacionales entre bases de datos empresariales y dispositivos habilitados para MIDP 1.0. Sync Server gestiona el movimiento de datos a y desde el dispositivo MIDP. Puede descargar DB2 Everyplace J2ME MIDP ISync Client de http://www.ibm.com/software/data/db2/everyplace/support.html/ pulsando el enlace DB2 Everyplace samples (Ejemplos de DB2 Everyplace). Este tema incluye la informacin siguiente sobre el J2ME MIDP ISync Client: v Software de servidor Web necesario para instalar el J2ME MIDP ISync Client

30

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

v Software y hardware necesario para ejecutar el J2ME MIDP ISync Client en telfonos Motorola iDEN v Diseo del directorio de instalacin de J2ME MIDP ISync Client Software de servidor Web necesario para instalar el J2ME MIDP ISync Client Para poder instalar el J2ME MIDP ISync Client, se necesita uno de los dos productos de software siguientes: v WebSphere Application Server, Advanced Single Server Edition Versin 4.x o posteriores. Puede descargar una versin gratuita de prueba de este software del sitio Web de IBM en la direccin http://www.ibm.com/software/webservers/appserv/advanced.html. v Apache Tomcat Versin 4.0.x o posteriores. Puede bajar una copia libre de este software de la direccin http://jakarta.apache.org/tomcat/. Software y hardware necesario para ejecutar el J2ME MIDP ISync Client en telfonos Motorola iDEN Para instalar y ejecutar el proveedor de sincronizacin MIDP en telfonos Motorola iDEN, se necesitan el hardware y el software siguientes: v Sun Microsystems JavaTM 2 Platform Micro Edition, Wireless Toolkit v iDEN Update y cable de datos (para cargar aplicaciones en el telfono) v Apache ANT v RetroGuard Ofuscator v Paquetes Java isync4j (incluidos con DB2 Everyplace) com.ibm.mobileservices.isync com.ibm.mobileservices.isync.midp com.ibm.mobileservices.isync.event

DB2 Everyplace Java Sync Client para IBM Cloudscape Versin 10


DB2 Everyplace Java Sync Client para IBM Cloudscape Versin 10 permite crear aplicaciones que sincronizan suscripciones con una base de datos IBM Cloudscape Versin 10. Java Sync Client para IBM Cloudscape Versin 10 es un conjunto de bibliotecas que colaboran con DB2 Everyplace Sync Server para simplificar la sincronizacin de datos relacionales entre bases de datos empresariales y un cliente IBM Cloudscape. DB2 Everyplace Sync Server gestiona el movimiento de datos hacia el dispositivo y desde el dispositivo. Este tema incluye la siguiente informacin sobre Java Sync Client para IBM Cloudscape Versin 10: v Software necesario para ejecutar Java Sync Client para IBM Cloudscape Versin 10 v Caractersticas no soportadas por IBM Cloudscape Versin 10 v Java Sync Client para el diseo del directorio de IBM Cloudscape Versin 10 v Cmo establecer la variable de entorno CLASSPATH Software necesario para ejecutar Java Sync Client para IBM Cloudscape Versin 10 Para ejecutar Java Sync Client para IBM Cloudscape Versin 10, necesitar los siguientes productos de software:
Desarrollo

31

v DB2 Everyplace versin 8.2 o posterior v JDK 1.3.1 o posterior Nota: JDK 1.3.x requiere el paquete JCE 1.2.2 de Sun. Instale los archivos jar en el directorio $JAVA_HOME/jre/lib/ext. Caractersticas no soportadas por Java Sync Client para IBM Cloudscape Versin 10 v El procedimiento remoto CALL v Suscripciones personalizadas en el servidor v Tiempo de espera excedidos de la red, que se establecen con el valor config.createSyncService para la propiedad isync.timeout v Cifrado sobre cable (over-the-wire), que se habilita mediante el recuadro combinado Cifrado de la pgina Identificacin del cuaderno Suscripcin del Centro de administracin de dispositivos porttiles (puede especificar igualmente valores de cifrado, aunque no se aplicarn para los clientes IBM Cloudscape). v Cifrado por tabla, que se habilita mediante el recuadro de seleccin Cifrar de la ventana Definir suscripcin de duplicacin del Centro de administracin de dispositivos porttiles. Nota: Para cifrar la base de datos de IBM Cloudscape Versin 10, aada la siguiente opcin (que aparece en negrita) el URL de JDBC: jdbc:cloudspace:mydb;create=true; dataEncryption=true;bootPassword=Db2jeveryPlace Java Sync Client para el diseo del directorio de instalacin de IBM Cloudscape Versin 10 Los archivos de Java Sync Client para IBM Cloudscape Versin 10 se encuentran en los directorios siguientes: v %DSYINSTDIR%\Clients\javaclient\ contiene los archivos el archivo jar de la API ISync de IBM Cloudscape Versin 10. v %DSYINSTDIR%\Clients\clientapisample\Java_API contiene las aplicaciones de ejemplo v %DSYINSTDIR%\doc\lang\SyncClientJavaAPI contiene el Javadoc. Cmo establecer la variable de entorno CLASSPATH Para utilizar Java Sync Client para IBM Cloudscape Versin 10, defina la variable de entorno CLASSPATH de modo que incluya los siguientes archivos: v Los archivos jar de IBM Cloudscape Versin 10 de la instalacin de IBM Cloudscape Versin 10. v El archivo jar de la API ISync de IBM Cloudscape Versin 10 (db2jisync.jar). v Las aplicaciones de ejemplo (%DSYINSTDIR%/Clients/clientapisample/Java_API). Por ejemplo:
set CLASSPATH=%DSYINSTDIR%\Clients\DB2j\db2jisync.jar set CLASSPATH=%CLASSPATH%;%CS_INSTALL%\lib\cs.jar;%CS_INSTALL%\lib\cstools.jar set CLASSPATH=%CLASSPATH%;%DSYINSTDIR%\Clients\clientapisample\Java_API

32

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Sincronizacin nativa de DB2 Everyplace


Los proveedores de sincronizacin nativa proporcionan la interfaz Java que invoca a las bibliotecas del cliente de sincronizacin nativa. Nota: Los proveedores de sincronizacin nativa no soportan la seguridad de hebras en este release, la coordinacin de la sincronizacin de hebras es responsabilidad de la aplicacin. Hay dos tipos de proveedores de sincronizacin nativa de DB2 Everyplace: v Proveedor de sincronizacin nativa basado en Java Native Interface (JNI) v Proveedor de sincronizacin nativa basada en desvo de Palm OS Codificacin de caracteres en aplicaciones Java Las series de Java se encuentran en Unicode. No obstante, los proveedores de sincronizacin de Java convierten las series Java en bytes segn el formato especificado por la aplicacin. El formato especificado por la aplicacin altera temporalmente la codificacin de caracteres por omisin del sistema operativo. Vea la propiedad isync.encoding de ISyncManager.getISyncService para conocer las codificaciones que se pueden establecer.

Codificacin de caracteres en aplicaciones Java


Los programas Java utilizan internamente texto UNICODE; sin embargo, los datos tipo carcter de una tabla DB2 Everyplace pueden estar en un formato distinto de UNICODE, en funcin del sistema operativo y del idioma en que se haya creado la tabla. En el caso de los sistemas operativos Windows CE y Symbian OS, el controlador JDBC de DB2 Everyplace recupera texto de la base de datos e inserta texto en la base de datos utilizando el formato UTF-8. Para los dems sistemas operativos soportados, se utiliza la codificacin de caracteres por omisin del sistema. La codificacin por omisin se suele determinar mediante el atributo file.encoding de la propiedad del sistema Java. Por ejemplo, en el sistema operativo Windows, un usuario puede elegir utilizar una versin UNICODE o no UNICODE de la interfaz CLI; por consiguiente, en la misma mquina, una base de datos puede tener codificacin en formato UTF-8 y otra tener codificacin por cdigo local. Para permitir que una aplicacin JDBC acceda a datos de ambas bases de datos, DB2 Everyplace proporciona una manera de que los usuarios indiquen dinmicamente el formato de codificacin de datos que una aplicacin debe utilizar. El controlador JDBC de DB2 Everyplace convierte las series Java en bytes segn el formato especificado por la aplicacin. El formato especificado por la aplicacin altera temporalmente la codificacin de caracteres por omisin del sistema operativo. Los usuarios puede especificar dinmicamente el formato de codificacin de datos de la aplicacin por medio de la interfaz JDBC. Para ello: 1. Cree un objeto java.util.Properties. v Clave: DB2e_ENCODING v Valor: codificacin de caracteres. Utilice el valor UTF-8 para especificar DB2 Everyplace utilizando la codificacin UTF-8, o utilice cualquier codificacin de caracteres soportada por la JVM.

Desarrollo

33

2. Utilice uno de los dos mtodos siguientes para pasar el objeto java.util.Properties: v Para establecer conexin con un URL de base de datos determinado: Utilice el mtodo esttico Connection getConnection(String url, Properties info) de la clase DriverManager del paquete java.sql. v Para crear una conexin de base de datos con un URL determinado: Utilice el mtodo Connection connect(String url, Properties info) de la clase de interfaz Driver del paquete java.sql.

Visin general de las aplicaciones Java de ejemplo


Este tema describe las aplicaciones de ejemplo DB2eAppl.java y DB2eJavaCLP.java. Ejemplo 1: DB2eAppl.java DB2eAppl.java demuestra cmo codificar una aplicacin JDBC para DB2 Everyplace. Esta aplicacin utiliza la corriente de entrada estndar. Para ejecutar esta aplicacin, el entorno Java debe soportar java.lang.System.in. Los pasos principales de la aplicacin DB2eAppl.java son: 1. Importar el paquete java.sql. 2. Conectar con la base de datos en el directorio actual, el directorio en el que se ejecutar el programa DB2eAppl.java. La aplicacin de ejemplo permite obtener una conexin de dos modos. v Si la clase DriverManager se carga satisfactoriamente (Paso 2a del cdigo siguiente), se cargar el controlador JDBC de DB2 Everyplace com.ibm.db2e.jdbc.DB2eDriver y la aplicacin utilizar la clase DriverManager para obtener una conexin. v Si no se encuentra la clase DriverManager, la aplicacin utilizar la interfaz DataSource para obtener una conexin. Si el entorno de destino incluye el paquete opcional de JDBC para CDC/Foundation Profile (especificado por JSR 169), la aplicacin llamar a getConnection (Paso 2b del cdigo siguiente). Crear un objeto Statement. Configurar una base de datos muy simple que conste de una tabla EMPLOYEE con dos registros. Esto se hace utilizando el mtodo executeUpdate(String sql) de la interfaz java.sql.Statement. Seleccionar todos los registros de la tabla EMPLOYEE y recuperar las filas llamando al mtodo next() de la interfaz java.sql.ResultSet. Descartar la tabla EMPLOYEE de la base de datos. Liberar recursos JDBC.

3. 4.

5. 6. 7.

El cdigo fuente de DB2eAppl.java que aparece a continuacin contiene comentarios que muestran dnde se utilizan los pasos explicados ms arriba.
import java.sql.*; //Paso 1 public class DB2eAppl { public static void main(String[] args) { String url = "jdbc:db2e:sample"; try { Connection con; //Paso 2 try { Class.forName("java.sql.DriverManager"); Class.forName("com.ibm.db2e.jdbc.DB2eDriver");

34

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

con = DriverManager.getConnection(url); //Paso 2a } catch (ClassNotFoundException e) { com.ibm.db2e.jdbc.DB2eDataSource ds = new com.ibm.db2e.jdbc.DB2eDataSource(); ds.setUrl(url); con = ds.getConnection(); //Paso 2b } Statement st = con.createStatement(); //Paso 3 //Crear tabla: employee //Paso 4 st.executeUpdate("CREATE TABLE employee (EMPNO CHAR(6), FIRSTNAME VARCHAR(12))"); System.out.println("*** Created table: employee"); //Aadir registros a employee st.executeUpdate("INSERT INTO employee VALUES (112233,John)"); st.executeUpdate("INSERT INTO employee VALUES (445566,Mary)"); System.out.println("*** Inserted two records"); //Consultar y mostrar resultados //Paso 5 ResultSet rs = st.executeQuery("SELECT * FROM employee"); System.out.println("*** Query results:"); while (rs.next()) { System.out.print("EMPNO=" + rs.getString(1) + ", "); System.out.println("FIRSTNAME=" + rs.getString(2)); } //Suprimir tabla: employee //Paso 6 st.executeUpdate("Drop table employee"); System.out.println("*** Deleted table: employee"); //Liberar recursos Paso 7 rs.close(); st.close(); con.close(); } catch (SQLException sqlEx) { while(sqlEx != null) { System.out.println("[SQLException] " + "SQLState: " + sqlEx.getSQLState() + ", Message: " + sqlEx.getMessage() + ", Vendor: " + sqlEx.getErrorCode() ); sqlEx = sqlEx.getNextException(); } } catch (Exception ex) { ex.printStackTrace(); }

Ejemplo 2: DB2eJavaCLP.java DB2eJavaCLP.java es un procesador de lnea de mandatos Java para DB2 Everyplace. Restriction: En Palm OS, la aplicacin de ejemplo DB2eJavaCLP.java no est soportada.

JDBC
Sistemas operativos que dan soporte a la interfaz JDBC
La interfaz JDBC se soporta en los sistemas operativos siguientes: v Palm OS v Symbian OS v Windows CE para Pocket PC

Desarrollo

35

v Windows (Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP y Windows 2003) v QNX Neutrino v Linux y Linux incorporado

Definicin de atributos de sentencias JDBC


Para hacer que las aplicaciones JDBC resulten ms porttiles, DB2 Everyplace proporciona soporte para establecer atributos de sentencias (como el control del bit de modificacin o la habilitacin y la inhabilitacin de la reorganizacin de tablas) mediante propiedades de conexin. Los atributos se convierten en valores por omisin para las instancias de java.sql.Statement, java.sql.PreparedStatement y java.sql.CallableStatement que se acaban de crear. Este procedimiento es una alternativa al procedimiento de conversin de un objeto java.sql.Statement en un objeto com.ibm.db2e.jdbc.DB2eStatement que pueda invocar mtodos para establecer estos atributos. Ejemplos Utilizando java.sql.DriverManager
Properties pt = new Properties(); pt.setProperty("ENABLE_REORG", "false"); pt.setProperty("ENABLE_DELETE_PHYSICAL_REMOVE" , "true"); pt.setProperty("ENABLE_DIRTY_BIT_SET_BY_APPLICATION" , "false"); pt.setProperty("ENABLE_READ_INCLUDE_MARKED_DELETE" , "true"); con = DriverManager.getConnection(url, pt); Properties pt = new Properties(); pt.setProperty("ENABLE_REORG", "false"); pt.setProperty("ENABLE_DELETE_PHYSICAL_REMOVE" , "true"); pt.setProperty("ENABLE_DIRTY_BIT_SET_BY_APPLICATION" , "false"); pt.setProperty("ENABLE_READ_INCLUDE_MARKED_DELETE" , "true"); con = Driver.getConnection(url, pt); com.ibm.db2e.jdbc.DB2eDataSource ds = new com.ibm.db2e.jdbc.DB2eDataSource(); ds.setUrl(url); ds.setReorg(false); ds.setDeletePhysicalRemove(true); ds.setDirtyBitSetByApplication(false); ds.setReadIncludeMarkedDelete(true); con = ds.getConnection();

Utilizando java.sql.Driver

Utilizando javax.sql.DataSource

Informacin de consulta de API Interfaz java.sql.Driver Mtodo: Connection connect(String url, Properties info) Descripcin: Intenta establecer una conexin de base de datos con el URL indicado.
Tabla 4. Pares clave/valor para info Clave ENABLE_REORG ENABLE_DELETE_PHYSICAL_REMOVE ENABLE_DIRTY_BIT_SET_BY_APPLICATION ENABLE_READ_INCLUDE_MARKED_DELETE Valor True o false. El valor por omisin es true. True o false. El valor por omisin es false. True o false. El valor por omisin es false. True o false. El valor por omisin es false.

36

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Mtodo: Connection connect(String url, java.util.Hashtable info) Descripcin: Mtodo sobrecargado de DB2 Everyplace para las plataformas que no soportan java.util.Properties
Tabla 5. Pares clave/valor para info Clave ENABLE_REORG ENABLE_DELETE_PHYSICAL_REMOVE ENABLE_DIRTY_BIT_SET_BY_APPLICATION ENABLE_READ_INCLUDE_MARKED_DELETE Valor True o false. El valor por omisin es true. True o false. El valor por omisin es false. True o false. El valor por omisin es false. True o false. El valor por omisin es false.

Interfaz javax.sql.DataSource
Tabla 6. Propiedades especficas de DB2 Everyplace para la interfaz DataSource Nombre de propiedad reorg deletePhysicalRemove Tipo boolean boolean Descripcin Habilita o inhabilita la reorganizacin de tablas. Habilita/inhabilita la eliminacin fsica de registros. Permite/no permite que la aplicacin establezca el bit de modificacin. Habilita/inhabilita la lectura de registros suprimidos de forma lgica.

dirtyBitSetByApplication

boolean

readIncludeMarkedDelete

boolean

Mtodos:
void void void void setReorg(boolean enable) setDeletePhysicalRemove(boolean enable) setDirtyBitSetByApplication(boolean enable) setReadIncludeMarkedDelete(boolean enable)

boolean isReorg() boolean isDeletePhysicalRemove() boolean isDirtyBitSetByApplication()

JNI
Instalacin del proveedor de sincronizacin nativa basado en JNI
El proveedor de sincronizacin basado en JNI requiere los archivos siguientes: v el archivo isync4j.jar v los binarios de cliente de sincronizacin nativa siguientes: isyncore.dll isyncconf.dll imsadb2e.dll imsafile.dll imsaconfig.dll
Desarrollo

37

wbxmllib.dll isync4j.dll isyncxpt.dll isyncstat.dll

Si la aplicacin est utilizando el proveedor de sincronizacin nativa basada en JNI, debe importar los paquetes isync4j de Java siguientes: v com.ibm.mobileservices.isync v com.ibm.mobileservices.isync.event v com.ibm.mobileservices.isync.sql Verifique si el software siguiente est instalado en el sistema: v DB2 Everyplace Sync Server Versin 8.2 v DB2 Everyplace Sync Client Libraries Versin 8.2 v Una mquina virtual de Java que soporte Java Native Interface El proveedor de sincronizacin JNI funciona con una mquina virtual de Java que soporta Java Native Interface. Este proveedor se soporta en los sistemas operativos siguientes: v Windows (Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows 2003) v Symbian Release 7 (para dispositivos Sony Ericsson P800) v Windows CE (para dispositivos Pocket PC) v Linux v QNX Neutrino Encontrar aplicaciones de ejemplo en %DSYINSTDIR%\clients\clientapisample\Java_API\. Lea los temas siguientes para obtener ms informacin sobre el modo de instalar el proveedor de sincronizacin basada en JNI en cada uno de los sistemas operativos soportados: v Instalacin del proveedor de sincronizacin basado en JNI en Windows en la pgina 40 v Instalacin del proveedor de sincronizacin basado en JNI en dispositivos Symbian OS en la pgina 39 v Instalacin del proveedor de sincronizacin basado en JNI en Windows CE

Instalacin del proveedor de sincronizacin basado en JNI en Windows CE


Para instalar el proveedor de sincronizacin basado en JNI en sistemas operativos Windows CE, deber compilar y ejecutar el programa ISyncSample. El proveedor de sincronizacin basado en JNI para dispositivos Windows CE se ha probado en J9 JVM. 1. Compile el programa ISyncSample en su estacin de trabajo. a. Escriba el mandato siguiente para compilar ISyncSample.java con isync4j.jar en la va de acceso de clase: javac -classpath isync4j.jar ISyncSample.java b. Edite db2sync_db2e.properties para especificar la contrasea, usuario y URL del servidor. 2. Ejecute el programa ISyncSample.

38

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

a. Verifique que el entorno de ejecucin de J9 Java Virtual Machine (JVM) est instalado en el dispositivo (por ejemplo \wsdd). Adems, deben estar instaladas las bibliotecas de DB2 Everyplace y de Sync Client. b. Copie los archivos ISyncSample.class y db2sync_db2e.properties en el dispositivo (por ejemplo, \). c. Utilice uno de los dos mtodos siguientes para invocar al programa ISyncSample con isync4j.jar en CLASSPATH. Consola de Java Escriba el siguiente mandato: j9.exe -bp:\wsdd\classes.zip -cp:\wsdd;\Windows\isync4j.jar ISyncSample <property file>Por jemplo: j9.exe -bp:\wsdd\classes.zip -cp:\wsdd;\Windows\isync4j.jar ISyncSample db2sync_db2e.properties Nota: Si obtiene una excepcin UnsupportedEncodingException al ejecutar el ejemplo con J9, es posible que tambin tenga que incluir charconv.zip en la va de acceso de clase \ive\runtimes\common\ive\lib. Atajo de Windows Cree y edite un atajo de Windows denominado ISyncSample.lnk en la estacin de trabajo. Por ejemplo: 255#\wsdd\j9.exe -bp:\wsdd;\Windows\isync4j.jar;\wsdd\classes.zip ISyncSample db2sync_db2e.properties Entre el atajo en una sola lnea y encierre cada uno de los campos entre comillas dobles. El primer campo que escriba debe ser el nombre del ejecutable. Los archivos y directorios que especifique tienen que estar completamente calificados. d. Ejecute el programa de ejemplo y verifique que los datos sincronizados residen en el directorio destino tal y como se ha especificado en el archivo de propiedades.

Instalacin del proveedor de sincronizacin basado en JNI en dispositivos Symbian OS


Las implementaciones basadas en JNI se han probado en la JVM PersonalJava de Symbian. Para instalar el proveedor de sincronizacin basado en JNI en dispositivos Symbian OS: 1. Edite y compile el programa ISyncSample en su estacin de trabajo. a. Edite ISyncSample.java para que adopte db2sync_db2e.properties como parmetro. b. Compile ISyncSample.java con isync4j.jar en la va de acceso de clase escribiendo el mandato siguiente: javac -classpath isync4j.jar ISyncSample.java c. Edite db2sync_db2e.properties para especificar la contrasea, usuario y URL del servidor. 2. Ejecute el programa ISyncSample. a. Asegrese de que las bibliotecas de base de datos porttil DB2 Everyplace y de Sync Client estn instaladas en el dispositivo. b. Copie los archivos ISyncSample.class y db2sync_db2e.properties en un directorio del dispositivo. Como alternativa, puede crear un archivo
Desarrollo

39

ISyncSample.sis con la herramienta aifbuilder de Symbian. Especifique Java como lenguaje de aplicacin, escriba un nombre de aplicacin, un UID y el texto de lnea de mandatos ISyncSample. En el archivo de paquetes .pkg, incluya los archivos .app, .aif, .class y .properties y haga que se instale en C:\System\Apps\ISyncSample. (Para obtener ms informacin, consulte la documentacin de Symbian AIF Builder). c. Seleccione el archivo ISyncSample.class. Si ha creado e instalado ISyncSample.sis, inicie la aplicacin seleccionndola en el men de aplicaciones. d. Utilice el programa Redirect para transferir la salida del programa Java y luego visualizar dicha salida en la consola o grabarla en un archivo.

Instalacin del proveedor de sincronizacin basado en JNI en Windows


Para instalar el proveedor de sincronizacin basado en JNI de un sistema operativo Windows, deber compilar y ejecutar el programa ISyncSample. Las implementaciones basadas en JNI para dispositivos Windows se han comprobado en Sun MicroSystems Java VM y en IBM Java 2 Standard Edition Developer Kit . 1. Compile el programa ISyncSample. a. Cambie la variable del sistema PATH de forma que incluya los directorios siguientes: %DSYINSTDIR%\Clients\Win32\database\x86 %DSYINSTDIR%\Clients\Win32\sync b. Cambie la variable CLASSPATH de forma que incluya el archivo isync4j.jar: %DSYINSTDIR%\Clients\Win32\Sync\isync4j.jar Nota: Si obtiene una excepcin UnsupportedEncodingException al ejecutar el ejemplo con J9, es posible que tambin tenga que incluir charconv.zip en la va de acceso de clase \ive\runtimes\common\ive\lib. c. Compile los archivos de ejemplo incluidos en el directorio %DSYINSTDIR$\Clients\clientapisample\Java_API. Por ejemplo: javac ISyncSample.java 2. Edite el archivo db2sync_db2e.properties para especificar la contrasea, usuario y URL del servidor. 3. Ejecute el programa ISyncSample. a. Escriba el siguiente mandato: java.exe ISyncSample <archivo de propiedades>, donde <archivo de propiedades> es el archivo de propiedades para la base de datos del cliente. Por ejemplo: java.exe -classpath .; isync4j.jar ISyncSample db2sync_db2e.properties

JSP
Sistemas operativos con soporte de JSP
Descargue el soporte de JSP para DB2 Everyplace gratuitamente en http://www.ibm.com/software/data/db2/everyplace/support.html y extraiga el archivo zip en %DSYINSTDIR%. Se dispone de soporte de JSP para los sistemas operativos siguientes: v Windows NT y Windows 2000

40

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

v Windows CE para Pocket PC v Symbian OS Versin 6 Nota: Si es necesario, instale DB2 Everyplace Versin 8.1 Fixpak 4 para obtener los archivos de base de datos de Symbian OS Versin 6. (Las versiones posteriores de DB2 Everyplace ya no dan soporte a Symbian OS Versin 6).

Desarrollo de aplicaciones JSP de DB2 Everyplace


DB2 Everyplace da soporte a JavaServer Pages (JSP) para permitir crear fcilmente aplicaciones para DB2 Everyplace basadas en la Web. Las aplicaciones que se crean son independientes del sistema operativo y se pueden ejecutar en dispositivos porttiles en modalidad desconectada o mientras se est desconectado de una Red de rea local. La tecnologa JSP proporciona un mtodo rpido y simplificado para desarrollar y mantener pginas Web dinmicas. La tecnologa JSP separa la interfaz de usuario de la generacin de contenido, de forma que se pueden crear y actualizar diseos de pginas sin cambiar el contenido dinmico subyacente. JSP utiliza tecnologa JDBC. Las aplicaciones basadas en la Web que se crean utilizando JSP pueden acceder a bases de datos mviles DB2 Everyplace mediante el controlador JDBC de DB2 Everyplace. Consulte la documentacin adjunta que se encuentra en %DSYINSTDIR%\SDK\JSP\doc para obtener ms informacin cmo generar pginas JSP que accedan a DB2 Everyplace utilizando WebSphere. Pruebe la aplicacin JSP siguiendo los pasos de la seccin Ejecucin de una aplicacin JSP en una estacin de trabajo Windows en la pgina 48. Debera ejecutar siempre la aplicacin JSP en la estacin de trabajo antes de transferirla al dispositivo. Ejecutar la aplicacin JSP en la estacin de trabajo efecta el proceso previo necesario de algunos de los archivos de aplicacin.

Visin general del soporte de JSP en DB2 Everyplace


Puede descargar el soporte de JSP en http://www.ibm.com/software/data/db2/everyplace/support.html pulsando en el enlace DB2 Everyplace samples (Ejemplos de DB2 Everyplace). El soporte de JSP en DB2 Everyplace consta de dos componentes: v El mini servidor de Web HTTP v El procesador JSP El mini servidor de Web HTTP recibe peticiones de un navegador Web y devuelve respuestas al navegador Web (utilizando HTTP 1.1 como protocolo para las peticiones y respuestas). El procesador JSP analiza un archivo JSP, genera el cdigo fuente Java correspondiente y compila el cdigo fuente. El cdigo fuente Java puede incluir JavaBeans que generen contenido dinmico cuando se solicite la pgina de JSP. Cuando se solicita una pgina de JSP, el mini servidor de Web HTTP ejecuta el cdigo Java correspondiente y enva la salida al navegador Web como respuesta a la peticin. Cuando escriba un URL como por ejemplo http://localhost/request.jsp en un navegador Web (donde request.jsp es la pgina de JSP que est solicitando), el navegador Web enviar la peticin al mini servidor de Web HTTP. La peticin se transmitir al procesador JSP si se cumple una de las condiciones siguientes:

Desarrollo

41

v No existe ningn archivo .class correspondiente para la pgina de JSP correspondiente (por ejemplo, si la pgina de JSP es una pgina recin creada). v Existe un archivo .class correspondiente para la pgina de JSP correspondiente, pero la indicacin de la hora del archivo JSP es ms reciente que la del archivo .class (por ejemplo, si se ha modificado la pgina de JSP). Nota: Para request.jsp, el archivo .class correspondiente es _request_jsp_.class. Si se transmite la peticin al procesador JSP y la sintaxis del archivo JSP es vlida, el mini servidor de Web HTTP enva la salida al navegador Web, indicando que la pgina de JSP es vlida. Pulse el enlace request.jsp en la salida para ver la pgina JSP. Si se transmite la peticin al procesador JSP y la sintaxis del archivo JSP no es vlida, el mini servidor de Web HTTP enva informacin de diagnstico al navegador Web. Si no es necesario transmitir la peticin al procesador JSP, el mini servidor de Web HTTP ejecuta el archivo .class correspondiente para la pgina de JSP y enva la salida al navegador Web. El desarrollo de aplicaciones JSP se debe realizar en una estacin de trabajo Windows. Es importante comprobar las pginas de JSP durante todo el desarrollo. El procesador JSP captar los posibles errores de sintaxis de una pgina de JSP. Una vez arreglados los errores, compruebe de nuevo la pgina de JSP pulsando el botn Renovar del navegador Web. Es posible que necesite suprimir los archivos de la antememoria o de la carpeta de Archivos temporales de Internet del navegador Web antes de que se reflejen los cambios en la pgina JSP. Despus de completar la aplicacin, podr transferir la aplicacin a un dispositivo y ejecutarlo en el dispositivo. Nota: El procesador JSP se ejecuta en la estacin de trabajo y no es necesario en el dispositivo.

Configuracin de JSP para el desarrollo


Verificacin del soporte de JSP en una estacin de trabajo Windows: Verifique si el software siguiente est instalado en la estacin de trabajo Windows: v DB2 Everyplace JSP (Puede descargarlo gratuitamente en http://www.ibm.com/software/data/db2/everyplace/support.html) v Java 2 Standard Development Kit, Standard Edition Versin 1.1.8 si el destino es un dispositivo Symbian OS Versin 6 Versin 1.2.2 o posterior para otros destinos v Navegador Web Internet Explorer Versin 5.50 o posterior o Netscape Navigator Versin 6.2.1 o anterior Verifique el soporte de JSP ejecutando la aplicacin JSP de ejemplo Visiting Nurse. 1. Inicie el mini servidor de Web HTTP ejecutando runJspServer en el indicador de mandatos: 2. Abra un navegador Web en el siguiente URL: http://localhost/VisitingNurse/schedule.jsp. Alternativamente, puede entrar en el URL http://localhost/ y navegar a la pgina VisitingNurse/schedule.jsp.

42

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

3. Si ha configurado satisfactoriamente la estacin de trabajo para que utilice el soporte de JSP en DB2 Everyplace, en el navegador Web aparecer una tabla de Planificacin de Visiting Nurse. Instalacin y verificacin del soporte de JSP en un dispositivo Symbian OS 6: Verifique si el software siguiente est instalado en la estacin de trabajo: v JSP para DB2 Everyplace (Puede descargarlo gratuitamente en http://www.ibm.com/software/data/db2/everyplace/support.html pulsando en el enlace DB2 Everyplace samples (Ejemplos de DB2 Everyplace). Verifique si el software siguiente est instalado en el dispositivo: v Navegador Web v Entorno de ejecucin de Java (Java.sis) Java.sis puede bajarse de Internet. Es posible que haya dispositivos ms antiguos que proporcionen Java.sis en el CD-ROM del paquete de ventas para el dispositivo. Verifique que el directorio \system\libs del dispositivo contenga los archivos siguientes: v CryptoPlugin.dll v DB2e.dll v db2ejdbc.dll v ECSPKCS11.DLL Verifique que el directorio \system\java\ext del dispositivo contenga el archivo siguiente: v db2ejdbc.jar 1. Instale el archivo DB2eJSP en el dispositivo. 2. Verifique que el dispositivo est configurado para utilizar el soporte de JSP en DB2 Everyplace ejecutando la aplicacin JSP de ejemplo Visiting Nurse: a. Inicie el mini servidor de Web HTTP: 1) Vaya a la pantalla Extras del dispositivo. 2) Inicie la aplicacin DB2eJSP. b. Abra un navegador Web en el siguiente URL: http://localhost/VisitingNurse/schedule.jsp Alternativamente, puede entrar en el URL http://localhost/ y navegar a la pgina VisitingNurse/schedule.jsp. Si ha configurado satisfactoriamente el dispositivo para que utilice el soporte de JSP en DB2 Everyplace, en el navegador Web aparecer una tabla de Planificacin de Visiting Nurse. Configuracin del desarrollo de JSP en un dispositivo Windows CE: Requisitos previos DB2 Everyplace JSP (Puede descargarlo en http://www.ibm.com/software/data/db2/everyplace/support.html) Verifique que el directorio \Windows del dispositivo contenga los archivos siguientes:
Desarrollo

43

%DSYINSTDIR%\Clients\WinCE\database\ver\proc\CryptoPlugin.dll %DSYINSTDIR%\Clients\WinCE\database\ver\proc\DB2e.dll %DSYINSTDIR%\Clients\WinCE\database\ver\proc\DB2eJDBC.dll %DSYINSTDIR%\Clients\WinCE\database\jdbc\db2ejdbc.jar donde ver es el nmero de versin del sistema operativo Windows CE en el dispositivo y proc es el tipo de procesador. Verifique que haya un navegador Web instalado en el dispositivo: 1. Instale el entorno de ejecucin J9 en el dispositivo. 2. Instale y verifique el soporte de JSP en DB2 Everyplace en el dispositivo. Instalacin y verificacin del soporte de JSP en un dispositivo Windows CE: Esta tarea forma parte de la tarea principal de Configuracin del desarrollo de JSP en un dispositivo Windows CE. Despus de completar estos pasos, vuelva al apartado Configuracin del desarrollo de JSP en un dispositivo Windows CE en la pgina 43. 1. Instale el archivo DB2eJSP.cab en el dispositivo. 2. Verifique que el dispositivo est configurado para utilizar el soporte de JSP en DB2 Everyplace ejecutando la aplicacin JSP de ejemplo Visiting Nurse: a. Opcional en funcin del JVM: Modifique MiniHttpServer.lnk en el dispositivo. Tendr que modificar el atajo si est utilizando una JVM que no sea J9 JVM. El nmero con el que comienza el atajo es el nmero de caracteres que viene despus del carcter #. El nmero mximo de caracteres que viene despus del carcter # es 256. b. Inicie el mini servidor de Web HTTP: 1) Abra el Explorador de archivos. 2) Navegue al directorio root. 3) Pulse el atajo de MiniHttpServer. c. Abra un navegador Web en el siguiente URL: http://localhost/VisitingNurse/schedule.jsp. Alternativamente, puede entrar en el URL http://localhost/ y navegar a la pgina VisitingNurse/schedule.jsp. Si ha configurado satisfactoriamente el dispositivo para que utilice el soporte de JSP en DB2 Everyplace, en el navegador Web aparecer una tabla de Planificacin de Visiting Nurse. Vuelva a Configuracin del desarrollo de JSP en un dispositivo Windows CE en la pgina 43. Instalacin del entorno de ejecucin de una JVM J9 en un dispositivo Windows CE: Actualmente, slo los dispositivos StrongARM estn soportados en Pocket PC. Si el dispositivo tiene un tipo de procesador diferente, puede probar otra JVM que de soporte a JNI (por ejemplo, Sun PersonalJava, Insignia Jeode, NSIcom CrEme). Si utiliza una JVM distinta a J9 JVM, deber modificar MiniHttpServer.lnk en consecuencia. Esta instalacin de J9 le permite ejecutar las aplicaciones JSP de ejemplo. Es posible que tenga que instalar archivos J9 adicionales para sus propias aplicaciones.

44

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Esta tarea forma parte de la tarea principal de Configuracin del desarrollo de JSP en un dispositivo Windows CE. Despus de completar estos pasos, vuelva al apartado Configuracin del desarrollo de JSP en un dispositivo Windows CE en la pgina 43. 1. Instale WebSphere Studio Device Developer v5.5 (WSDD) en la estacin de trabajo. La versin de evaluacin de WSDD se puede bajar desde la direccin http://www.ibm.com/software/pervasive/products/wsdd/. En los pasos que hay a continuacin, <WSDD> hace referencia al directorio en el que instal WSDD. 2. En WSDD, utilice el Gestor de actualizacin para instalar WCE Tooling for WSDD. a. Pulse Help (Ayuda) Software Updates (Actualizaciones) Update Manager (Gestor de actualizaciones) para abrir la perspectiva Install/Update (Instalar/Actualizar). b. En la vista Features Updates (Actualizaciones de caractersticas), ample los nodos siguientes: Sites to Visit (Sitios a visitar) WebSphere Custom Environment (Entorno personalizado de WebSphere) WebSphere Custom Environment (Entorno personalizado de WebSphere). c. Pulse WCE Tooling for WSDD 5.5.0. d. En la vista Preview (Vista previa), pulse el botn Install (Instalar) y siga los pasos para la instalacin. e. Instale las caractersticas adicionales siguientes siguiendo pasos anlogos: v WCE jclMax Class Library v WCE Database Enabler Library v WCE Personal Configuration Class Library 3. Cree la estructura de directorios siguiente en el dispositivo: \wsdd\bin \wsdd\lib \wsdd\lib\jclMax 4. Copie los archivos siguientes en \wsdd\bin: <WSDD>\wsdd5.0\ive\runtimes\pocketpc\arm\ive\bin\j9.exe <WSDD>\wsdd5.0\ive\runtimes\pocketpc\arm\ive\bin\j9dyn20.dll <WSDD>\wsdd5.0\ive\runtimes\pocketpc\arm\ive\bin\j9int20.dll <WSDD>\wsdd5.0\ive\runtimes\pocketpc\arm\ive\bin\j9max20.dll <WSDD>\wsdd5.0\ive\runtimes\pocketpc\arm\ive\bin\j9prt20.dll <WSDD>\wsdd5.0\ive\runtimes\pocketpc\arm\ive\bin\j9thr20.dll <WSDD>\wsdd5.0\ive\runtimes\pocketpc\arm\ive\bin\j9vm20.dll <WSDD>\wsdd5.0\ive\runtimes\pocketpc\arm\ive\bin\j9zlib20.dll <WSDD>\wsdd5.0\ive\runtimes\pocketpc\arm\ive\bin\iverel20.dll <WSDD>\wsdd5.0\ive\runtimes\pocketpc\arm\ive\bin\swt-win322104.dll 5. Copie el archivo siguiente en \wsdd\lib: <WSDD>\wsdd5.0\ive\runtimes\common\ive\lib\charconv.zip 6. Copie los archivos siguientes en \wsdd\lib\jclMax: <WSDD>\wsdd5.0\ive\runtimes\common\ive\ lib\jclMax\classes.zip <WSDD>\wsdd5.0\ive\runtimes\common\ive\ lib\jclMax\database_enabler.jar <WSDD>\wsdd5.0\ive\runtimes\common\ive\ lib\jclMax\locale.zip
Desarrollo

45

<WSDD>\wsdd5.0\ive\runtimes\pocketpc\common\ive\ lib\jclMax\prsnlwin.jar Vuelva a Configuracin del desarrollo de JSP en un dispositivo Windows CE en la pgina 43.

Transferencia de una aplicacin JSP a un dispositivo Windows CE


Antes de transferir la aplicacin JSP a un dispositivo, lleve a cabo las tareas siguientes: v Instale el soporte de JSP en el dispositivo. v Desarrolle y pruebe la aplicacin en la estacin de trabajo. 1. Copie la base de datos que utiliza la aplicacin en el dispositivo, si todava no existe en el dispositivo. Asegrese de poner la base de datos en el directorio en el que se espera que est la aplicacin. Es decir, el directorio que especifica el URL al que se conecta la aplicacin. 2. Copie los archivos de la aplicacin al directorio especificado para la propiedad JspPath de MiniHttpConfig.properties para el dispositivo. Si la aplicacin est en un subdirectorio bajo JspPath en la estacin de trabajo, cree la misma estructura de subdirectorio bajo JspPath en el dispositivo. Utilice las reglas siguientes al copiar los archivos de aplicacin en el dispositivo:
Tabla 7. Archivo de la estacin de trabajo <page>.jsp <webapp>\web.xml Archivo que ha de copiarse en el dispositivo <page>_jsp_.class <webapp>\<webapp>_config_.class

Nota: v Los archivos .class a copiar en el dispositivo se generan por medio del procesador JSP al ejecutar la aplicacin en la estacin de trabajo. Se ubican en el mismo directorio que los archivos .jsp y web.xml correspondientes. v Es posible que la aplicacin no incluya un archivo web.xml. Las aplicaciones que genera WebSphere Studio Application Developer utilizan un archivo web.xml. v La longitud mxima de un atajo es de 256 caracteres detrs del carcter # al principio del archivo. Para no sobrepasar la longitud mxima, copie los siguientes archivos de ejemplo de WebSphere Studio Application Developer en el directorio root en vez del directorio de la aplicacin de ejemplo: dbbeans.jar cualquier archivo de clase ViewBean Para ejecutar las aplicaciones que genera WebSphere Studio que utilizan estos archivos, la va de acceso de clases de MiniHttpServer.lnk debe incluir dbbeans.jar, as como cualquier directorio que contenga archivos de la clase ViewBean. v Los archivos de aplicacin que no sean archivos .jsp o web.xml tambin deben copiarse en el dispositivo. Por ejemplo, para copiar la aplicacin JSP de ejemplo Visiting Nurse en el dispositivo:

46

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

a. Copie la base de datos de ejemplo Visiting Nurse en el dispositivo: 1) Cree la estructura de directorios siguiente en el dispositivo: \sample\data . Este es el directorio que especifica el URL al que se conecta la aplicacin. 2) Copie el contenido del directorio \sample\data de la estacin de trabajo de \sample\data en el dispositivo. b. Copie los archivos de aplicacin en el dispositivo: 1) Cree la estructura de directorios siguiente en el dispositivo: \sample\jsp . Este es el directorio que se especifica para JspPath en el archivo MiniHttpConfig.properties por omisin. 2) Cree el subdirectorio \VisitingNurse en \sample\jsp. 3) Copie los siguientes archivos en \sample\jsp\VisitingNurse: _schedule_jsp_.class, contact_jsp_.class, _medrecord_jsp_.class, _person_jsp_.class.

Ejecucin de una aplicacin JSP


Puede ejecutar una aplicacin JSP en una estacin de trabajo Windows o en un dispositivo Windows CE. Si desea obtener ms informacin, lea los temas siguientes. v Ejecucin de una aplicacin JSP en una estacin de trabajo Windows en la pgina 48 v Ejecucin de una aplicacin JSP en un dispositivo Windows CE en la pgina 49 v Opcional en funcin de la configuracin de su estacin de trabajo o aplicacin: Configuracin del mini servidor de Web HTTP Configuracin del mini servidor de Web HTTP: El archivo siguiente es el archivo MiniHttpConfig.properties por omisin para estaciones de trabajo Windows. Puede utilizar este archivo por omisin o modificarlo de forma que se ajuste a los requisitos de la aplicacin y del sistema. Tambin puede modificar el archivo MiniHttpConfig.properties por omisin para los dispositivos.
# Propiedades de mini servidor de Web HTTP - Win32 # JspPath # Especifica: va de acceso que contiene pginas JSP (archivos .jsp y .class). # Valor por omisin: JspPath=<directorio en el que se inici el mini servidor # de Web HTTP> # # Nota: se usa \\ para indicar el separador de directorios # JspPath=sample\\jsp # # # # # # # # # Port Especifica: el puerto en el que el servidor est a la escucha Valor por omisin: Port=80 Nota: Si no utiliza el puerto por omisin, inicie las peticiones de URL del modo siguiente: http://localhost:Puerto/ (en lugar de http://localhost/) donde Puerto es el puerto especificado.

# Mime #
Desarrollo

47

# Especifica: Tipos Mime # Valor por omisin: Mime=text/html wml htm html,text/plain txt,image/gif gif, # image/jpeg jpg # # Nota: Se pueden aadir tipos Mime adicionales utilizando el siguiente formato: # Mime=mime_type_A ext1 ext2 ext3 ...,mime_type_B ext4 ext5 ...,... # Mime=application/octet-stream exe class,image/jpeg jpeg jpg # LogFile # # Especifica: el archivo de anotaciones cronolgicas del servidor # Valores: # "" - las entradas del archivo de anotaciones cronolgicas se graban en # la consola # "no" - no se guardan entradas del archivo de anotaciones cronolgicas # "<nombre_arch_anot>" - las entradas del archivo de anotaciones # cronolgicas se graban en <nombre_arch_anot> # Valor por omisin: LogFile= # LogFile=JspServer.log # # # # # # # # Index Especifica: la pgina de ndice (se muestra si se solicita http://localhost) Valores: "" - se cargar el directorio JspPath "no" - no se cargar ninguna pgina "<archivo_ndice>" - se cargar <archivo_ndice> Valor por omisin: Index=

Ejecucin de una aplicacin JSP en un dispositivo Symbian OS 6: 1. Transfiera la aplicacin al dispositivo. 2. Si es necesario, configure el archivo MiniHttpConfig.properties para el dispositivo Symbian. 3. Inicie el mini servidor de Web HTTP: a. Vaya a la pantalla Extras del dispositivo. b. Inicie la aplicacin DB2eJSP. 4. Abra un navegador Web y entre el URL para iniciar la aplicacin JSP. Por ejemplo, si la pgina inicial de la aplicacin es start.jsp, escriba http://localhost/start.jsp. Si ha configurado la propiedad Port en el archivo MiniHttpConfig.properties, escriba http://localhost:<puerto>/start.jsp en su lugar, donde <puerto> es el nmero de puerto especificado. 5. Para detener el mini servidor de Web HTTP cuando acabe de ejecutar la aplicacin JSP, efecte un restablecimiento parcial (soft reset). Ejecucin de una aplicacin JSP en una estacin de trabajo Windows: 1. Si es necesario, configure el archivo MiniHttpConfig.properties . 2. Inicie el mini servidor de Web HTTP ejecutando runJspServer en el indicador de mandatos: 3. Abra un navegador Web y entre el URL para iniciar la aplicacin JSP. Por ejemplo, si la pgina inicial de la aplicacin es start.jsp, escriba http://localhost/start.jsp. En lugar de esto, si ha configurado la propiedad Port en el archivo MiniHttpConfig.properties, escriba http://localhost:<puerto>/start.jsp en su lugar, donde <puerto> es el nmero de puerto especificado. 4. Detenga el mini servidor de Web HTTP cuando acabe de ejecutar la aplicacin JSP:

48

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

a. Vaya a la ventana del indicador de mandatos en la que haya iniciado el servidor. b. Pulse Control+C y despus escriba y para finalizar el trabajo por lotes. Ejecucin de una aplicacin JSP en un dispositivo Windows CE: 1. Transfiera la aplicacin al dispositivo. 2. Si es necesario, modifique MiniHttpServer.lnk en el dispositivo. Tendr que modificar el atajo si est utilizando una JVM que no sea J9 JVM. El nmero con el que comienza el atajo es el nmero de caracteres que viene despus del carcter #. 3. Si es necesario, configure el archivo MiniHttpConfig.properties para el dispositivo Windows CE. 4. Inicie el mini servidor de Web HTTP: a. Abra el Explorador de archivos. b. Navegue al directorio root. c. Pulse el atajo de MiniHttpServer. 5. Abra un navegador Web y entre el URL para iniciar la aplicacin JSP. Por ejemplo, si la pgina inicial de la aplicacin es start.jsp, escriba http://localhost/start.jsp. Si ha configurado la propiedad Port en el archivo MiniHttpConfig.properties, escriba http://localhost:<puerto>/start.jsp en su lugar, donde <puerto> es el nmero de puerto especificado. 6. Para detener el mini servidor de Web HTTP cuando acabe de ejecutar la aplicacin JSP: a. Vaya a la ventana de consola J9. b. Pulse Archivo Cerrar.

Cdigos de personalizacin de IBM para acceder a bases de datos de aplicacin de JSP


Los cdigos siguientes son cdigos de personalizacin de IBM que se pueden utilizar en la aplicacin JSP para acceder a una base de datos porttil DB2 Everyplace. <tsx:dbconnect> Descripcin Este cdigo establece una conexin con una base de datos porttil DB2 Everyplace especificada utilizando el controlador JDBC de DB2 Everyplace. Sintaxis
<tsx:dbconnect id="id_conexin" driver="com.ibm.db2e.jdbc.DB2eDriver" url="jdbc:db2e:base_datos" userid="usuario_bd" passwd="contr_bd"> </tsx:dbconnect>

Atributos Los cinco atributos vlidos para este cdigo son: v id - Especifica el identificador de esta conexin. No reutilice este nombre en la pgina de JSP. Este atributo es obligatorio. v driver - Especifica el controlador JDBC de DB2 Everyplace. Este atributo es obligatorio.

Desarrollo

49

v url - Especifica el URL de la base de datos porttil DB2 Everyplace. El trmino database hace referencia a la va de acceso de la base de datos porttil DB2 Everyplace. Este atributo es obligatorio. v userid - Especifica un ID de usuario vlido para la base de datos porttil DB2 Everyplace a la que se debe acceder. Este atributo es opcional. v passwd - Especifica la contrasea de usuario para el atributo userid. Este atributo es obligatorio si se especifica userid. Ejemplo
<tsx:dbconnect id="conn" driver="com.ibm.db2e.jdbc.DB2eDriver" url="jdbc:db2e:sample/data/" > </tsx:dbconnect>

<tsx:dbquery> Descripcin Este cdigo enva una consulta a la base de datos porttil DB2 Everyplace utilizando la conexin especificada mediante el cdigo <tsx:dbconnect> y produce un objeto java.sql.ResultSet en el que el cursor apunta a la primera fila del conjunto de resultados. Puede hacer referencia a este conjunto de resultados utilizando el identificador de esta consulta y la interfaz JDBC de DB2 Everyplace para java.sql.ResultSet. Sintaxis
<tsx:dbquery id="id_consulta" connection="id_conexin" limit="valor"> sentencia_SQL_seleccionada </tsx:dbquery>

Atributos Los atributos para este cdigo son: v id - Especifica el identificador de esta consulta. No reutilice este identificador de consulta en la pgina de JSP. Este atributo es obligatorio. v connection - Especifica el identificador de un cdigo <tsx:dbconnect> en este archivo JSP. Este atributo es obligatorio. v limit - Especifica el nmero mximo de filas que la consulta puede devolver. Este atributo es opcional. Parmetro El parmetro vlido para este cdigo es: v sentencia_SQL_seleccionada - Especifica la sentencia de SQL que se desea someter a la base de datos porttil DB2 Everyplace. Esta sentencia de consulta de SQL puede contener datos dinmicos. Ejemplo
<tsx:dbquery id="Query1DBBean" connection="conn"> select <%= request.getParameter("column") %> from vnperson </tsx:dbquery>

<tsx:dbmodify> Descripcin Este cdigo enva un mandato para modificar datos de la base de datos porttil DB2 Everyplace utilizando la conexin especificada mediante el cdigo <tsx:dbconnect>. No existe resultado para este cdigo.

50

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Sintaxis

<tsx:dbmodify connection="id_conexin"> mandato_modificacin </tsx:dbmodify>

Atributo El atributo para este cdigo es: v connection - Especifica el identificador de un cdigo <tsx:dbconnect> en este archivo JSP. Este atributo es obligatorio. Parmetro El parmetro vlido para este cdigo es: v mandato_modificacin - Especifica el mandato de SQL que se desea someter a la base de datos porttil DB2 Everyplace para modificar datos. Este mandato de modificacin puede contener datos dinmicos. Ejemplo
<tsx:dbmodify connection="conn"> update vnperson set Name = <%=Name%> where ID = <%=id%> </tsx:dbmodify>

<tsx:repeat> Descripcin Utilice este cdigo para hacer un serpentear por cada una de las filas del resultado de la consulta. Los atributos start y stop controlan el proceso de serpenteo. Si no se especifican los atributos start y stop, el serpenteo termina cuando el cursor del conjunto de resultados, al que se hace referencia mediante el cdigo <tsx:getProperty>, llega al final del conjunto de resultados. Este cdigo se puede anidar. Sintaxis
<tsx:repeat index="nombre" start="ndice_inicio" stop="ndice_finalizacin"> bloque_repeticin </tsx:repeat>

Atributos Los atributos para este cdigo son: v index - Especifica el identificador para el ndice de este cdigo. Este atributo es opcional. v start - Especifica el nmero de filas que hay que saltarse antes de procesar el bloque de repeticin. El valor por omisin es 0. Este atributo es opcional. v stop - Especifica el valor del ndice final de este bloque de repeticin. El valor por omisin es 2,147,483,647. Este atributo es opcional. Parmetro El parmetro vlido para este cdigo es: v bloque_repeticin - Especifica el bloque de codificacin HTML que contiene la sintaxis del cdigo <tsx:getProperty> y los cdigos de HTML utilizados para dar formato al contenido. Si se coloca un cdigo <tsx:getProperty> en el bloque de repeticin, el avanza a la siguiente fila cada vez que se procesa el bloque de repeticin. Ejemplo
<TABLE border="1"> <TR> <TH>Name</TH> </TR> <tsx:repeat>
Desarrollo

51

<TR> <TD> <tsx:getProperty name="Query1DBBean" property="Name" /> </TD> </TR> </tsx:repeat> </TABLE>

<tsx:getProperty> Descripcin Este cdigo recupera el valor de un bean ResultSet que se visualizar en una pgina de JSP (es decir, en la pgina de resultado de HTML). Si se coloca este cdigo dentro de un cdigo de bloque <tsx:repeat>, el cursor del bean ResultSet avanza a la siguiente fila cada vez que se procesa el bloque de repeticin. Sintaxis
<tsx:getProperty name="nombre_bean" property="nombre_propiedad" />

Atributos Los atributos de este cdigo son: v name - Especifica el nombre del bean ResultSet que se ha declarado previamente mediante un cdigo <tsx:dbquery> en este archivo JSP. v property - Especifica la columna del bean ResultSet a la que se debe acceder. Ejemplo
<tsx:getProperty name="Query1DBBean" property="FIRSTNAME" />

Subconjuntos JSP Versin 1.1 soportados


En este apartado se listan y describen las instrucciones, los objetos implcitos, los elementos de escritura y las acciones estndar que se incluyen en el soporte de JSP de DB2 Everyplace. Instrucciones Instruccin de pgina Descripcin La instruccin de pgina define atributos dependientes de la pgina. Sintaxis
<%@ page lista_atrib_directiva_pg %> lista_atrib_directiva_pg ::= {language="lenguajeScript"} {extends="nombreClase" } {import="listaImport" } {contentType="infoCont" }

Atributos Los cuatro atributos vlidos para esta instruccin son: v language - Tiene que ser java si se especifica. v extends - Nombre de clase de lenguaje de programacin Java calificada al completo que da nombre a la superclase de la clase en la que se transforma esta pgina JSP. v import - La lista de importacin por omisin es com.ibm.db2e.jsp.server.*, java.io.*,java.sql.* y java.util.*.

52

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

v contentType - Puede ser cualquier valor (tal como text/html, text/xml, application/x-octet). Ejemplo
<%@ page contentType="text/html" %>

Instruccin de inclusin Descripcin Utilice la instruccin de inclusin para incluir datos en una pgina de JSP. El archivo incluido puede tener elementos que tambin se procesarn. Sintaxis
<%@ include file="relativeURLspec" %>

Atributos El atributo para esta instruccin es file, que tiene que ser una va de acceso relativa a una pgina. La va de acceso no puede empezar por / y se interpretar como relativa a la pgina de JSP actual. Ejemplo
<%@ include file="copyright.html" %>

Objetos implcitos Cuando se crean pginas de JSP, se tiene acceso a determinados objetos implcitos. Estos objetos se pueden utilizar dentro de scriptlets y expresiones, sin tenerlos que declarar antes. Cada objeto implcito tiene definida una clase en un paquete com.ibm.db2e.jsp.server de la tecnologa esencial de Java que se muestra en la Tabla 8.
Tabla 8. Objetos implcitos Variable implcita request Tipo com.ibm.db2e.jsp.server.MiniHttpRequest Representacin Peticin para la pgina de JSP. Resumen del mtodo String getParameter(String name) String getQueryString()

response in

com.ibm.db2e.jsp.server.MiniHttpResponse Respuesta a la peticin java.io.BufferedReader Este objeto no est disponible actualmente. Objeto que graba en el navegador Web. El DB2eJspConfig para esta pgina JSP. Excepcin emitida durante la ejecucin de la pgina de JSP. String getInitParameter(String name)

out config

java.io.PrintStream com.ibm.db2e.jsp.server.DB2eJspConfig

exception

java.lang.Throwable

Nota: Algunos de los tipos de objeto implcito anteriores difieren de los de JSP 1.1 debido a la implantacin del soporte de JSP en DB2 Everyplace. Elementos de escritura

Desarrollo

53

Declaraciones Descripcin Utilice declaraciones para declarar variables de Java y mtodos utilizados en una pgina de JSP. Las declaraciones son variables miembro (campos y mtodos) de la clase Java para la pgina de JSP. Sintaxis
<%!declaration(s) %> <%! String name = "Joe Smith"; public String getName() { return name; } %>

Ejemplo

Acciones estndar <jsp:useBean> Descripcin Una accin jsp:useBean asocia una instancia de un objeto de lenguaje de programacin Java definido en el mbito de pgina disponible con un determinado ID por medio de una variable de creacin de scripts recin declarada del mismo ID. Sintaxis
<jsp:useBean id="nombre" scope="page|request|session|application" EspecTipo/> EspecTipo ::= class="NombreClase"

Atributos Los tres atributos vlidos para este cdigo son: v id - Especifica el identificador de este bean. No reutilice este nombre en la pgina de JSP. Este atributo es obligatorio v scope - Este atributo se ignora en el caso de que se especifique. Se utiliza la pgina de rango por omisin. v class - Especifica la clase que representa este bean. Este atributo es obligatorio. Ejemplo <jsp:useBean id="masterViewDBBean" class="Query1HTMLResultsMasterViewBean" /> <jsp:setProperty> Descripcin La accin jsp:setPropertyestablece el valor de propiedades en un Bean. Sintaxis
<jsp:setProperty name="NombreBean" expr_prop /> expr_prop ::= property="NombrePropiedad" value="ValorPropiedad" propertyValue ::= string El valor ValorPropiedad tambin puede ser un valor de atributo request-time. ValorPropiedad ::= scriptlet_expr

Atributos Los tres atributos vlidos para este cdigo son:

54

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

v name - El nombre de una instancia de Bean definida por medio de un elemento <jsp:useBean> antes de que aparezca esta accin. La instancia de Bean debe contener la propiedad que se desea establecer. Este atributo es obligatorio. v property - El nombre de la propiedad de Bean cuyo valor desee establecer. Este atributo es obligatorio. v value - El valor que ha de asignarse a la propiedad concreta. Este atributo puede aceptar una expresin de atributo de tiempo de peticin como valor. Este atributo es obligatorio. Ejemplo
<jsp:setProperty name="masterViewDBBean" property="username" value=<%=config.getInitParameter("username")%> />

Scriptlets Descripcin Utilice scriptlets para contener fragmentos vlidos de cdigo Java. Estos fragmentos de cdigo se colocan en el cdigo fuente para la pgina JSP y estn relacionados con otros elementos de la pgina de JSP. Sintaxis
<% scriptlet %> <% try { String name = Query1DBBean.getString(1); out.println("Nombre = " + name); } catch (SQLException e) { } %>

Ejemplo

Expresiones Descripcin Las expresiones son representaciones de serie de tipos de datos. Puede utilizar expresiones en consultas y en comentarios de HTML. La aplicacin evala las expresiones durante la ejecucin y las convierte en series. Sintaxis
<%= expression %> <%= new java.util.Date() %>

Ejemplo

Nota: Los nombres de variable que empiezan por __db2ejsp__ son palabras clave y se utilizan internamente. No utilice estas variables en la pgina de JSP.

Resolucin de problemas de aplicaciones de JSP


Salida de consola del mini servidor de Web HTTP java.lang.NoClassDefFoundError: javax/sql/DataSource Si utiliza WebSphere Studio Application Developer, puede solucionar este error instalando la versin 4.0.3 o posteriores para obtener el archivo dbbeans.jar actualizado. No se puede determinar el valor de bsqueda para el nombre de tipo de columna <nombre>. Se supone que searchable = true.
Desarrollo

55

Si utiliza una versin de WebSphere Studio Application Developer anterior a la 4.0.3, este mensaje los genera dbbeans.jar y se puede pasar por alto. Navegador Web La pgina que est buscando no puede encontrarse. Si Pocket Internet Explorer muestra este mensaje cuando se intenta conectar a http://localhost/, significa que el dispositivo Windows CE es probablemente ms antiguo que Pocket PC v3.0.11171 y se debe obtener un arreglo para el navegador Web. (En Internet, busque el modo de conectarse a http://localhost por medio de Pocket Internet Explorer). Asegrese de que el mini servidor de web HTTP se est ejecutando. Los enlaces de las pginas JSP no funcionan. Si los enlaces implican JavaScript, verifique que el navegador Web soporte JavaScript y que JavaScript est habilitado. Desarrollo de aplicaciones Los cambios en la pgina JSP no se reflejan en el navegador Web Si se produce esto, es posible que tenga que suprimir los archivos de la antememoria o carpeta de Archivos temporales de Internet del navegador Web.

Aplicaciones JSP de ejemplo


Puede descargar el paquete de JSP en http://www.ibm.com/software/data/db2/everyplace/support.html pulsando en el enlace DB2 Everyplace samples (Ejemplos de DB2 Everyplace). Todas las aplicaciones JSP de ejemplo utilizan la base de datos de ejemplo Visiting Nurse. Las aplicaciones desarrolladas utilizando WebSphere Studio Professional/Entry Edition v4.0 Planificacin de Visiting Nurse Descripcin Este ejemplo consulta dinmicamente la base de datos Visiting Nurse y muestra los resultados en una tabla. Pgina de Inicio VNSchedule_ws40\scheduleHTMLResults.jsp Gua de aprendizaje ws40.pdf Las aplicaciones desarrolladas utilizando WebSphere Studio Application Developer v4.0 Planificacin de Visiting Nurse Descripcin Este ejemplo consulta dinmicamente la base de datos Visiting Nurse y muestra los resultados en una tabla. Esta aplicacin de ejemplo requiere JDBC 2.0 y no puede ejecutarse en Symbian OS Versin 6. Pgina de Inicio VNSchedule_wsad40\scheduleMasterView.jsp Otros archivos VNSchedule_wsad40\web.xml VNSchedule_wsad40\dbbeans.jar

56

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Gua de aprendizaje wsad40.pdf Las aplicaciones desarrolladas utilizando WebSphere Studio Application Developer v5.0 Planificacin de Visiting Nurse Descripcin Este ejemplo consulta dinmicamente la base de datos Visiting Nurse y muestra los resultados en una tabla. Pgina de Inicio VNSchedule_wsad50\scheduleMasterView.jsp Otros archivos VNSchedule_wsad50\web.xml VNSchedule_wsad50\dbbeans.jar VNSchedule_wsad50\scheduleMasterViewBean.class Gua de aprendizaje wsad50.pdf Las aplicaciones desarrolladas fuera de WebSphere Studio Visiting Nurse Descripcin Consulte el apartado Visin general de la aplicacin de ejemplo Visiting Nurse en la pgina 391 para obtener una descripcin de la aplicacin de ejemplo Visiting Nurse. Pgina de Inicio VisitingNurse\schedule.jsp Otros archivos VisitingNurse\contact.jsp VisitingNurse\medrecord.jsp VisitingNurse\person.jsp

Desarrollo de aplicaciones .NET


Este captulo describe las interfaces y los proveedores de DB2 Everyplace que se pueden utilizar para desarrollar aplicaciones .NET. Tambin ofrece cdigo de ejemplo.

Visin general del soporte de .NET para crear aplicaciones en la base de datos porttil DB2 Everyplace
DB2 Everyplace proporciona las herramientas necesarias para permitir que los desarrolladores creen aplicaciones que utilizan la API de ADO.NET para manipular los datos gestionados por medio de la base de datos porttil DB2 Everyplace. DB2 Everyplace contiene dos Proveedores de datos de .NET. Un proveedor se ejecuta en el .NET Framework 1.0 y el otro proveedor se ejecuta en .NET Compact Framework. Encontrar estos proveedores o API en: v Para Windows: %DSYINSTDIR%\Clients\Win32\database\nmp\IBM.Data.DB2.DB2e.dll v Para WinCE: %DSYINSTIDR%\Clients\WinCE\database\nmp\IBM.Data.DB2.DB2e.CF.dll

Desarrollo

57

Las especificaciones de API estn ubicadas en %DSYINSTDIR%\Clients\Win32\database\nmp\doc\readme.html Para simplificar la transicin para los programadores que hayan utilizado el proveedor de datos de Microsoft ODBC .NET en el pasado, las nuevas interfaces de DB2 Everyplace .NET Data Provider son casi idnticas a las del proveedor de datos de Microsoft ODBC .NET. Por ejemplo, el proveedor de datos de Microsoft ODBC .NET tiene la clase OdbcConnection, mientras que IBM DB2 Everyplace .NET Data Provider tiene DB2eConnection como clase de funcin equivalente. De modo anlogo, puede sustituir Odbc por DB2e en los dems nombres de clase para obtener las clases de DB2 Everyplace .NET Data Provider correspondientes.

Visin general del desarrollo de aplicaciones ADO.NET utilizando DB2 Everyplace .NET Data Provider
Tabla 9. Requisitos previos para utilizar DB2 Everyplace .NET Data Provider Componente Microsoft.NET Framework Requisito mnimo Microsoft.NET Framework 1.0 Debe instalarse antes de instalar DB2 Everyplace .NET Data Provider para el desarrollo de aplicaciones Microsoft Visual Studio.NET 2003 Microsoft.NET Compact Framework Microsoft Visual Studio.NET 2003 para el desarrollo de aplicaciones porttiles Microsoft .NET Compact Framework 1.0 para desarrollo de aplicaciones porttiles Debe instalarse en el dispositivo antes de instalar DB2 Everyplace .NET Data Provider para el desarrollo de aplicaciones Producto DB2 Everyplace v DB2e.dll de la versin 8.1.4 o posterior v AgentProxy.dll de la versin 8.1.4 o posterior que requiere la llamada al procedimiento almacenado remoto. v wbxmllib.dll de la versin 8.1.4 o posterior que requiere la llamada al procedimiento almacenado remoto. v DB2 Everyplace Sync Server Versin 8.1.4 o posterior se necesita para la llamada a procedimientos almacenados remotos. DB2e.dll, AgentProxy.dll y wbxmllib.dll son bibliotecas nativas y por tanto dependen del procesador; por tanto, el sistema operativo tiene que localizar estas bibliotecas nativas (estableciendo la variable de entorno PATH, por ejemplo) para que DB2 Everyplace .NET Data Provider funcione adecuadamente.

Los espacios de nombres para DB2 Everyplace .NET Data Provider son los siguientes: v Ejecucin en .NET Compact Framework: IBM.Data.DB2.DB2e.CF v Ejecucin en .NET Framework: IBM.Data.DB2.DB2e

58

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

DB2 Everyplace .NET Data Provider proporciona funciones para conectarse a una fuente de datos de DB2 Everyplace, la ejecucin de mandatos y la recuperacin de mandatos. Dichos resultados pueden procesarse directamente o ubicarse en un Archivo ADO.NET para proseguir el proceso mientras se est en estado de desconexin. Mientras estn en el Archivo, los datos pueden revelarse al usuario, combinados con otros datos procedentes de varias fuentes o pasarse de modo remoto entre niveles. Los procesos que se realicen en los datos mientras estn en el Archivo podrn reconciliarse posteriormente con la fuente de datos. El diseo de DB2 Everyplace .NET Data Provider es sencillo. Consta de una mnima capa entre DB2 Everyplace y el cdigo que ampla las funciones sin sacrificar el rendimiento. Las clases de DB2 Everyplace .NET Data Provider heredan o implantan miembros de otras interfaces o clases de .NET Framework. La documentacin de este proveedor incluye un resumen de los miembros soportados en cada una de estas clases. Para obtener una informacin ms detallada sobre un miembro heredado especfico, consulte el tema apropiado de Microsoft .NET Framework SDK. Limitaciones del proveedor v En DB2 Everyplace actualmente no se permite la actualizacin de columnas clave primarias. v La recuperacin del conjunto de resultados utilizando un procedimiento almacenado remoto tiene una limitacin sobre el tamao del conjunto de resultados. v No se da soporte a las llamadas de procedimiento almacenado locales. v Para los mtodos o propiedades que no estn soportadas, se emitir una System.NotSupportedException. Seguridad de hebra Los miembros pblicos no de instancia de este proveedor resultan seguros para las operaciones de varias hebras. No se garantiza que los miembros de instancia tengan seguridad de hebra. Hay cuatro objetos esenciales que constituyen DB2 Everyplace .NET Data Provider. La tabla siguiente describe estos objetos y su funcin.
Tabla 10. DB2 Everyplace .NET Data Provider, objetos esenciales Objeto DB2eConnection DB2eCommand DB2eDataAdapter DB2eDataReader Descripcin Establece una conexin para una fuente de datos de DB2 Everyplace y puede comenzar por Transaccin. Ejecuta un mandato en un servidor de DB2 Everyplace y revela Parmetros. Llena un Archivo y resuelve actualizaciones en la fuente de datos de DB2 Everyplace. Revela y lee una corriente de datos slo de avance desde una fuente de datos de DB2 Everyplace.

Junto con las clases de ncleo listadas en la tabla precedente, DB2 .NET Data Provider contiene asimismo las clases listadas en la tabla siguiente.

Desarrollo

59

Tabla 11. DB2 Everyplace .NET Data Provider, clases adicionales Objeto DB2eCommandBuilder Descripcin Objeto de ayuda que generar automticamente propiedades de mandato del DB2eDataAdapter o derivar informacin de parmetro de un procedimiento almacenado y poblar la coleccin de DB2eParameters de un objeto de DB2eCommand. Nota: La utilizacin del DB2eCommandBuilder no se recomienda ya que puede generar sentencias SQL muy ineficaces y, en algunos casos, no vlidas. Revela la informacin de un aviso o error devuelto por una fuente de datos de DB2 Everyplace. Se devuelve cuando se encuentra un error en la fuente de datos de DB2 Everyplace. Para los errores encontrados en el cliente, los proveedores de datos de .NET emiten una excepcin de .NET Framework. Define parmetros de valor de retorno, salida y entrada para mandatos y procedimientos almacenados. Le permite reclutar mandatos en las transacciones de la fuente de datos de DB2 Everyplace.

DB2eError DB2eException

DB2eParameter DB2eTransaction

1. Para utilizar DB2 Everyplace .NET Data Provider, deber aadir una sentencia de importacin o utilizacin para IBM.Data.DB2.DB2e o el espacio de nombres al archivo .DLL de la aplicacin, tal y como ilustra el cdigo siguiente: [Visual Basic] Imports IBM.Data.DB2.DB2e [C#] using IBM.Data.DB2.DB2e; 2. Tambin debe incluir una referencia al .DLL al compilar el cdigo. Por ejemplo, si se est compilando un programa Microsoft Visual C#, la lnea de mandatos debera incluir: csc /r:IBM.Data.DB2.DB2e.dll 3. Para .NET Compact Framework, el espacio de nombres es IBM.Data.DB2.DB2e.CF y la aplicacin tiene que hacer referencia al conjunto IBM.Data.DB2.DB2e.CF.dll. Ejemplo de C# string connString = @Database=C:\data1\; UID=user; PWD=userpwd; Para obtener informacin sobre el mejor modo de utilizar este espacio de nombre, consulte la documentacin sobre las siguientes clases de DB2 Everyplace .NET Data Provider: v DB2eDataAdapter v DB2eCommand v DB2eConnection v DB2eDataReader Para obtener ms informacin sobre cmo funciona DB2 Everyplace .NET Data Provider en .NET Framework, consulte IBM.Data.DB2.DB2e Hierarchy.

60

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 12. Clases Objeto DB2eCommand Descripcin Representa el procedimiento almacenado o la sentencia SQL que ha de ejecutarse frente a la fuente de datos. Esta clase no puede heredarse. Genera automticamente mandatos de una sola tabla utilizada para reconciliar los cambios efectuados en un Archivo con la fuente de datos asociada. Esta clase no puede heredarse. Representa una conexin abierta con una fuente de datos. Representa un conjunto de mandatos de datos y una conexin con una fuente de datos que se utilizan para rellenar el Archivo y actualizar la fuente de datos. Esta clase no puede heredarse. Proporciona un modo de leer una corriente de filas de datos slo de avance a partir de una fuente de datos. Esta clase no puede heredarse. Colecciona informacin relevante para un aviso o error devueltos por la fuente de datos. Esta clase no puede heredarse. La excepcin que se genera cuando la fuente de datos de DB2 Everyplace devuelve un aviso o error. Esta clase no puede heredarse. Representa un parmetro para DB2eCommand y, opcionalmente, su correlacin con una DataColumn. Esta clase no puede heredarse. Representa una transaccin de SQL que ha de efectuarse en una fuente de datos. Esta clase no puede heredarse.

DB2eCommandBuilder

DB2eConnection DB2eDataAdapter

DB2eDataReader

DB2eError

DB2eException

DB2eParameter

DB2eTransaction

Tabla 13. Delegados Delegado DB2eInfoMessageEventHandler DB2eRowUpdatedEventHandler DB2eRowUpdatingEventHandler Descripcin Representa el mtodo que manejar el suceso de InfoMessage de una DB2eConnection. Representa el mtodo que manejar el suceso de RowUpdated de un DB2eDataAdapter. Representa el mtodo que manejar el suceso de RowUpdating de un DB2eDataAdapter.

Tabla 14. Enumeraciones Enumeracin DB2eType Descripcin Especifica el tipo de datos de un campo, propiedad o DB2eParameter.

Tabla 15. Palabras clave de serie de conexin de DB2 Everyplace .NET Provider Palabra clave Database Descripcin Ubicacin de la base de datos. Por ejemplo: C:\data1\

Desarrollo

61

Tabla 15. Palabras clave de serie de conexin de DB2 Everyplace .NET Provider (continuacin) Palabra clave ENCODING Descripcin Especifica la codificacin de la base de datos. Por ejemplo, para conectarse a una base de datos basada en UTF-8, encoding = UTF-8 Valor booleano que especifica si los cambios de la base de datos se transfieren a un soporte de almacenamiento inmediatamente o si se pasan al sistema operativo. Valor entero positivo que representa el nmero de segundos que se debe esperar antes de retrotraer una transaccin cuando no se puede obtener un bloqueo. El valor por omisin es 20. Contrasea Obtiene o establece un valor booleano que indica si la base de datos permite que las conexiones compartan el acceso. El valor por omisin es false. ID de usuario

IO WRITETHROUGH

LOCK TIMEOUT

PWD SHARED DB ACCESS

UID

API para desarrollar aplicaciones de Sync Server


DB2 Everyplace Sync Client proporciona dos API, ISyncComponent e ISync.NET, que se pueden utilizar para crear aplicaciones gestionadas para DB2 Everyplace Sync Server. ISyncComponent es ms pequeo que ISync.NET, pero proporciona soporte de diseo visual para los desarrolladores que deseen utilizar esta funcin.
Tabla 16. Espacios de nombre y ubicacin de proveedor gestionados por ISync.NET Proveedores disponibles No Unicode para .NET Framework Unicode para .NET Framework .NET Compact Framework Espacios de nombres IBM.Data.Sync IBM.Data.Sync.DB2e IBM.Data.Sync IBM.Data.Sync.DB2e IBM.Data.Sync IBM.Data.Sync.DB2e.CF Sistemas operativos Ubicacin soportados Windows Windows Unicode Windows CE %DSYINSTDIR%\clients\win32\sync\ nmp\IBM.Data.Sync.DB2e.dll %DSYINSTDIR%\clients\win32\sync\ nmp\unicode\IBM.Data.Sync.DB2e.dll %DSYINSTDIR%\clients\wince\sync\ nmp\IBM.Data.Sync.DB2e.CF.dll

Aplicaciones ISync.NET de ejemplo DB2 Everyplace proporciona dos aplicaciones de ejemplo, DB2 Sync Console e ISyncSample, que demuestran las funciones de la API. Para conocer la ubicacin de estos ejemplos, consulte el apartado Visin general de las aplicaciones de ejemplo de DB2 Everyplace en la pgina 388. Especificacin de API de ISync.NET Las especificaciones de la API ISync.NET se encuentran en %DSYINSTDIR%\doc\lang\javadoc\ISyncNetAPI\.

62

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Uso de la API de ISync.NET


Requisitos de software v DB2 Everyplace Versin 8.1.4 o posterior v Microsoft .NET Standard Framework 1.0 (incluido con Visual Studio 2002) - se necesita para desarrollar aplicaciones en Windows v Microsoft .NET Compact Framework (incluido con Visual Studio 2003) - se necesita para desarrollar aplicaciones en WinCE Aunque el proveedor de ISync.NET es independiente de la plataforma y del idioma, seguir dependiendo de las bibliotecas de Sync Client nativas subyacentes. Tanto las bibliotecas de Sync Client como el proveedor deben incluirse en la va de acceso al usuario en tiempo de ejecucin de la aplicacin. Durante la instalacin de DB2 Everyplace deben actualizarse las vas de acceso de usuario. Las series en .NET se encuentran en Unicode. No obstante, el proveedor de sincronizacin de .NET ISync convierte las series especificadas en bytes segn el formato especificado por la aplicacin. El formato especificado por la aplicacin altera temporalmente la codificacin de caracteres por omisin del sistema operativo. Vea la propiedad isync.encoding de ISyncProvider.CreateSyncService para conocer las codificaciones que puede establecer. Puede encontrar la especificacin de API para ISync.NET en %DSYINSTDIR%\doc\<idioma\javadoc\ISyncNetAPI\ISync.NET.chm 1. En Microsoft Visual Studio .NET, cree un proyecto nuevo en el idioma de su eleccin. 2. En su aplicacin, importe los espacios de nombre de DB2 Everyplace. A continuacin se proporciona un ejemplo para la Estructura estndar:
[Visual Basic] Imports IBM.Data.Sync Imports IBM.Data.Sync.DB2e [C#] using IBM.Data.Sync; using IBM.Data.Sync.DB2e;

Para obtener ms informacin, puede ver la aplicacin de sincronizacin de ejemplo ubicada en %DSYINSTDIR%\Clients\clientapisample\NMP 3. Aada una referencia: a. En Visual Studio, pulse el botn derecho del ratn en el nombre de proyecto y seleccione Aadir referencia. b. En la pestaa Proyectos, navegue a la ubicacin de IBM.Data.Sync.DB2e.dll. c. En la lnea de mandatos, escriba: csc /t:exe /r:IBM.Data.Sync.DB2e.dll DB2SyncConsole.cs.

Uso de ISyncComponent
Al desarrollar una aplicacin Windows de Visual Studio, aada el componente IBM.Data.Sync.DB2e.dll de DB2 Everyplace a Toolbox. Nota: Las bibliotecas de Sync Client nativas deben estar previamente en la va de acceso de usuario para que este proceso se complete de modo satisfactorio.

Desarrollo

63

ISyncComponent proporciona un soporte de diseo mnimo en la Estructura estndar. Este soporte bsico le permite arrastrar y soltar en un formulario y modificar las propiedades ConnectionString (servidor, puerto y nombre de usuario) y TargetPath (directorio destino para los datos). Para la Estructura estndar, hay una opcin para utilizar una API ms simple utilizando IBM.Data.Sync.DB2e.ISyncComponent.
ISyncComponent comp1 = new ISyncComponent(); comp1.ConnectionString = SERVER=localhost;PORT=80;UID=username;PWD=password; comp1.TargetPath = data; comp1.Sync(); comp1.Close();

Aplicacin de ejemplo simple que utiliza la API de ISync.NET


Este tema incluye un ejemplo que proporciona una referencia rpida del modo de utilizar la API de ISync.NET.
// Propiedades de sincronizacin private Hashtable userProps = new Hashtable(); // Obtener una instancia de DB2eISyncProvider ISyncProvider provider = DB2eISyncProvider.GetInstance(); // Configurar propiedades userProps.Add("isync.user", "username"); userProps.Add("isync.password", "password"); // Obtener una instancia del servicio de sincronizacin del proveedor ISyncService service = provider.CreateSyncService(http://localhost:80, userProps); // Obtener una instancia del almacn de configuracin ISyncConfigStore config = service.GetConfigStore("data"); // Obtener una instancia del controlador de sincronizacin para realizar // la sincronizacin ISyncDriver syncer = config.GetSyncDriver(); // Realizar la sincronizacin syncer.Sync(); // Cerrar objetos syncer.Close(); config.Close(); service.Close();

Encontrar ejemplos de cdigo completos en %DSYINSTDIR%\Samples\clientapisample\NMP\.

Cdigo de ejemplo de aplicacin de DB2 Everyplace .NET Data Provider para WinCE y Windows
Hay dos aplicaciones de ejemplo que ilustran el modo de desarrollar aplicaciones para WinCE y Windows utilizando DB2 Everyplace .NET Data Provider: v DB2eSample1.cs v DB2eSample2.cs Los dos archivos se encuentran en el directorio %DSYINSTDIR%\Clients\Win32\database\nmp\samples o en el directorio %DSYINSTDIR%\Clients\wince\database\nmp\samples. A continuacin se proporciona un ejemplo de una de las aplicaciones de ejemplo:

64

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

using System; using System.Text; using System.Data; using IBM.Data.DB2.DB2e; /* * Sample1 * * El ejemplo siguiente crea una tabla, inserta varias filas en ella, obtiene * todas las filas de la tabla y, por ltimo, descarta la tabla. * */ namespace IBM.Data.DB2.DB2e.Samples { class DB2eSample1 { /// <resumen>

/// El principal punto de /// </resumen> [STAThread] static void Main(string[] { DB2eConnection conn DB2eCommand cmd DB2eDataReader reader String connString int rowsAffected try

entrada para la aplicacin. args) = null; = null; = null; = @"database=.\; uid=user1; pwd=user1"; = 0;

{ conn = new DB2eConnection(connString); conn.Open();

Console.WriteLine("creating table t1..."); cmd = new DB2eCommand("create table t1 (c1 int primary key not null, c2 smallint, c3 char(10), c4 varchar(10), c5 decimal(8,2), c6 date, c7 time, c8 timestamp )", conn); rowsAffected = cmd.ExecuteNonQuery(); Console.WriteLine("inserting a row into table t1..."); cmd.CommandText = "insert into t1 values (1, 10, John, Yip, null, current date, current time, current timestamp)"; rowsAffected = cmd.ExecuteNonQuery(); Console.WriteLine("inserting a row into table t1..."); cmd.CommandText = "insert into t1 values (2, 20, Mary, Jann, 2.2, current date, current time, current timestamp)"; rowsAffected = cmd.ExecuteNonQuery(); cmd.CommandText = "select * from t1"; Console.WriteLine("fetching resultset from table t1..."); reader = cmd.ExecuteReader(); while (reader.Read()) { if (!reader.IsDBNull(0)) Console.Write(reader.GetInt32(0) + "\t"); else Console.Write("NULL " + "\t"); if (!reader.IsDBNull(1)) Console.Write(reader.GetInt16(1) + "\t"); else Console.Write("NULL " + "\t"); if (!reader.IsDBNull(2)) Console.Write(reader.GetString(2) + "\t"); else Console.Write("NULL " + "\t");
Desarrollo

65

if (!reader.IsDBNull(3)) Console.Write(reader.GetString(3) + "\t"); else Console.Write("NULL " + "\t"); if (!reader.IsDBNull(4)) Console.Write(reader.GetDecimal(4) + "\t"); else Console.Write("NULL " + "\t"); if (!reader.IsDBNull(5)) Console.Write(reader.GetDate(5) + "\t"); else Console.Write("NULL " + "\t"); if (!reader.IsDBNull(6)) Console.Write(reader.GetTime(6) + "\t"); else Console.Write("NULL " + "\t"); if (!reader.IsDBNull(7)) Console.Write(reader.GetDateTime(7) + "\t"); else Console.Write("NULL " + "\t"); Console.WriteLine(); } reader.Close(); reader = null; Console.WriteLine("dropping table t1..."); cmd.CommandText = "drop table t1"; cmd.ExecuteNonQuery();

} }

catch (DB2eException e1) { int cnt = e1.Errors.Count; for (int i=0; i < cnt; i++) { Console.WriteLine("Error #" + i + "\n" + "Message: " + e1.Errors[i].Message + "\n" + "Native: " + e1.Errors[i].NativeError.ToString() + "\n" + "SQL: " + e1.Errors[i].SQLState + "\n"); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (reader != null) { reader.Close(); reader = null; } if (conn != null) { conn.Close(); conn = null; } } // final del Principal

// final de clase

} // final del espacio de nombre

Codificacin de caracteres en aplicaciones .NET


En los sistemas operativos Windows, una base de datos DB2 Everyplace puede estar en la codificacin UTF-8 o en la codificacin de pgina de cdigos local. Una aplicacin .NET Provider de DB2 Everyplace utiliza la serie de conexin para

66

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

solicitar una conexin a una base de datos basada en UTF-8. La palabra clave es encoding y el valor es UTF-8. Por ejemplo, una conexin con una base de datos basada en UTF-8 en c:\db\ sera database=C:\db1\;encoding=UTF-8.

Desarrollo mediante SQL y procedimientos almacenados


Este captulo proporciona informacin que le ayudar a desarrollar aplicaciones utilizando SQL y procedimientos almacenados. Tambin describe cmo utilizar el adaptador de consultas y procedimientos almacenados remotos.

Visin general de los marcadores de parmetros


Para las sentencias SQL que han de ejecutarse varias veces, a menudo resulta ventajoso preparar una vez la sentencia SQL y volver a utilizar el plan de consulta utilizando marcadores de parmetros para sustituir los valores de entrada durante el tiempo de ejecucin. En DB2 Everyplace, un marcador de parmetro se representa mediante un carcter ? e indica el lugar en el va a sustituirse una variable de aplicacin en una sentencia SQL. Se hace referencia a los marcadores de parmetros por un nmero y estn numerados secuencialmente de izquierda a derecha, comenzando en el 1. La aplicacin debe asociar un rea de almacenamiento variable a cada marcador de parmetro especificado en la sentencia de SQL antes de ejecutarse sta. Adems de eso, las variables asociadas deben ser un rea de almacenamiento vlida y deben contener valores de datos de entrada cuando se ejecuta la sentencia preparada en la base de datos. El ejemplo siguiente ilustra una sentencia SQL que contiene dos marcadores de parmetros. SELECT * FROM customers WHERE custid = ? AND lastname = ?

Ejemplos de utilizacin de marcadores de parmetros


DB2 Everyplace proporciona un rico conjunto de interfaces estndar incluyendo CLI/ODBC, JDBC y ADO.NET para acceder a los datos de modo eficaz. Los retazos de cdigo de ejemplo siguientes muestran la utilizacin de una sentencia preparada con marcadores de parmetros para cada API de acceso a los datos. Tome en consideracin el esquema de tabla siguiente para la tabla t1, en el que la columna c1 es la clave primaria para la tabla t1.
Tabla 17. Esquema de tabla de ejemplo Nombre de la columna c1 c2 c3 c4 c5 c6 c7 c8 c9 Tipos de datos de DB2 Everyplace INTEGER SMALLINT CHAR(20) VARCHAR(20) DECIMAL(8,2) DATE TIME TIMESTAMP BLOB(30) Anulable falso verdadero verdadero verdadero verdadero verdadero verdadero verdadero verdadero
Desarrollo

67

Los ejemplos siguientes ilustran el modo de insertar una fila en la tabla t1 utilizando una sentencia preparada. Ejemplo de CLI
void parameterExample1(void) { SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; SQLRETURN rc; TCHAR server[] = _T("C:\\mysample\\"); TCHAR uid[] = _T("db2e"); TCHAR pwd[] = _T("db2e"); long p1 = 10; short p2 = 100; TCHAR p3[100]; TCHAR p4[100]; TCHAR p5[100]; TCHAR p6[100]; TCHAR p7[100]; TCHAR p8[100]; char p9[100]; long len = 0; _tcscpy(p3, _tcscpy(p4, _tcscpy(p5, _tcscpy(p6, _tcscpy(p7, _tcscpy(p8, _T("data1")); _T("data2")); _T("10.12")); _T("2003-06-30")); _T("12:12:12")); _T("2003-06-30-17.54.27.710000"));

memset(p9, 0, sizeof(p9)); p9[0] = X; p9[1] = Y; p9[2] = Z; rc = SQLAllocEnv(&henv); // comprobar cdigo de retorno ... rc = SQLAllocConnect(henv, &hdbc); // comprobar cdigo de retorno ... rc = SQLConnect(hdbc, (SQLTCHAR*)server, SQL_NTS, (SQLTCHAR*)uid, SQL_NTS, (SQLTCHAR*)pwd, SQL_NTS); // comprobar cdigo de retorno ... rc = SQLAllocStmt(hdbc, &hstmt); // comprobar cdigo de retorno ... // preparar la sentencia rc = SQLPrepare(hstmt, _T("INSERT INTO t1 VALUES (?,?,?,?,?,?,?,?,?)"), SQL_NTS); // comprobar cdigo de retorno ... // asociar parmetros de entrada rc = SQLBindParameter(hstmt, (unsigned short)1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 4, 0, &p1, sizeof(p1), &len); // comprobar cdigo de retorno ... rc = SQLBindParameter(hstmt, (unsigned short)2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_SMALLINT, 2, 0, &p2, sizeof(p2), &len); // comprobar cdigo de retorno ... len = SQL_NTS; rc = SQLBindParameter(hstmt, (unsigned short)3, SQL_PARAM_INPUT, SQL_C_TCHAR,

68

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

SQL_CHAR, 0, 0, &p3[0], 100, &len); // comprobar cdigo de retorno ... rc = SQLBindParameter(hstmt, (unsigned short)4, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_VARCHAR, 0, 0, &p4[0], 100, &len); // comprobar cdigo de retorno ... rc = SQLBindParameter(hstmt, (unsigned short)5, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_DECIMAL, 8, 2, &p5[0], 100, &len); // comprobar cdigo de retorno ... rc = SQLBindParameter(hstmt, (unsigned short)6, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_TYPE_DATE, 0, 0, &p6[0], 100, &len); // comprobar cdigo de retorno ... rc = SQLBindParameter(hstmt, (unsigned short)7, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_TYPE_TIME, 0, 0, &p7[0], 100, &len); // comprobar cdigo de retorno ... rc = SQLBindParameter(hstmt, (unsigned short)8, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_TYPE_TIMESTAMP, 0, 0, &p8[0], 100, &len); // comprobar cdigo de retorno ... len = 3; rc = SQLBindParameter(hstmt, (unsigned short)9, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BINARY, 0, 0, &p9[0], 100, &len); // comprobar cdigo de retorno ... // ejecutar la sentencia preparada rc = SQLExecute(hstmt); // comprobar cdigo de retorno ... rc = SQLFreeStmt(hstmt, SQL_DROP); // comprobar cdigo de retorno ... rc = SQLDisconnect(hdbc); // comprobar cdigo de retorno ... rc = SQLFreeConnect(hdbc); // comprobar cdigo de retorno ... rc = SQLFreeEnv(henv); // comprobar cdigo de retorno ... }

Ejemplo de JDBC
public static void parameterExample1() { String driver = "com.ibm.db2e.jdbc.DB2eDriver"; String url = "jdbc:db2e:mysample"; Connection conn = null; PreparedStatement pstmt = null; try { Class.forName(driver); conn = DriverManager.getConnection(url); // preparar la sentencia pstmt = conn.prepareStatement("INSERT INTO t1 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); // asociar los parmetros de entrada pstmt.setInt(1, 1); pstmt.setShort(2, (short)2);
Desarrollo

69

pstmt.setString(3, "data1"); pstmt.setString(4, "data2"); pstmt.setBigDecimal(5, new java.math.BigDecimal("12.34")); pstmt.setDate(6, new java.sql.Date(System.currentTimeMillis() ) ); pstmt.setTime(7, new java.sql.Time(System.currentTimeMillis() ) ); pstmt.setTimestamp (8, new java.sql.Timestamp(System.currentTimeMillis() ) ); pstmt.setBytes(9, new byte[] { (byte)X, (byte)Y, (byte)Z } ); // ejecutar la sentencia pstmt.execute(); pstmt.close(); conn.close(); } catch (SQLException sqlEx) { while(sqlEx != null) { System.out.println("SQLERROR: \n" + sqlEx.getErrorCode() + ", SQLState: " + sqlEx.getSQLState() + ", Message: " + sqlEx.getMessage() + ", Vendor: " + sqlEx.getErrorCode() ); sqlEx = sqlEx.getNextException(); } } catch (Exception ex) { ex.printStackTrace(); }

Ejemplo de ADO.NET [C#]


public static void ParameterExample1() { DB2eConnection conn = null; DB2eCommand cmd = null; String connString = @"database=.\; uid=db2e; pwd=db2e"; int i = 1; try { conn = new DB2eConnection(connString); conn.Open(); cmd = new DB2eCommand("INSERT INTO t1 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", conn); // preparar el mandato cmd.Prepare(); // asociar los parmetros de entrada DB2eParameter p1 = new DB2eParameter("@p1", DB2eType.Integer); p1.Value = ++i; cmd.Parameters.Add(p1); DB2eParameter p2 = new DB2eParameter("@p2", DB2eType.SmallInt); p2.Value = 100; cmd.Parameters.Add(p2); DB2eParameter p3 = new DB2eParameter("@p3", DB2eType.Char); p3.Value = "data1"; cmd.Parameters.Add(p3);

70

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

DB2eParameter p4 = new DB2eParameter("@p4", DB2eType.VarChar); p4.Value = "data2"; cmd.Parameters.Add(p4); DB2eParameter p5 = new DB2eParameter("@p5", DB2eType.Decimal); p5.Value = 20.25; cmd.Parameters.Add(p5); DB2eParameter p6 = new DB2eParameter("@p6", DB2eType.Date); p6.Value = DateTime.Now; cmd.Parameters.Add(p6); DB2eParameter p7 = new DB2eParameter("@p7", DB2eType.Time); p7.Value = new TimeSpan(23, 23, 23); cmd.Parameters.Add(p7); DB2eParameter p8 = new DB2eParameter("@p8", DB2eType.Timestamp); p8.Value = DateTime.Now; cmd.Parameters.Add(p8); byte []barr = new byte[3]; barr[0] = (byte)X; barr[1] = (byte)Y; barr[2] = (byte)Z; DB2eParameter p9 = new DB2eParameter("@p9", DB2eType.Blob); p9.Value = barr; cmd.Parameters.Add(p9); // ejecutar el mandato preparado cmd.ExecuteNonQuery();

} catch (DB2eException e1) { for (int i=0; i < e1.Errors.Count; i++) { Console.WriteLine("Error #" + i + "\n" + "Message: " + e1.Errors[i].Message + "\n" + "Native: " + e1.Errors[i].NativeError.ToString() + "\n" + "SQL: " + e1.Errors[i].SQLState + "\n"); } } catch (Exception e2) { Console.WriteLine(e2.Message); } finally { if (conn != null && conn.State != ConnectionState.Closed) { conn.Close(); conn = null; } }

Marcadores de parmetros soportados por DB2 Everyplace


Un marcador de parmetro, que se representa mediante un smbolo de final de interrogacin (?), es un espacio reservado en una sentencia de SQL cuyo valor se obtiene durante la ejecucin de la sentencia. Una aplicacin utiliza la funcin SQLBindParameter() para asociar marcadores de parmetros de enlace con variables de aplicacin. Durante la ejecucin de las funciones de SQLExecute() y

Desarrollo

71

SQLExecDirect() DB2 CLI, los valores de estas variables sustituyen a cada uno de los marcadores de parmetros respectivos. Durante el proceso puede tener lugar una conversin de datos. DB2 Everyplace slo da soporte a los marcadores de parmetros no tipificados, que pueden utilizarse en determinadas posiciones de una sentencia de SQL. La Tabla 18 lista las restricciones sobre la utilizacin de los marcadores de parmetros.
Tabla 18. Restricciones sobre la utilizacin de los marcadores de parmetros Ubicacin de los marcadores de parmetros no tipificados Expresin: Solo en una lista de seleccin Tipo de datos Error

Expresin: Ambos operandos de un operador Error aritmtico Predicado: Operando de la parte izquierda de un predicado IN Error

Predicado: Ambos operandos de un operador Error relacional Funcin: Operando de una funcin de agregacin Error

Adaptador de consultas y procedimientos almacenados remotos


DB2 Everyplace incluye un adaptador de consultas y procedimientos almacenados remotos. Este adaptador permite a la aplicacin de DB2 Everyplace utilizar la arquitectura de Sync Server para llamar a un procedimiento almacenado ubicado en una fuente de datos remota. Los resultados del procedimiento almacenado se devuelven directamente a la aplicacin en el dispositivo. La llamada al procedimiento almacenado permite a una aplicacin de DB2 Everyplace acceder directamente a datos de un servidor remoto sin necesidad de sincronizacin. El adaptador de consultas y procedimientos almacenados remotos habilita algunas posibilidades exclusivas del motor de base de datos DB2 Everyplace como, por ejemplo, la capacidad de llamar de modo remoto a un procedimiento almacenado de DB2 UDB. Este tema detalla los requisitos y las tcnicas para utilizar el adaptador de consultas y procedimientos almacenados remotos en una aplicacin de DB2 Everyplace. Entre estos se encuentra: v Tipos de datos soportados para procedimientos almacenados v Restricciones para conjuntos de resultados en la pgina 77

Tipos de datos soportados para procedimientos almacenados


DB2 Everyplace soporta la llamada a procedimientos almacenados de un servidor DB2 remoto mediante la interfaz CLI o JDBC. La aplicacin cliente utiliza la sentencia CALL para ejecutar el procedimiento almacenado remoto. La sentencia CALL da nombre al procedimiento al que se debe llamar y especifica sus parmetros. Se soportan los siguientes tipos: INTEGER, SMALLINT, DECIMAL, CHAR, VARCHAR, DATE, TIME, TIMESTAMP y BLOB.

72

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Uso del adaptador de consultas y procedimientos almacenados remotos


El adaptador de consultas y procedimientos almacenados remotos soporta las plataformas cliente Windows 32 bits (no Unicode), Windows CE, Symbian y Palm OS. El adaptador de consultas y procedimientos almacenados remotos requiere que los procedimientos almacenados se registren en DB2. Restricciones Mltiples conexiones DB2 Everyplace soporta mltiples conexiones a bases de datos con algunas limitaciones. La conexin remota utiliza la base de datos local (la ltima conexin antes de la conexin remota) para almacenar los archivos temporales. Si no existe una conexin local, se utilizar el directorio actual. Descriptor de contexto de sentencia Asigne slo un descriptor de contexto de sentencia para la conexin remota. En Palm OS Es posible que el tamao de pila de la aplicacin se tenga que aumentar. En los sistemas operativos Windows de 32 bits En tiempo de ejecucin, los archivos DLL de IBM Sync Client se deben incluir en el directorio local o en la va de acceso del sistema. En un procedimiento almacenado de DB2 Universal Database Cuando se utiliza un gran objeto binario (BLOB) como parmetro de entrada o de salida, los cuatro primeros bytes de los datos del BLOB se reservan para indicar la longitud. El ejemplo siguiente muestra cmo crear un procedimiento almacenado, una suscripcin al procedimiento almacenado y una aplicacin de DB2 Everyplace para utilizar el procedimiento almacenado. Esta aplicacin de ejemplo permite al usuario de un dispositivo porttil comprobar el saldo de una cuenta y transferir dinero entre una cuenta de ahorros y una cuenta corriente utilizando una llamada a un procedimiento almacenado remoto de DB2 Everyplace. Para crear un procedimiento almacenado, una suscripcin al procedimiento almacenado y una aplicacin de DB2 Everyplace para utilizar el procedimiento almacenado utilizando la aplicacin de ejemplo, siga los pasos indicados en los apartados siguientes: 1. Creacin de un procedimiento almacenado utilizando la aplicacin de ejemplo 2. Prueba del adaptador de consultas y procedimientos almacenados remotos en la pgina 77 Creacin de un procedimiento almacenado utilizando la aplicacin de ejemplo: Este ejemplo utiliza un procedimiento almacenado denominado MYPROC(). Este procedimiento utiliza cinco parmetros: Account Name (Nombre de cuenta), Option (Opcin), Transfer Amount (Importe para la transferencia), Saving Balance (Saldo de la cuenta de ahorros) y Checking Balance (Saldo de la cuenta corriente). La siguiente lista identifica la finalidad de cada uno de los parmetros: 1. Account Name: Parmetro de entrada que identifica la cuenta. 2. Option: Parmetro de entrada que identifica la accin que se debe realizar. Hay tres opciones:
Desarrollo

73

1: Check balance (Comprobar el saldo). 2: Transfer from saving to checking (Transferir de cuenta de ahorros a cuenta corriente). 3: Transfer from checking to saving (Transferir de cuenta corriente a cuenta de ahorros). 3. Transfer Amount: Parmetro de entrada correspondiente al importe que se debe transferir entre la cuenta corriente y la cuenta de ahorros 4. Saving Balance: Parmetro de salida que devuelve el saldo de la cuenta de ahorros 5. Checking Balance: Parmetro de salida que devuelve el saldo de la cuenta corriente El cdigo siguiente crea el procedimiento almacenado:
SQL_API_RC SQL_API_FN myProc(char * szName, int * nCmd, int * nAmount, int * nSaving, int * nChecking) { SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; SQLRETURN rc; int nRetSize; SQLCHAR str1[]="select saving, checking from db2e.myaccount where name = ?"; SQLCHAR str2[]="update db2e.myaccount set saving=saving - ?, checking=checking + ? where name=?"; SQLCHAR str3[]="update db2e.myaccount set saving=saving + ?, checking=checking - ? where name=?"; //**************************************************************** //* Preparar conexin y sentencia //**************************************************************** rc = SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); //checkerror rc = SQLAllocHandle( SQL_HANDLE_DBC, henv, &hdbc); //checkerror rc = SQLSetConnectAttr(hdbc, SQL_ATTR_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF, SQL_NTS); //checkerror rc = SQLConnect(hdbc, NULL, SQL_NTS, NULL, SQL_NTS, NULL, SQL_NTS); //checkerror rc = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt); //checkerror //**************************************************************** //* Actualizar cuenta //**************************************************************** if ( *nCmd == 2 || *nCmd == 3 ){ if ( *nCmd == 2 ){ //Transferir de cuenta de ahorros a cuenta corriente rc = SQLPrepare(hstmt, str2, SQL_NTS); //checkerror } if ( *nCmd == 3 ){ //Transferir de cuenta corriente a cuenta de ahorros rc = SQLPrepare(hstmt, str3, SQL_NTS); //checkerror } rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, (SQLPOINTER)nAmount, 0, NULL ); //checkerror rc = SQLBindParameter(hstmt,

74

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, (SQLPOINTER)nAmount, 0, NULL ); //checkerror rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, (SQLPOINTER)szName, 0, NULL ); //checkerror rc = SQLExecute(hstmt); //checkerror } //**************************************************************** //* Recuperar saldo de la cuenta //**************************************************************** rc = SQLPrepare(hstmt, str1, SQL_NTS); //checkerror rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, (SQLPOINTER)szName, 0, NULL );//checkerror rc = SQLExecute(hstmt);//checkerror if ( rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO ) { while ( (rc = SQLFetch(hstmt) ) == SQL_SUCCESS ){ rc = SQLGetData( hstmt, (SQLSMALLINT)1, SQL_C_LONG, nSaving, sizeof(int) , &nRetSize ) ; //checkerror rc = SQLGetData( hstmt, (SQLSMALLINT)2, SQL_C_LONG, nChecking, sizeof(int) , &nRetSize ) ; //checkerror } } //**************************************************************** //* Limpiar //**************************************************************** rc = SQLEndTran( SQL_HANDLE_DBC, hdbc, SQL_COMMIT ); SQLFreeHandle(SQL_HANDLE_STMT, hstmt); SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return (0);

Desarrollo

75

En la plataforma Windows, despus de crear el procedimiento almacenado en forma de biblioteca de enlace dinmico (mydll.dll), cpielo en el directorio \SQLLIB\function. A continuacin, registre el procedimiento almacenado. 1. Abra una ventana de mandatos de DB2. 2. Conctese a la base de datos MYSAMPLE utilizando el mandato siguiente:
DB2 CONNECT TO MYSAMPLE

3. Registre el procedimiento almacenado utilizando un script denominado regscript.scr para configurar opciones. Para este script se utiliza el cdigo siguiente:
CREATE PROCEDURE db2e.MYPROC (IN szName CHAR(16), IN nCmd INTEGER, IN nAmount INTEGER, OUT nSaving INTEGER, OUT nChecking INTEGER ) DYNAMIC RESULT SETS 1 LANGUAGE C PARAMETER STYLE GENERAL NO DBINFO FENCED MODIFIES SQL DATA PROGRAM TYPE SUB EXTERNAL NAME mydll!myProc@

Para ejecutar el script, escriba el siguiente mandato: db2 -td@ -vf regscript.scr El procedimiento almacenado db2e.MYPROC ya est configurado: A continuacin, cree una suscripcin utilizando el Centro de administracin de dispositivos porttiles. Creacin de la suscripcin de Agent Adapter para la aplicacin de ejemplo: Despus de crear la suscripcin de Agent Adapter, cree un usuario, un grupo y un conjunto de suscripcin. 1. Abra el Centro de administracin de dispositivos porttiles desde el men Inicio. 2. Seleccione la carpeta Suscripciones del Centro de administracin de dispositivos porttiles. 3. Pulse con el botn derecho del ratn sobre en la carpeta Suscripciones del Centro de administracin de dispositivos porttiles y seleccione Crear suscripcin personalizada. 4. Especifique un nombre para la suscripcin en el campo Nombre. Escriba subex en el campo Nombre. 5. En el campo Adaptador, seleccione Agent Adapter. 6. En el campo Cifrado, seleccione Ninguno. Agent Adapter no da soporte al cifrado. 7. Pulse el botn Iniciar personalizador. Se abrir la ventana Base de datos fuente. 8. En el campo ID de usuario, escriba un ID de usuario de DB2 con privilegios de acceso a la base de datos. 9. Escriba la contrasea correspondiente al ID de usuario en los campos Contrasea y Verificar contrasea.

76

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

10. En el campo Otras, escriba la siguiente lnea: dbname=mysample;procname=db2e.MYPROC . dbname es la base de datos que el procedimiento almacenado utiliza. procname es el nombre del procedimiento almacenado. 11. Pulse Bien para cerrar la ventana Base de datos fuente. Pulse Bien para cerrar el cuaderno Crear suscripcin personalizada. Prueba del adaptador de consultas y procedimientos almacenados remotos: Este ejemplo utiliza una aplicacin de consola Windows para DB2 Everyplace para probar el adaptador de consultas y procedimientos almacenados remotos. La aplicacin de ejemplo se denomina myclient.exe. Utiliza los tres parmetros siguientes: 1. Account Name (Nombre de cuenta): Identifica la cuenta a la que se debe acceder. 2. Option (Opcin): Identifica la accin que se debe realizar. Las opciones son las siguientes: 1: Check balance (Comprobar el saldo). 2: Transfer from savings to checking (Transferir de cuenta de ahorros a cuenta corriente). 3: Transfer from checking to savings (Transferir de cuenta corriente a cuenta de ahorros). 3. Amount (Importe): Importe que se debe transferir entre la cuenta corriente y la de ahorros. Por ejemplo, para transferir 1000 dlares de la cuenta de ahorros a la cuenta corriente en la cuenta Michael, escriba el mandato siguiente: myclient.exe Michael 2 1000. Suponiendo que Michael tenga 5000 dlares en cada cuenta antes de la transferencia, se devolver la siguiente respuesta:
Saving = 4000 Checking = 6000

Restricciones para conjuntos de resultados: Los conjuntos de resultados resultan tiles para recuperar datos de un procedimiento almacenado. Si una aplicacin de cliente ejecuta un procedimiento almacenado que genera un conjunto de resultados, luego puede utilizar las funciones CLI o mtodos JDBC normales como SQLFetch() y SQLGetData() para recuperar los datos. DB2 Everyplace no soporta mltiples conjuntos de resultados.

Desarrollo de aplicaciones Visual Basic


Este captulo proporciona informacin que le ayudar a desarrollar aplicaciones utilizando Visual Basic.

Desarrollo de aplicaciones Visual Basic de DB2 Everyplace


Para desarrollar una aplicacin de DB2 Everyplace en Visual Basic, utilice la interfaz CLI/ODBC de DB2 Everyplace. Este tema proporciona una visin general de alto nivel de las tareas que debe completar para desarrollar aplicaciones de Visual Basic con DB2 Everyplace.

Desarrollo

77

Cuando desarrolle aplicaciones para DB2 Everyplace utilizando Visual Basic, tenga en cuenta las restricciones y los requisitos siguientes: v No utilice directamente la funcin SQLAllocHandleVer en el cdigo de su aplicacin. DB2 Everyplace utiliza SQLAllocHandleVer internamente. Si lo utiliza en su cdigo de aplicacin, puede provocar errores de programa. v La depuracin puede que no funcione debido a la forma en que Visual Basic carga y maneja las llamadas a funciones dentro de una DLL. v Las funciones Visual Basic que invocan funciones de DB2 Everyplace contenidas en db2e.dll deben tener la sentencia On Error Resume Next, de lo contrario el programa no funcionar debidamente. Los pasos bsicos para desarrollar una aplicacin Visual Basic de DB2 Everyplace son los siguientes: 1. Cree un nuevo proyecto Visual Basic. 2. Copie el archivo db2ecli.bas (del directorio de proyectos de DB2 Everyplace para Visual Basic) en la carpeta de proyectos e inserte el archivo en el proyecto Visual Basic. 3. Copie DB2e.dll en la carpeta de proyectos. Si no desea colocar DB2e.dll en la carpeta de proyectos, modifique la va de acceso de DB2e.dll en las declaraciones de funcin del archivo db2ecli.bas. 4. Escriba su propio cdigo de aplicacin. Puede utilizar como gua el programa de ejemplo de Visual Basic de DB2 Everyplace. 5. Cree el programa ejecutable de la aplicacin; para ello seleccione la opcin de men Archivo Crear proyecto.

Sistemas operativos que dan soporte a la interfaz de Visual Basic


La interfaz de Visual Basic est totalmente soportada en los sistemas operativos siguientes: v Windows CE para Pocket PC v Windows Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP y Windows 2003)

Visin general de la aplicacin Visual Basic de ejemplo


La aplicacin Visual Basic de ejemplo le muestra cmo acceder a los datos de DB2 Everyplace utilizando Visual Basic. Puede desarrollar aplicaciones que tengan iguales la lgica de aplicacin y la interfaz de usuario en sistemas operativos Pocket PC (WinCE) y Windows. Junto con DB2 Everyplace se proporcionan dos aplicaciones Visual Basic de ejemplo. Una es para el sistema operativo Pocket PC (WinCE) y la otra es para los sistemas operativos Windows. Ambas aplicaciones de ejemplo tienen el mismo cdigo e interfaz de usuario. El archivo db2evb.bas, que contiene la lgica de la aplicacin, es comn a ambos sistemas operativos. Consulte el apartado Ejemplo para Visual Basic: db2evb.bas en la pgina 79 para obtener ms detalles. Archivos incluidos en la aplicacin de ejemplo El directorio de proyectos Visual Basic, que contiene la aplicacin de ejemplo, se encuentra en el directorio donde se ha instalado DB2 Everyplace. Para Pocket PC (Windows CE), los archivos estn ubicados en %DSYINSTDIR%\clients\wince\database\visualbasic. Para los sistemas operativos

78

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Windows de 32 bits, los archivos se encuentran en %DSYINSTDIR%\clients\win32\database\visualbasic. La aplicacin Visual Basic de ejemplo incluye los archivos siguientes: db2ecli.bas El archivo db2ecli.bas es la interfaz de Visual Basic que conecta con la base de datos DB2 Everyplace. Este archivo tambin define diversas restricciones de DB2 Everyplace que se encuentran en sqlcli.h, sqlcli1.h, sqlext.h y sqlsystm.h. Este archivo slo contiene las restricciones de uso ms frecuente. Si es necesario, puede aadir otras restricciones contenidas en sqlcli.h, sqlcli1.h, sqlext.h y sqlsystm.h. DB2eForms (las extensiones varan segn el sistema operativo) Archivo de la interfaz de usuario de la aplicacin. DB2eSample.exe (para WinCE, DB2eSample.vb) Archivo ejecutable de la aplicacin. DB2eSample.vbp ( para WinCE, DB2eSample.ebp ) Archivo de proyecto de la aplicacin. DB2eSample.vbw Archivo de proyecto de la aplicacin. db2evb.bas El archivo db2evb.bas contiene la aplicacin Visual Basic de ejemplo. Puede utilizar la aplicacin de ejemplo como gua para escribir su propia aplicacin Visual Basic. Ejemplo para Visual Basic: db2evb.bas Los pasos principales utilizados en la aplicacin de ejemplo (db2evb.bas ) son: v Conexin a la base de datos porttil DB2 Everyplace. Paso 1: Asigne un descriptor de entorno. Paso 2: Asigne un descriptor de contexto de base de datos porttil DB2 Everyplace. Paso 3: Conctese a la base de datos porttil DB2 Everyplace. Paso 4: Asigne un descriptor de sentencia. v Acceso a datos de DB2 Everyplace. Paso 5: Cree una tabla. Paso 6: Inserte datos en la tabla. Paso 7: Recupere datos de la tabla. v Cierre de la aplicacin. Nota: Antes de salir, asegrese de que la aplicacin cierre la conexin con la base de datos porttil DB2 Everyplace. En el presente ejemplo se han aadido comentarios para describir los pasos de la aplicacin de ejemplo.
Option Explicit Public Public Public Public henv hdbc hstmt rc As As As As Long Long Long Integer Descriptor de entorno Descriptor de base de datos Descriptor de sentencia Cdigo de retorno

Desarrollo

79

Public dbpath As String Public userid As String Public pass As String

va del sistema de archivos donde DB2e crear tablas. ID de usuario: no utilizado por DB2 Everyplace. Contrasea: no utilizada por DB2 Everyplace

------------------------------------------------------------------------------- Funcin: DB2eTest Descripcin: Funcin que muestra cmo pueden hacerse llamadas a DB2 Everyplace. -------------------------------------------------------------------------------Public Function DB2eTest() As Integer Dim errmsg As String Dim numCols As Integer Dim i As Integer Dim retLen As Long Dim data As String Dim crtStmt As String Dim insStmt1 As String Dim insStmt2 As String Dim selStmt As String On Error Resume Next Importante: no me pregunten porqu, pero esta lnea es necesaria en cada funcin que llama a funciones de db2e.dll; de no incluirla, visual basic hace cosas misteriosas. dbpath = "" userid = "" pass = "" crtStmt = "CREATE TABLE x(a INT, b TIMESTAMP)" insStmt1 = "INSERT INTO x VALUES(1, CURRENT TIMESTAMP)" insStmt2 = "INSERT INTO x VALUES(2, CURRENT TIMESTAMP)" selStmt = "SELECT * FROM x" data = String(80, " ") Paso 1: asignar un descriptor de entorno. DB2eForm.DB2eText.Text = vbCrLf & vbCrLf & "Asignar descriptor de entorno" rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HENV, henv) If (rc <> 0) Then rc = DB2eError() rc = DB2eTerminate() Exit Function End If Paso 2: asignar un descriptor de base de datos DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & " Asignacin de un descriptor de base de datos" rc = SQLAllocHandle(SQL_HANDLE_DBC, henv, hdbc) If (rc <> 0) Then rc = DB2eError() rc = DB2eTerminate() Exit Function End If Paso 3: conectar con la base de datos DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & " Conexin con la base de datos"

80

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

rc = SQLConnect(hdbc, dbpath, SQL_NTS, userid, SQL_NTS, pass, SQL_NTS) If (rc <> 0) Then rc = DB2eError() rc = DB2eTerminate() Exit Function End If Paso 4: asignar un descriptor de sentencia. DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & " Asignacin de un descriptor de sentencia" rc = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, hstmt) If (rc <> 0) Then rc = DB2eError() rc = DB2eTerminate() Exit Function End If DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf Ahora puede utilizar llamadas de funcin CLI para ejecutar sentencias SQL. Paso 5: crear una tabla DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & " rc = SQLExecDirect(hstmt, crtStmt, SQL_NTS) If (rc <> 0) Then rc = DB2eError() rc = DB2eTerminate() Exit Function End If " & crtStmt

Cree de nuevo la misma tabla para forzar un mensaje de error y ver si DB2eError funciona. rc = SQLExecDirect(hstmt, "create table p(a int)", SQL_NTS) If (rc <> 0) Then testmsg = MsgBox("BLA1", 1, "DB2 Everyplace Visual Basic") rc = DB2eError() testmsg = MsgBox("BLA2", 1, "DB2 Everyplace Visual Basic") rc = DB2eTerminate() testmsg = MsgBox("BLA3", 1, "DB2 Everyplace Visual Basic") Exit Function End If Paso 6: insertar datos en la tabla. DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & " " & insStmt1 rc = SQLExecDirect(hstmt, insStmt1, SQL_NTS) If (rc <> 0) Then rc = DB2eError() rc = DB2eTerminate() Exit Function End If

Desarrollo

81

DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & " & insStmt2 rc = SQLExecDirect(hstmt, insStmt2, SQL_NTS) If (rc <> 0) Then rc = DB2eError() rc = DB2eTerminate() Exit Function End If DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf Paso 7: recuperar datos de la tabla. DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & " " & selStmt & vbCrLf rc = SQLExecDirect(hstmt, selStmt, SQL_NTS) If (rc <> 0) Then rc = DB2eError() rc = DB2eTerminate() Exit Function End If rc = SQLNumResultCols(hstmt, numCols) If (rc <> 0) Then rc = DB2eError() rc = DB2eTerminate() Exit Function End If

"

Do While (SQLFetch(hstmt) = SQL_SUCCESS) For i = 1 To numCols rc = SQLGetData(hstmt, i, SQL_C_CHAR, data, 80, retLen) DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & " " & data & vbCrLf If (rc <> 0) Then rc = DB2eError() rc = DB2eTerminate() Exit Function End If Next data = String(80, " ") DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf Loop Paso 8: cerrar conexin con la base de datos DB2e antes de que la aplicacin termine. rc = DB2eTerminate() DB2eTest = 0 End Function

Compilacin y prueba del programa Visual Basic de ejemplo


El directorio de proyectos Visual Basic, que contiene la aplicacin de ejemplo, se encuentra en el directorio donde se ha instalado DB2 Everyplace. Para Pocket PC (Windows CE), los archivos estn ubicados en \db2everyplace\clients\wince\database\visualbasic. Para los sistemas operativos

82

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Windows de 32 bits, los archivos se encuentran en \db2everyplace\clients\win32\database\visualbasic. 1. Abra el archivo de proyecto Visual Basic DB2eSample.vbp (para Windows CE, DB2eSample.ebp).). 2. Cree el programa de ejemplo. v Para Windows: Seleccione Archivo DB2eSample.exe. Se crear DB2eSample.exe. v Para Windows CE: Seleccione Archivo DB2eSample.vb. Se crear DB2eSample.vb. 3. Copie los archivos siguientes: v Para Windows: Copie DB2e.dll (para el sistema operativo Windows) en el directorio actual del proyecto o en la va de acceso de DB2e.dll en la variable de entorno PATH. v Para Windows CE: Copie DB2eSample.vb, DB2e.dll (para el sistema operativo Pocket PC) y Visual Basic Runtime en el directorio de su eleccin. 4. Ejecute DB2Sample.exe para Windows o DB2Sample.vb para WinCE.

Temas avanzados Visin general de las tablas de las bases de datos porttiles DB2 Everyplace
Una base de datos porttil DB2 Everyplace consta de varias tablas de catlogos del sistema y diversas tablas definidas por el usuario. Cada una de las tablas se almacena en dos archivos: uno para los datos propiamente dichos y otro para los ndices. Todos los ndices se conservan en el mismo archivo de ndices. A diferencia de DB2 Universal Database, las bases de datos porttiles DB2 Everyplace no tienen nombre y no se pueden catalogar ni descatalogar. Por lo tanto, el nombre de la base de datos se pasa por alto. Una base de datos porttil DB2 Everyplace no es ms que un conjunto de archivos que se pueden copiar o mover a otra ubicacin. Una base de datos porttil DB2 Everyplace debe contener las siguientes tablas de catlogos del sistema: v DB2eSYSTABLES v DB2eSYSCOLUMNS v DB2eSYSRELS v DB2eSYSUSERS (esta tabla se crea si se utiliza cifrado local de los datos) Las tablas de catlogos del sistema contienen metadatos sobre tablas definidas por el usuario. Por ejemplo, si elimina archivos de una tabla definida por el usuario sin suprimir la entrada correspondiente en las tablas de catlogos, ocasionar una incoherencia. Para acceder a las tablas de catlogos de una consulta, deber utilizar los identificadores delimitados. Por ejemplo, la consulta siguiente devolver el valor 1 si existe la tabla T: SELECT 1 FROM "DB2eSYSTABLES" WHERE TNAME = T

Desarrollo

83

Manejo de conflictos de denominacin


En este tema se muestran algunos ejemplos de las maneras en que se pueden manejar los conflictos de denominacin de archivos para las tablas definidas por el usuario. Suponga que una aplicacin ejecuta la sentencia CREATE TABLE siguiente:
CREATE TABLE T (PK INT NOT NULL PRIMARY KEY, A INT)

Una vez ejecutada esta sentencia, DB2 Everyplace crear los dos archivos siguientes para la tabla T: v DSY_T (datos) v DSY_iT (ndices) Si crea otra tabla y utiliza el nombre iT, DB2 Everyplace crear dos archivos adicionales: DSY_iT (datos) y DSY_iiT (ndices). El archivo de ndices de la tabla T y el archivo de datos de la tabla iT tienen un conflicto porque tienen el mismo nombre. Ambos archivos se denominan DSY_iT. Para evitar este problema, DB2 Everyplace da soporte a la correlacin de nombres de archivo. Es decir, que DB2 Everyplace crear y gestionar por completo los nombres de archivo. Para utilizar esta caractersticas, las aplicaciones deben establecer el atributo de conexin y ste se tiene que ejecutar antes de que se cree la primera tabla. Por ejemplo, en la CLI:
SQLSetConnectAttr(hdbc, SQL_ATTR_FILENAME_FORMAT, (SQLPOINTER)SQL_FILENAME_FORMAT_83, 0)

O en el Procesador de lnea de mandatos:


DISABLE LONG FILENAME

Una vez ejecutado este mandato y creada la primera tabla, los archivos resultantes sern para la tabla T: v 0001.DBd v 0001.DBi

Serializacin de conexiones
Una fuente de datos DB2 Everyplace acepta varias conexiones de un proceso a la vez. Cuando ms de un proceso intenta conectarse a la misma fuente de datos al mismo tiempo, las peticiones se ponen en una cola mediante un mecanismo denominado serializacin de conexiones. Para la serializacin de conexiones, es necesario que los desarrolladores decidan cunto tiempo debe esperar una aplicacin a obtener una conexin. Este intervalo, denominado perodo de tiempo de espera, se puede establecer utilizando el atributo SQL_ATTR_LOGIN_TIMEOUT de la funcin SQLSetConnectAttr(). Los siguientes ejemplos de CLI y JDBC establecen 10 como valor del perodo de tiempo de espera de conexin. Si la aplicacin no puede conectarse a la base de datos en 10 segundos, devolver un cdigo de error. El perodo de tiempo de espera Para la CLI:
int i = 10; // tiempo de espera de 10 segundos rc = SQLSetConnectAttr(hdbc, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER) i, 0);

Para JDBC:

84

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

int waitTime = 10; String url = "jdbc:db2e:mysample"; Properties prop = new Properties(); prop.setProperty("LOGIN_TIMEOUT", Integer.toString(waitTime)); Connection con = driver.connect(url,prop);

Nota: v El tiempo de espera por omisin es de 0 segundos. v El perodo por omisin de LOCK_TIMEOUT es de 20 segundos. v Una aplicacin de varias hebras puede conectarse a una base de datos utilizando una hebra y desconectarse de la base de datos utilizando otra hebra. v Es posible que la serializacin de conexiones no funcione con una base de datos que se encuentre en una unidad de red. v En un programa JDBC, el valor del tiempo de espera se ignorar y se establecer en cero si se pasa en una propiedad al mtodo DriverManager.getConnection(). v DB2 Everyplace permite el acceso simultneo a bases de datos dentro del mismo proceso (o espacio de direcciones). Por ejemplo, el mtodo connect de la interfaz java.sql.Driver soporta ENABLE_SHARED_DATABASE_ACCESS, una propiedad booleana que se puede establecer en true para permitir el acceso simultneo. DB2 Everyplace soporta propiedades y mtodos similares para otros lenguajes, como SHARED_DB_ACCESS para las aplicaciones ADO .NET y SQL_DB_SHARED para las aplicaciones CLI.

Comportamiento del cursor en el contexto de una conexin


Cursor de lectura general en conflictos de grabacin procedentes de otro descriptor de sentencia Una aplicacin puede tener varios descriptores de sentencia que efecten operaciones de lectura y grabacin en la misma tabla al mismo tiempo. Los conflictos se producen cuando un descriptor est efectuando una operacin de grabacin en la tabla (por ejemplo, UPDATE, DELETE o INSERT) al tiempo que otro descriptor est en medio de una operacin de lectura o grabacin. En DB2 Everyplace, el cursor de lectura es estable y est siempre leyendo los datos ms actuales. Sobrevive a los conflictos de grabacin, sin tener en cuenta si est utilizando o no un ndice. Por ejemplo, supongamos que una aplicacin tiene dos descriptores de sentencia: v El descriptor 1 busca filas de la tabla T v El descriptor 2 suprime filas de la misma tabla Es posible que cada descriptor se haya creado por medio de hebras diferentes (por ejemplo, en un entorno de hebra de Java). A continuacin se muestra un escenario posible:
// Buscar 2 filas en la tabla T Statement handle 1: execute "SELECT A FROM T WHERE primary_key < 10" Statement handle 1: fetch one row; fetch another row // Suprimir algunas filas de la tabla T Statement handle 2: prepare "DELETE FROM T WHERE primary_key = ?" Statement handle 2: execute // Seguir buscando una fila ms en T Statement handle 1: fetch one row

Desarrollo

85

En este punto de la ejecucin, el descriptor de sentencia nmero 1 puede seguir buscando la fila siguiente (si existe), sin tener en cuenta si se utiliza o no un ndice. En el escenario anterior, se utiliza un ndice debido a que hay una clave primaria. La idea es que DB2 Everyplace intentar volver a situar la posicin del cursor del descriptor nmero 1, utilizando su posicin actual, antes de avanzar. Si la posicin actual ya no existe (por ejemplo, otro descriptor de sentencia suprimi la fila), el cursor simplemente avanza hacia la posicin siguiente efectuando una bsqueda. Del mismo modo, si otro descriptor de sentencia ha suprimido la posicin siguiente, el cursor podr saltar sobre el espacio hacia la posicin siguiente. Cursor desplazable en conflictos de grabacin procedentes de otro descriptor de sentencia Piense en un ejemplo parecido al del apartado anterior, pero en el que el cursor de lectura es un cursor desplazable. Si es un cursor desplazable insensible, esto no ser un problema debido a que por definicin el conjunto de resultados no cambia. Si el cursor no es insensible, su comportamiento coincidir con el cursor de lectura regular descrito anteriormente. En esencia, el comportamiento del cursor de lectura despus del conflicto es que el conjunto de resultados vuelva a calcularse con arreglo a los datos de tabla ms actuales y que se mantenga el comienzo del conjunto de filas actual. El cursor se avanza hacia la fila siguiente en el caso de que se suprima la fila actual. El ejemplo siguiente ilustra el caso con un cursor desplazable utilizando CLP. Suponga que la tabla T tiene seis filas:
create table T (a int, b int) create index idx1 on T(a) insert into T values (1, 1) insert into T values (2, 2) insert into T values (3, 1) insert into T values (3, 2) insert into T values (3, 3) insert into T values (4, 4)

Abusando de su generosidad, piense en un ejemplo en el que la aplicacin tuviera dos descriptores de sentencia, uno para la lectura y el otro para la supresin.
Statement handle 1: enable scrollable cursor; Statement handle 1: execute "SELECT A FROM T WHERE a < 10" Statement handle 2: prepare "DELETE FROM T WHERE a = ?" Statement handle 1: fetchscroll with SQL_FETCH_FIRST -- get (1, 1) Statement handle 1: fetchscroll with SQL_FETCH_NEXT -- get (2, 2) Statement handle 1: fetchscroll with SQL_FETCH_NEXT -- get (3, 1) Statement handle 2: execute --- suppose delete row (2, 2) Statement handle 1: fetchscroll with SQL_FETCH_NEXT -- re-compute previous rows, and return (3, 2) Statement handle 1: fetchscroll with SQL_FETCH_PRIOR -- get (3, 1) Statement handle 1: fetchscroll with SQL_FETCH_PRIOR -- get (1, 1) note that (2, 2) is gone Statement handle 1: fetchscroll with SQL_FETCH_ABSOLUTE, offset 2 -- get (3, 1) note that (2, 2) is gone Statement handle 1: fetchscroll with SQL_FETCH_ABSOLUTE, offset 5 -- get (4, 4)

86

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Cursor en confirmacin y retrotraccin, incluida la modalidad de confirmacin automtica Sin tener en cuenta la modalidad de transaccin o confirmacin automtica, un cursor abierto permanece abierto en la confirmacin y un cursor abierto se cierra en la retrotraccin. Dependencia del objeto Preparar una sentencia SQL por medio de un descriptor de sentencia H puede que produzca cierta dependencia de determinados objetos. Por ejemplo, seleccionar filas de una tabla T por medio de un Idx de ndice requiere la existencia de la tabla T y del Idx de ndice. Si otro descriptor de sentencia ha suprimido estos objetos (por ejemplo, si se ha descartado el Idx de ndice), volver a ejecutar la sentencia por medio de H forzar una recompilacin de la sentencia SQL. Como consecuencia, puede que el plan de consulta sea diferente o que se devuelva un error.

Tablas base del catlogo del sistema de DB2 Everyplace


El gestor de la base de datos crea y mantiene un conjunto de tablas base del catlogo del sistema. Este apndice contiene una descripcin de cada tabla base del catlogo del sistema, incluyendo nombres de columnas y tipos de datos. Todas las tablas base del catlogo del sistema las crea el gestor de la base de datos. Las tablas base del catlogo no se pueden crear ni eliminar explcitamente. Las tablas base del catlogo del sistema se actualizan durante el funcionamiento normal en respuesta a las sentencias SQL de definicin de datos, rutinas de entorno y ciertos programas de utilidad. Los datos en las tablas base del catlogo del sistema estn disponibles mediante programas de utilidad de bsqueda SQL normales. Las tablas base del catlogo del sistema no se pueden modificar utilizando mandatos de manipulacin de datos de SQL normales. Para poder acceder a las tablas de catlogo del sistema es necesario utilizar un identificar delimitado.
Tabla 19. Tablas base del catlogo del sistema Descripcin tablas columnas restricciones referenciales usuarios Tabla base del catlogo DB2eSYSTABLES DB2eSYSCOLUMNS en la pgina 88 DB2eSYSRELS en la pgina 88 DB2eSYSUSERS en la pgina 88

DB2eSYSTABLES La tabla base del catlogo del sistema contiene una fila para cada tabla que se cree. Todas las tablas de catlogo tienen entradas en el catlogo DB2eSYSTABLES.
Tabla 20. DB2eSYSTABLES tabla base del catlogo del sistema Nombre de la columna Tipo de datos TNAME NUMCOLS FLAGS NUMKEY CHK VARCHAR (19) INTEGER (4) INTEGER (4) INTEGER (4) BLOB (512) S Anulable Descripcin Nombre de tabla Nmero de columnas (Slo uso interno) Nmero de columnas en la clave primaria restriccin de comprobacin (slo uso interno)
Desarrollo

87

Tabla 20. DB2eSYSTABLES tabla base del catlogo del sistema (continuacin) Nombre de la columna Tipo de datos IDXINFO NUMREFS F_ID PD BLOB (700) INTEGER (4) INTEGER (4) BLOB (4096) Anulable S S S S Descripcin ndice (slo uso interno) Clave primaria y fornea (slo uso interno) (Slo uso interno) (Slo uso interno)

DB2eSYSCOLUMNS La tabla base del catlogo del sistema contiene una fila para cada columna que se defina para una tabla.
Tabla 21. DB2eSYSCOLUMNS tabla base del catlogo del sistema Nombre de la columna CNAME TNAME TYPE ATTR LENGTH POS FLAGS KEYSEQ SCALE DEF Tipo de datos VARCHAR (19) VARCHAR (19) INTEGER (4) INTEGER (4) INTEGER (4) INTEGER (4) INTEGER (4) INTEGER (4) INTEGER (4) VARCHAR (128) S Anulable Descripcin Nombre de la columna Nombre de tabla Tipo de datos (Slo uso interno) Longitud de la columna Nmero de columna (Slo uso interno) Posicin ordinal de la columna en la clave primaria Escala para columna decimal Valor por omisin (uso interno)

DB2eSYSRELS La tabla base del catlogo del sistema contiene una fila para cada restriccin referencial.
Tabla 22. DB2eSYSRELS tabla base del catlogo del sistema Nombre de la columna RMD_ID PKTABLE_NAME PKCOLUMN_NAME FKTABLE_NAME FKCOLUMN_NAME ORDINAL_POSITION Tipo de datos INTEGER (4) VARCHAR (19) VARCHAR (19) VARCHAR (19) VARCHAR (19) INTEGER (4) Anulable Descripcin Clave primaria y fornea (slo uso interno) Nombre de tabla padre Columna de clave primaria de la tabla padre Nombre de tabla hijo Nombre de la columna de clave fornea de la tabla hijo Posicin de la columna en la referencia de la clave fornea

DB2eSYSUSERS La tabla DB2eSYSUSERS se crea automticamente cuando se crea la primera tabla cifrada o cuando se ejecuta la primera sentencia GRANT. Esta tabla est estrechamente vinculada a la base de datos y a los datos cifrados; no se puede mover a otra base de datos DB2 Everyplace que contenga datos cifrados distintos.

88

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Esta tabla base del catlogo del sistema contiene una fila para cada nombre registrado definida para una base de datos.
Tabla 23. Tabla base del catlogo del sistema DB2eSYSUSERS Nombre de la columna Tipo de datos USERNAME VARCHAR (19) Anulable Descripcin Parte de la clave primaria, sensible a las maysculas/minsculas. Nombre del usuario asociado a esta fila. Para usos futuros. Se almacena una serie vaca. Parte de la clave primaria. Para usos futuros. Se almacena una serie vaca. Parte de la clave primaria. Para usos futuros. Se almacena una serie vaca. Parte de la clave primaria. S S S Define privilegios del usuario. Actualmente slo se admite el valor E, que indica cifrado. Se utiliza para regenerar una clave cifrada. Hora en que se ha aadido el usuario o se ha modificado por ltima vez el registro, la que sea ms reciente de las dos. Verifica que el registro es autntico y que ha aadido el usuario un usuario autentificado. Nombre del usuario que ha registrado el nombre de usuario de la columna 1. (Usos futuros internos)

DATABASENAME TABLENAME ENCMETHOD PRIVILEGES ENCKEYDATA ATTIME

VARCHAR (19) VARCHAR (19) VARCHAR (19) CHAR (19) BLOB (280) TIMESTAMP (26)

VALIDATE GRANTOR INTERNALDATA

BLOB (280) VARCHAR (19) BLOB (255)

S S S

Desarrollo

89

90

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Ajuste
Este captulo describe tcnicas para mejorar el rendimiento de las aplicaciones de DB2 Everyplace.

Ajuste de aplicaciones de base de datos


Los temas de este captulo describen tcnicas para mejorar el rendimiento de las aplicaciones de base de datos

Varias conexiones con una base de datos


Una fuente de datos DB2 Everyplace acepta varias conexiones de un proceso a la vez. Cuando ms de un proceso intenta conectarse a la misma fuente de datos al mismo tiempo, las peticiones se ponen en una cola. No obstante, DB2 Everyplace permite varias conexiones de base de datos dentro del mismo proceso (o espacio de direcciones). Por ejemplo, el mtodo connect de la interfaz java.sql.Driver soporta ENABLE_SHARED_DATABASE_ACCESS, una propiedad booleana que se puede establecer en true para permitir el acceso simultneo. DB2 Everyplace soporta propiedades y mtodos similares para otros lenguajes, como SHARED_DB_ACCESS para las aplicaciones ADO .NET y SQL_DB_SHARED para las aplicaciones CLI. Antes de desarrollar aplicaciones que utilicen varias conexiones, debe comprender los siguientes conceptos: v Problemas de simultaneidad v Bloqueo de tablas en la pgina 92 v Niveles de aislamiento en la pgina 94

Problemas de simultaneidad
La simultaneidad hace referencia al uso compartido de recursos por parte de diversos usuarios interactivos o programas de aplicacin al mismo tiempo. DB2 Everyplace soporta las transacciones simultneas, lo que permite a una aplicacin establecer diversas conexiones distintas con la misma base de datos. Al desarrollar dicha aplicacin, tenga cuidado para evitar efectos no deseados como, por ejemplo: v Prdida de actualizaciones. Es posible que dos aplicaciones, A y B, lean la misma fila de la base de datos y que ambas calculen nuevos valores para una de sus columnas basndose en los datos que dichas aplicaciones lean. Si A actualiza la fila con su nuevo valor y luego B tambin actualiza la fila, la actualizacin realizada por A se perder. v Acceso a datos no confirmados. Es posible que la aplicacin A actualice un valor en la base de datos y la aplicacin B lea este valor antes de que se confirme. Entonces, si el valor de A no se confirma posteriormente sino que se retrotrae, los clculos realizados por B se basarn en datos no confirmados (y supuestamente no vlidos). v Lecturas no repetibles. Algunas aplicaciones implican la siguiente secuencia de sucesos: la aplicacin A lee una fila de la base de datos y, a continuacin, pasa a procesar otras peticiones de SQL. Mientras tanto, la aplicacin B modifica o suprime la fila y confirma el cambio. Posteriormente, si la aplicacin A intenta volver a leer la fila original, recibir la fila modificada o descubrir que la fila original se ha suprimido. v Lecturas fantasma. El fenmeno de las lecturas fantasma se produce cuando:
Copyright IBM Corp. 1998, 2004

91

1. La aplicacin ejecuta una consulta. 2. Otra aplicacin inserta o actualiza datos que satisfacen los criterios de consulta de la aplicacin. 3. La aplicacin repite la consulta del paso 1 (dentro de la misma unidad de trabajo), pero el conjunto de resultados es diferente porque incluye filas fantasma adicionales insertadas o actualizadas por la otra aplicacin. Este comportamiento se puede evitar en una aplicacin de DB2 Everyplace gestionando bloqueos y niveles de aislamiento. Si la aplicacin no necesita mltiples conexiones de base de datos, se pueden evitar todos los problemas de simultaneidad inhabilitando el acceso compartido por completo. Por ejemplo, el mtodo connect de la interfaz java.sql.Driver soporta ENABLE_SHARED_DATABASE_ACCESS, una propiedad booleana que se puede establecer en false para inhabilitar el acceso simultneo. DB2 Everyplace soporta propiedades y mtodos similares para otros lenguajes, como SHARED_DB_ACCESS para las aplicaciones ADO .NET y SQL_DB_SHARED para las aplicaciones CLI. Para obtener ms informacin, consulte la documentacin de consulta.

Bloqueo de tablas
Un bloqueo asocia un recurso de gestor de bases de datos con una aplicacin para controlar el modo en que las dems aplicaciones pueden acceder al mismo recurso. DB2 Everyplace da soporte al bloqueo de tablas. Es decir, una tabla se debe bloquear por completo o no se debe bloquear. No se pueden bloquear filas especficas de una tabla. DB2 Everyplace da soporte a dos tipos de bloqueos de tabla: v Bloqueos exclusivos, utilizados en sentencias DDL y DML. v Bloqueos compartidos, utilizados en sentencias SELECT. La tabla siguiente muestra cmo se pueden combinar estos tipos de bloqueos cuando varios usuarios o varias transacciones acceden a una tabla.
Tabla 24. Compatibilidad de bloqueos SHARED SHARED EXCLUSIVE Compatible Incompatible EXCLUSIVE Incompatible Incompatible

Una aplicacin puede bloquear una tabla llamando a la sentencia de SQL LOCK TABLE. Por ejemplo, el cdigo siguiente obtiene un bloqueo exclusivo sobre la tabla EMP.
LOCK TABLE EMP IN EXCLUSIVE MODE

El bloqueo de tablas resulta apropiado para las transacciones de slo grabacin y para el acceso de un solo usuario. Cuando dos o ms transacciones actualizan la misma tabla, el bloqueo de la tabla puede llevar a un punto muerto. Por ejemplo, considere el siguiente caso prctico: 1. Dos transacciones, la A y la B, obtienen un bloqueo compartido sobre la tabla T. 2. Posteriormente, las dos transacciones necesitan grabar en la tabla T, que necesita un bloqueo exclusivo. 3. Ninguna de las dos transacciones puede obtener un bloqueo exclusivo, y los bloqueos compartidos y los exclusivos son incompatibles.

92

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

4. Cada transaccin espera a que la otra libere el bloqueo compartido, lo que tiene como resultado un punto muerto. DB2 Everyplace proporciona un mecanismo de tiempo de espera excedido que las aplicaciones pueden utilizar para resolver puntos muertos. Si una aplicacin no puede obtener un bloqueo dentro de un perodo de tiempo especificado, el motor de base de datos retrotraer la transaccin y devolver el SQLSTATE 40001. El tiempo de espera por omisin para los bloqueos es de 20 segundos. Directrices para el bloqueo: Cuando ajuste el bloqueo para la simultaneidad y la integridad de los datos, tenga en cuenta las siguientes directrices: v DB2 Everyplace bloquea tablas enteras. Una tabla se debe bloquear por completo o no se debe bloquear. No se pueden bloquear filas especficas de una tabla. v Cree unidades de trabajo pequeas con sentencias COMMIT frecuentes para permitir el acceso simultneo a datos por parte de muchos usuarios. Incluya sentencias COMMIT cuando los datos que haya modificado sean coherentes. Cuando se emita una confirmacin (COMMIT), se liberarn todos los bloqueos a excepcin de los relacionados con cursores abiertos (en DB2 Everyplace, los cursores se retienen durante una confirmacin (COMMIT)). Tras una confirmacin (COMMIT), todos los bloqueos restantes son compartidos (SHARED). Todos los bloqueos se liberan en una retrotraccin (ROLLBACK). v Especifique un nivel de aislamiento apropiado. Los bloqueos compartidos los adquieren los niveles de aislamiento serializables, de lectura repetible y de lectura confirmada, incluso en las aplicaciones de slo lectura. Para liberar estos bloqueos, cierre los cursores que no estn en uso. El gestor de bases de datos garantiza que la aplicacin no recupere datos no confirmados (filas que otras aplicaciones hayan actualizado pero que an no se hayan confirmado) a menos que se utilice el nivel de aislamiento de lectura no confirmada. v Utilice la sentencia LOCK TABLE del modo adecuado. Slo se bloquea la tabla especificada en la sentencia LOCK TABLE. Las tablas padre y las dependientes de la tabla especificada no se bloquean. Deber determinar si es necesario bloquear otras tablas para conseguir el resultado deseado en trminos de simultaneidad y rendimiento. El bloqueo no se libera hasta que la unidad de trabajo se confirma o se retrotrae. LOCK TABLE IN SHARE MODE Los datos a los que acceda tienen que ser coherentes en el tiempo; es decir, deben ser datos actuales para una tabla en un determinado momento. Si la tabla tiene una actividad frecuente, el nico modo de garantizar que toda la tabla permanezca estable es bloquearla. Por ejemplo, la aplicacin quiere tomar una instantnea de una tabla. No obstante, durante el tiempo que la aplicacin necesita para procesar algunas filas de una tabla, otras aplicaciones actualizan filas que an no se han procesado. Esto se permite con la lectura repetible, pero esta accin no es la que desea. Como alternativa, la aplicacin puede emitir la sentencia LOCK TABLE IN SHARE MODE: no se puede modificar ninguna fila, independientemente de si se ha recuperado o no. Puede recuperar tantas filas como necesite con la garanta que las filas que haya recuperado no se habrn modificado justo antes de recuperarlas.

Ajuste

93

Con LOCK TABLE IN SHARE MODE, otros usuarios puede recuperar datos de la tabla, pero no pueden actualizar, suprimir ni insertar filas en la tabla. LOCK TABLE IN EXCLUSIVE MODE Con LOCK TABLE IN EXCLUSIVE MODE, se bloquea a todos los dems usuarios; ninguna otra aplicacin puede acceder a la tabla a menos que se trate de una aplicacin de lectura no confirmada. v Cierre los cursores para liberar los bloqueos que retengan. En DB2 Everyplace, los cursores se retienen entre confirmaciones por omisin y se cierran implcitamente al ejecutar la siguiente sentencia. Si una aplicacin ya no necesita el cursor en el momento de la confirmacin, deber cerrar el cursor explcitamente antes de confirmar la transaccin para liberar sus bloqueos compartidos. Adems, el nivel de aislamiento de una conexin slo se puede establecer si no hay cursores abiertos y la confirmacin automtica est activada; de lo contrario, se devuelve el SQLSTATE HY011.

Niveles de aislamiento
Un nivel de aislamiento especifica hasta qu punto est aislada una transaccin de otras transacciones en un entorno de mltiples conexiones. DB2 Everyplace da soporte a los siguientes niveles de aislamiento ANSI SQL, listados con sus equivalentes en DB2 UDB en orden descendente por lo que respecta al impacto sobre el rendimiento, pero en orden ascendente por lo que respecta al cuidado necesario al acceder a datos y actualizarlos (por ejemplo, el potencial de situaciones de punto muerto vara con el nivel de aislamiento). Despus de la tabla encontrar detalles sobre cada nivel.
Tabla 25. Niveles de aislamiento Nivel de aislamiento ANSI SQL SERIALIZABLE REPEATABLE READ READ COMMITTED (valor por omisin) READ UNCOMMITTED Equivalente en DB2 UDB Lectura repetible (RR) Estabilidad de lectura (RS) Estabilidad de cursor (CS) Lectura no confirmada (UR)

SERIALIZABLE (DB2 UDB: Lectura repetible) Bloquea la tabla en una unidad de trabajo. Una aplicacin puede recuperar filas de la tabla y trabajar sobre ellas tantas veces como sea necesario. No obstante, se bloquea la tabla entera, no slo las filas que se recuperan. Hasta que la unidad de trabajo finalice, ninguna otra aplicacin podr actualizar, suprimir ni insertar una fila que afecte a la tabla. Las aplicaciones SERIALIZABLE no pueden ver cambios no confirmados realizados por otras aplicaciones. Por lo tanto, una sentencia SELECT emitida repetidamente en la unidad de trabajo dar el mismo resultado cada vez. Las actualizaciones perdidas, el acceso a datos no confirmados y las filas fantasmas no son posibles. REPEATABLE READ (DB2 UDB: Estabilidad de lectura) Puesto que DB2 Everyplace bloquea tablas enteras (no filas especficas), REPEATABLE READ tiene exactamente el mismo comportamiento que SERIALIZABLE. READ COMMITTED (DB2 UDB: Estabilidad de cursor)

94

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Se bloquea la tabla entera. Los bloqueos compartidos se liberan cuando se cierran los cursores asociados (los niveles de aislamiento superiores a READ COMMITTED retienen los bloqueos compartidos hasta el final de la transaccin). Los bloqueos exclusivos se retienen hasta el final de la transaccin. Ninguna otra aplicacin puede realizar otra operacin DML sobre una tabla mientras un cursor abierto acceda a sta. Las aplicaciones READ COMMITED no pueden ver cambios no confirmados de otras aplicaciones. Son posibles tanto las lecturas no repetibles como las lecturas fantasma. READ COMMITTED es el nivel de aislamiento por omisin; permite la mxima simultaneidad mientras se ven slo las filas confirmadas de otras aplicaciones. READ UNCOMMITTED (DB2 UDB: Lectura no confirmada) Una aplicacin puede acceder a algunos cambios no confirmados de otras transacciones: las tablas y los ndices que otras aplicaciones estn creando o descartando no estn disponibles mientras la transaccin est en proceso. Cualquier otro cambio se puede leer antes de que se confirma o se retrotraiga. En este nivel, la aplicacin no bloquea el acceso de otras aplicaciones a la tabla que est leyendo. La tabla siguiente resume los niveles de aislamiento por lo que respecta a sus efectos no deseados.
Tabla 26. Resumen de los niveles de aislamiento Nivel de aislamiento SERIALIZABLE REPEATABLE READ READ COMMITTED READ UNCOMMITTED Acceso a datos no confirmados No es posible No es posible No es posible Es posible Lecturas no repetibles No es posible Es posible Es posible Es posible Fenmeno de lectura fantasma No es posible Es posible Es posible Es posible

La tabla siguiente puede ayudarle a elegir un nivel de aislamiento inicial para sus aplicaciones. Considere esta tabla como un punto de partida y consulte las explicaciones anteriores de los distintos niveles para obtener informacin sobre los factores que pueden hacer que otro nivel de aislamiento resulte ms adecuado.
Tabla 27. Directrices para elegir un nivel de aislamiento Tipo de aplicacin Transacciones de lectura-grabacin Transacciones de slo grabacin Se necesita una alta estabilidad de los datos REPEATABLE READ SERIALIZABLE o REPEATABLE READ No se necesita una alta estabilidad de los datos READ COMMITTED READ UNCOMMITTED

Otros puntos a tener en cuenta: v Las sentencias INSERT, UPDATE y DELETE siempre funcionan del mismo modo independientemente del nivel de aislamiento. Slo vara el funcionamiento de las sentencias SELECT.
Ajuste

95

v El nivel de aislamiento slo se puede establecer al principio de una transaccin, por lo que permanece en vigor mientras dure la unidad de trabajo.

Serializacin de conexiones
Una fuente de datos DB2 Everyplace acepta varias conexiones de un proceso a la vez. Cuando ms de un proceso intenta conectarse a la misma fuente de datos al mismo tiempo, las peticiones se ponen en una cola mediante un mecanismo denominado serializacin de conexiones. Para la serializacin de conexiones, es necesario que los desarrolladores decidan cunto tiempo debe esperar una aplicacin a obtener una conexin. Este intervalo, denominado perodo de tiempo de espera, se puede establecer utilizando el atributo SQL_ATTR_LOGIN_TIMEOUT de la funcin SQLSetConnectAttr(). Los siguientes ejemplos de CLI y JDBC establecen 10 como valor del perodo de tiempo de espera de conexin. Si la aplicacin no puede conectarse a la base de datos en 10 segundos, devolver un cdigo de error. El perodo de tiempo de espera Para la CLI:
int i = 10; // tiempo de espera de 10 segundos rc = SQLSetConnectAttr(hdbc, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER) i, 0);

Para JDBC:
int waitTime = 10; String url = "jdbc:db2e:mysample"; Properties prop = new Properties(); prop.setProperty("LOGIN_TIMEOUT", Integer.toString(waitTime)); Connection con = driver.connect(url,prop);

Nota: v El tiempo de espera por omisin es de 0 segundos. v El perodo por omisin de LOCK_TIMEOUT es de 20 segundos. v Una aplicacin de varias hebras puede conectarse a una base de datos utilizando una hebra y desconectarse de la base de datos utilizando otra hebra. v Es posible que la serializacin de conexiones no funcione con una base de datos que se encuentre en una unidad de red. v En un programa JDBC, el valor del tiempo de espera se ignorar y se establecer en cero si se pasa en una propiedad al mtodo DriverManager.getConnection(). v DB2 Everyplace permite el acceso simultneo a bases de datos dentro del mismo proceso (o espacio de direcciones). Por ejemplo, el mtodo connect de la interfaz java.sql.Driver soporta ENABLE_SHARED_DATABASE_ACCESS, una propiedad booleana que se puede establecer en true para permitir el acceso simultneo. DB2 Everyplace soporta propiedades y mtodos similares para otros lenguajes, como SHARED_DB_ACCESS para las aplicaciones ADO .NET y SQL_DB_SHARED para las aplicaciones CLI.

96

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Seguridad
Los temas de este captulo describen tcnicas que se pueden utilizar para hacer que las aplicaciones resulten ms seguras.

Visin general del cifrado local de los datos


En este apartado se describe cmo se habilita el cifrado para cada plataforma y se relacionan las bibliotecas necesarias, adems de las que necesita la base de datos porttil DB2 Everyplace. Para Windows: v biblioteca de plug-in: CryptoPlugin.dll (proporcionada por DB2 Everyplace) v biblioteca de cifrado: Crypt32.dll (paquete de 128 bits Cypher Strength Encryption, se suministra con IE5.5 o superiores). Vaya a http://www.microsoft.com/windows/ie/downloads/critical /q313675/download.asp. Para Windows CE/Pocket PC v biblioteca de plug-in: CryptoPlugin.dll (proporcionada por DB2 Everyplace) v biblioteca de cifrado: Microsoft High Encryption Pack para Pocket PC V1.0. Vaya a http://www.microsoft.com/windowsmobile/downloads/highencryption.mspx para descargar el paquete de cifrado. Este paquete forma parte de Pocket PC 2003, pero se debe instalar en Pocket PC 2002. Si la biblioteca CryptoPlugin.dll existe pero el paquete de cifrado no est instalado, las aplicaciones no podrn conectarse a ninguna base de datos (por ejemplo DB2eCLP no se podr iniciar). Si una aplicacin requiere el cifrado, instale Microsoft High Encryption Pack para Pocket PC. Si el cifrado no es necesario, suprima CryptoPlugin.dll del directorio de Windows del dispositivo Pocket PC. Para Palm OS v biblioteca de plug-in: CryptoPlugin.PRC (proporcionada por DB2 Everyplace) v biblioteca de cifrado: PBSPKcs11.prc (proporcionada por DB2 Everyplace) Para Linux/Neutrino v biblioteca de plug-in: libcryptoplugin.so (proporcionada por DB2 Everyplace) v biblioteca de cifrado: libpvcpkcs11.so (proporcionada por DB2 Everyplace) Para Symbian v biblioteca de plug-in: CRYPTOPLUGIN.DLL (proporcionada por DB2 Everyplace) v biblioteca de cifrado: ECSPKCS11.DLL (proporcionada por DB2 Everyplace) El cifrado en DB2 Everyplace est diseado para proteger los datos de un dispositivo porttil o incorporado. En este tema se proporciona una rpida visin general del cifrado local de los datos como ayuda a la iniciacin. Se tratan los temas siguientes: v Porqu se debe utilizar el cifrado local de datos? v Objetivos de un cifrado local de los datos
Copyright IBM Corp. 1998, 2004

97

v Creacin de la primera tabla cifrada v Accesos posteriores a tablas cifradas v Gestin de los privilegios de usuario Porqu se debe utilizar el cifrado local de datos? Piense en una aplicacin corporativa de ventas que contiene datos de contacto con los clientes. Un viajante de comercio puede llevar estos datos en su PDA cuando visite a un cliente. A menos que la aplicacin o PDA brinden un sistema de almacenamiento seguro, se puede acceder fcilmente a los datos a travs de la aplicacin o investigando el sistema de archivos nativo del dispositivo porttil. Los datos sensibles al cifrado se convierten en un aspecto crucial en la proteccin de la informacin corporativa. Objetivos de un cifrado local de los datos DB2 Everyplace proporciona una solucin que permite que una aplicacin implante una poltica de seguridad corporativa. El primer objetivo consiste en cifrar la informacin secreta o delicada almacenada en tablas de DB2 Everyplace. Los datos se cifran utilizando mtodos de cifrado estndares tales como DES, que implanta claves de cifrado. El segundo objetivo consiste en proporcionar un marco seguro para poder gestionar las claves utilizadas para cifrar los datos. Se requiere al usuario para que suministre un ID de usuario y una contrasea en el momento de conectar con la base de datos. Para obtener ms informacin, consulte el apartado Gestin de los privilegios de cifrado en la pgina 100. Para obtener ms informacin sobre cmo utilizar el cifrado de datos, consulte el apartado Cifrado utilizando DB2eCLP en la pgina 100. 1. Establezca una conexin con la base de datos porttil DB2 Everyplace. 2. Otorgue privilegios de cifrado a un usuario 3. Cree una tabla cifrada Acceso posterior a las tablas cifradas: Si una base de datos contiene la tabla DB2eSYSUSERS, cualquier conexin de base de datos posterior pasar por la autentificacin de usuario con el ID de usuario y la contrasea suministrados. Si falla la autentificacin, la aplicacin slo podr acceder a tablas no cifradas. La aplicacin no podr crear nuevas tablas cifradas, eliminar tablas cifradas existentes ni acceder o actualizar datos cifrados. 4. Gestione privilegios de cifrado.

Establecimiento de una conexin con la base de datos porttil DB2 Everyplace


Esta tarea forma parte de la tarea ms importante de Cifrado de datos locales. Despus de completar estos pasos, vuelva al apartado Visin general del cifrado local de los datos en la pgina 97. Cualquier interaccin con la base de datos porttil DB2 Everyplace requiere que se establezca una conexin. Adems, y para que un usuario pueda acceder a tablas cifradas o crearlas, la aplicacin debe conectar con DB2 Everyplace con un ID de usuario y una contrasea que no estn vacos, utilizando la funcin siguiente de la CLI:
rc = SQLConnect(hdbc, "C:\temp\", SQL_NTS, "user1", SQL_NTS, "pwd1", SQL_NTS)

98

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

donde C:\temp\ es el directorio de la base de datos porttil DB2 Everyplace con la que la aplicacin est conectada, utilizando el ID de usuario usuario1 y la contrasea contras1. Para una interfaz JDBC, se puede establecer una conexin de base de datos de forma parecida. Despus de completar estos pasos, vuelva al apartado Visin general del cifrado local de los datos en la pgina 97.

Cmo otorgar privilegios de cifrado a un usuario


Esta tarea forma parte de la tarea ms importante de Cifrado de datos locales. Despus de completar estos pasos, vuelva al apartado Visin general del cifrado local de los datos en la pgina 97. Antes de crear la primera tabla cifrada, la aplicacin debe otorgar privilegios de cifrado a un usuario. Por ejemplo, la aplicacin puede emitir la sentencia siguiente de SQL:
rc = SQLExecDirect(..., "GRANT ENCRYPT ON DATABASE TO \"usuario1\"" + " using \"pwd1\" new \"pwd1\"", SQL_NTS)

Al ejecutar esta sentencia de SQL, DB2 Everyplace crear una tabla de catlogos del sistema llamada DB2eSYSUSERS, y se insertar una fila en dicha tabla. Esto significa que el usuario usuario1 ya estar registrado con la contrasea correspondiente y ahora tendr todos los privilegios de cifrado, como por ejemplo para crear tablas cifradas y acceder a ellas. Esta tabla est estrechamente vinculada con la base de datos y los datos cifrados, por lo que no basta con trasladarla a otra base de datos porttil DB2 Everyplace para acceder a datos cifrados. Esto es debido a que las distintas bases de datos tendrn claves diferentes para el cifrado o descifrado. Como consecuencia, si una persona tiene permitido acceder a tablas cifradas de una base de datos, dicha persona no puede acceder a otra base de datos utilizando un ID de usuario y una contrasea iguales. Al igual que con otras tablas de catlogos del sistema, una aplicacin puede recuperar filas utilizando la sentencia de seleccin de SQL, pero no puede modificar los datos de esta tabla mediante las sentencias INSERT, DELETE, UPDATE, CREATE y DROP. Despus de completar estos pasos, vuelva al apartado Visin general del cifrado local de los datos en la pgina 97.

Creacin de una tabla cifrada


Esta tarea forma parte de la tarea ms importante de Cifrado de datos locales. Despus de completar estos pasos, vuelva al apartado Visin general del cifrado local de los datos en la pgina 97. Una vez que se ha establecido una conexin con la base de datos DB2 Everyplace y se han otorgado privilegios de cifrado a un usuario, la aplicacin puede crear tablas cifradas mediante una sentencia CREATE TABLE ampliada. Por ejemplo, se puede crear la tabla de empleados siguiente:
SQLExecDirect(..., "CREATE TABLE EMPLOYEES (EMPNO INT PRIMARY KEY, NAME VARCHAR(30), SALARY DECIMAL(10,2)) WITH ENCRYPTION", SQL_NTS)

Seguridad

99

Gestin de los privilegios de cifrado


Esta tarea forma parte de la tarea ms importante de Cifrado de datos locales. Despus de completar estos pasos, vuelva al apartado Visin general del cifrado local de los datos en la pgina 97. Una vez que una aplicacin conecta con una base de datos con el ID de usuario y la contrasea autentificados, la aplicacin puede crear nuevos usuarios, cambiar contraseas o eliminar del sistema un usuario registrado. La sintaxis para crear un nuevo usuario o cambiar una contrasea es:
GRANT ENCRYPT ON DATABASE TO "nuevousuario" USING "contrasotorgante" NEW "nuevacontras"

La sintaxis para eliminar un usuario registrado es:


REVOKE ENCRYPT ON DATABASE FROM "usuario"

Nota: Si se eliminan todos los usuarios registrados de la tabla DB2eSYSUSERS (mediante la sentencia REVOKE), no se puede realizar ninguna otra operacin de cifrado, incluido el acceso a una tabla cifrada existente. No existe ningn mecanismo de recuperacin.

Cifrado utilizando DB2eCLP


Este apartado contiene un ejemplo de sesin interactiva diseada para mostrar cmo utilizar el cifrado de datos en las aplicaciones. Se han aadido comentarios para explicar cada operacin.
-- Cifrado utilizando DB2eCLP --- sta es una sesin de cifrado de ejemplo utilizando el programa de -- interfaz de lnea de mandatos de ejemplo suministrado, DB2eCLP. --- Slo mostramos el cdigo de retorno de una sentencia si sta ha -- fallado; si ha finalizado satisfactoriamente, slo mostramos los -- resultados de las selecciones. -- Los mandatos que se pueden escribir en DB2 Everyplace tiene por -- prefijo la serie "CLP:> ". --- -- (CLI:SQLConnect, SQL:CREATE TABLE, SQL:GRANT, SQL:REVOKE) --- Cuando se inicia DB2eCLP, automticamente se conecta con -- la base de datos por omisin (en el directorio actual). -- Esto es equivalente a: -CLP:> CONNECT TO anything; -----Puesto que no se indica ninguna va de acceso especfica, slo el nombre "anything", conecta con el directorio actual. Ahora crearemos una tabla no cifrada que contenga una correlacin de algunos nmeros en palabras de contaje en sueco. CREATE INSERT INSERT INSERT INSERT INSERT INSERT TABLE swedish(nummer INT, ord VARCHAR(32)); INTO swedish VALUES(1, ett); INTO swedish VALUES(3, tre); INTO swedish VALUES(4, fyra); INTO swedish VALUES(5, fem); INTO swedish VALUES(7, sju); INTO swedish VALUES(99, nittionio);

CLP:> CLP:> CLP:> CLP:> CLP:> CLP:> CLP:>

-- Eche un vistazo a los datos CLP:> SELECT * FROM swedish;

100

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

NUMMER ORD ----------- -------------------------------1 ett 3 tre 4 fyra 5 fem 7 sju 99 nittionio 6 row(s) returned. -- Ahora intentaremos crear la tabla correspondiente para ingls, -- pero utilizando cifrado. -CLP:> CREATE TABLE english(number INT, word VARCHAR(32)) WITH ENCRYPTION; Statement failed [sqlstate = 42501]. -- Esta sentencia falla porque todava no estamos autorizados, tal como ha -- indicado el cdigo de error. Por tanto, tenemos que volver a conectar: -CLP:> CONNECT TO something USER jsk USING hemligt; -- Este mandato conecta con la misma base de datos (directorio por -- omisin/actual) pero con una identidad de usuario especfica "jsk" -- y utilizando la contrasea "hemligt". -- El mandato CONNECT TO no es una sentencia de SQL, por lo que lo -- interpreta la aplicacin DB2eCLP. sta se desconectar de la base -- de datos mvil de DB2 Everyplace y se volver a conectar a ella -- utilizando: -SQLConnect(hdbc, "something", SQL_NTS, "jsk", SQL_NTS, "hemligt", SQL_NTS); --- Ahora, tenemos que crear el primer usuario autorizado. Cuando se crea -- el primer usuario, ste tiene que tener el mismo nombre y la misma -- contrasea que el usuario que ha iniciado la sesin: -CLP:> GRANT ENCRYPT ON DATABASE TO "jsk" USING "hemligt" NEW "hemligt"; -------Observe que para GRANT es necesario que el nombre y las contraseas estn entre comillas dobles. Esto es debido a que son sensibles a las maysculas y minsculas y la sentencia se pasa directamente a DB2 Everyplace. Ahora que tenemos un usuario de cifrado autorizado, podemos crear la tabla cifrada: CREATE INSERT INSERT INSERT INSERT INSERT INSERT TABLE english(number INT, word VARCHAR(32)) WITH ENCRYPTION; INTO english VALUES(1, one); INTO english VALUES(3, three); INTO english VALUES(4, four); INTO english VALUES(5, five); INTO english VALUES(7, seven); INTO english VALUES(99, ninety nine);

CLP:> CLP:> CLP:> CLP:> CLP:> CLP:> CLP:>

-- Eche un vistazo a los datos. CLP:> SELECT * FROM english; NUMBER WORD ----------- -------------------------------1 one 3 three 4 four 5 five 7 seven 99 ninety nine 6 row(s) returned. -- Seleccione un nmero aleatorio elevado en sueco:
Seguridad

101

-CLP:> SELECT * FROM swedish WHERE nummer > 42; NUMMER ORD ----------- -------------------------------99 nittionio 1 row(s) returned. -- Seleccione un nmero aleatorio elevado en ingls: -CLP:> SELECT * FROM english WHERE number > 42; NUMBER WORD ----------- -------------------------------99 ninety nine 1 row(s) returned. -- Traduzca fyra al ingls: -CLP:> SELECT word FROM swedish, english WHERE number = nummer AND ord = fyra; WORD -------------------------------four 1 row(s) returned. -- Obtenga una tabla de traduccin: -CLP:> SELECT number, ord, word FROM swedish, english WHERE number = nummer; NUMBER ORD ----------- -------------------------------1 ett 3 tre 4 fyra 5 fem 7 sju 99 nittionio 6 row(s) returned. WORD -------------------------------one three four five seven ninety nine

-- Intente autorizar a otra usuaria para que acceda a los datos cifrados -- con su propia contrasea: -CLP:> GRANT ENCRYPT ON DATABASE TO "xin" USING "notKnown" NEW "notKnown"; Statement failed [sqlstate = 42506]. -- Esta sentencia ha fallado porque el usuario que ha iniciado la sesin -- se tiene que autovalidar para poder aadir un nuevo usuario; esto se -- hace proporcionando su contrasea detrs de la clusula USING. -CLP:> GRANT ENCRYPT ON DATABASE TO "xin" USING "hemligt" NEW "notKnown"; -- Volvamos a conectar con el nuevo usuario: -CLP:> CONNECT TO samething USER xin USING notknown; Statement failed [sqlstate = 42505]. -- Esta vez falla porque la contrasea no es igual, por lo que no se -- generar la misma clave y se deniega el acceso. -CLP:> CONNECT TO samething USER ksin USING notKnown; ----Esta vez no fallar porque el usuario ksin no existe y, por consiguiente, no intentamos autentificar el usuario. Sin embargo, si utilizamos SQLGetInfo podremos distinguir este caso del caso en que un usuario se ha autentificado satisfactoriamente.

102

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

-CLP:> SELECT * FROM swedish; NUMMER ORD ----------- -------------------------------1 ett 3 tre 4 fyra 5 fem 7 sju 99 nittionio 6 row(s) returned. -- La seleccin de datos no cifrados funciona bien, sin embargo los datos -- no cifrados no se pueden leer/actualizar a no ser que haya un usuario -- autorizado conectado: -CLP:> SELECT * FROM english; Statement failed [sqlstate = 42501]. -- Conectar como el nuevo usuario, finalmente con nombre de usuario y -- contrasea correctos. -CLP:> CONNECT TO samething USER xin USING notKnown; -- Verificar que estamos autentificados y podemos acceder a los datos. -CLP:> SELECT * FROM english; NUMBER WORD ----------- -------------------------------1 one 3 three 4 four 5 five 7 seven 99 ninety nine 6 row(s) returned. -- Aadir otro usuario: -CLP:> GRANT ENCRYPT ON DATABASE TO "thf" USING "notKnown" NEW "heimlich"; -- Listar los usuarios existentes actualmente: -CLP:> SELECT username, grantorname FROM "DB2eSYSUSERS"; USERNAME ------------------jsk xin thf 3 row(s) returned. GRANTORNAME ------------------jsk jsk xin

-- Volver a conectar como "jsk": -CLP:> CONNECT TO itagain USER jsk USING hemligt; Statement completed successfully. -- Intento de cambiar la contrasea por "secret": -CLP:> GRANT ENCRYPT ON DATABASE TO "jsk" USING "secret" NEW "secret"; Statement failed [sqlstate = 42506]. -- Ah, hemos fallado porque es necesario que suministremos primero -- nuestra contrasea antigua, y luego la nueva: -Seguridad

103

CLP:> GRANT ENCRYPT ON DATABASE TO "jsk" USING "hemligt" NEW "secret"; -- Intentarlo con la nueva contrasea: -CLP:> CONNECT TO itagain USER jsk USING secret; -- Asegurarnos de que podemos acceder a datos cifrados: -CLP:> SELECT * FROM english; NUMBER WORD ----------- -------------------------------1 one 3 three 4 four 5 five 7 seven 99 ninety nine 6 row(s) returned. -- Vamos a eliminar el privilegio de cifrado de "xin": -CLP:> REVOKE ENCRYPT ON DATABASE FROM "xin"; -- Listar los usuarios -CLP:> SELECT username, grantorname FROM "DB2eSYSUSERS"; USERNAME ------------------jsk thf 2 row(s) returned. GRANTORNAME ------------------jsk xin

-- Volver a conectar con el usuario que ahora no existe, sin errores. -CLP:> CONNECT TO the database USER xin USING idontknow; -- Intentar realizar operaciones de cifrado sin autorizacin: -CLP:> SELECT * FROM english; Statement failed [sqlstate = 42501]. CLP:> DROP TABLE english; Statement failed [sqlstate = 42501]. CLP:> REVOKE ENCRYPT FROM "jsk"; Statement failed [sqlstate = 42601]. CLP:> GRANT ENCRYPT ON DATABASE TO "xin" USING "idontknow" NEW "idontknow"; Statement failed [sqlstate = 42502]. -- Conectar como "thf": -CLP:> CONNECT TO the database USER thf USING heimlich; -- Comprobar que podemos leer datos cifrados: -CLP:> SELECT * FROM english; NUMBER ----------1 3 4 5 7 WORD -------------------------------one three four five seven

104

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

99 ninety nine 6 row(s) returned. -- Vamos a eliminar el privilegio del usuario conectado: -CLP:> REVOKE ENCRYPT ON DATABASE FROM "thf"; -- Asegurarnos de que ya no puede acceder a los datos: -CLP:> SELECT * FROM english; Statement failed [sqlstate = 42501]. -- Si conectamos con la base de datos como el nico usuario que queda, "jsk" -CLP:> CONNECT TO the database USER jsk USING secret; -- Eliminamos el usuario conectado, ste ya no puede acceder a los datos. -- Realmente, no hay manera de acceder a los datos cifrados de nuevo. -CLP:> REVOKE ENCRYPT ON DATABASE FROM "jsk"; -- Asegurarnos de que no queda ningn usuario: -CLP:> SELECT username, grantorname FROM "DB2eSYSUSERS"; USERNAME GRANTORNAME ------------------- ------------------0 row(s) returned. -- Ahora no debemos poder acceder a los datos cifrados. -CLP:> SELECT * FROM english; Statement failed [sqlstate = 42501]. -- Y as concluye la sesin de ejemplo.

Contraseas cifradas de Sync Server


Las contraseas de Sync Server aparecen en archivos de propiedades y en scripts XML Hay dos archivos de propiedades que contienen contraseas utilizadas por Sync Server: v DSYIdflt.properties contiene la contrasea de la base de datos de control, DSYCTLDB. v DSYLDAP.properties contiene la contrasea correspondiente a la conexin HTTP de direccionador SOAP. Las contraseas de Sync Server tambin pueden aparecer en scripts XML y se pueden especificar utilizando el Centro de administracin de dispositivos porttiles. Para evitar el acceso accidental o no autorizado a estos recursos, las contraseas se pueden cifrar. El programa de utilidad DSYEncrypt cifra contraseas DB2 Everyplace proporciona un programa de utilidad de lnea de mandatos que cifra contraseas. Cuando se le proporciona una contrasea, el programa de

Seguridad

105

utilidad proporciona una versin cifrada de dicha contrasea. El programa de utilidad, denominado dsyencrypt.bat, se instala por omisin en el directorio %DSYINSTDIR%\Server\bin. A continuacin se ofrece un ejemplo de cmo utilizar la herramienta para cifrar la contrasea db2admin. 1. En la lnea de mandatos, escriba dsyencrypt db2admin. 2. La herramienta mostrar un mensaje similar al siguiente:
El formato cifrado del texto de entrada ser el siguiente: nw4SCU6x1ok= Si es una contrasea cifrada que desea colocar en un archivo de propiedades, el valor que deber colocar en el archivo de propiedades es: {DSY}nw4SCU6x1ok=

3. Utilice el valor generado (que lleva el prefijo {DSY}) en un archivo de propiedades en lugar de la contrasea en texto sin formato. Por ejemplo, en DSYIdflt.properties, en lugar de utilizar: SSDB2.Password=db2admin utilice: SSDB2.Password={DSY}nw4SCU6x1ok= De modo similar, en DSYLdap.properties, en lugar de utilizar: WEBSERVICE_HTTP_PASSWORD=db2admin utilice: WEBSERVICE_HTTP_PASSWORD={DSY}nw4SCU6x1ok= Las contraseas de Sync Server en los scripts XML se cifran en la base de datos Al crear scripts XML manualmente, puede especificar contraseas para Sync Server en texto sin formato, por ejemplo, <Contrasea>db2admin<Contrasea>. Estas contraseas en texto sin formato se cifran automticamente al almacenarlas en la base de datos de control. Nota: Las contraseas de Sync Client almacenadas en DSYCTLDB no se cifran. Las contraseas de Sync Client se almacenan en texto sin formato. En los scripts XML generados por la herramienta de realizacin de scripts XML, las contraseas de la base de datos maestra y de rplica se cifran automticamente, con una salida similar a la de los ejemplos siguientes:
<AddJdbcMaster> <Databasej>dbc:db2:VNURSE</Database> <Driver>COM.ibm.db2.jdbc.app.DB2Driver<Driver> <Userid>db2admin<Userid> <Password Encryption="DSY">QmlUOzeUngArzGq1xptlhA==</Password> <AddJdbcMaster> <AddJdbcMirror> <Databasej>dbc:db2:M_VN2</Database> <Driver>COM.ibm.db2.jdbc.app.DB2Driver<Driver> <Userid>db2admin</Userid> <Password Encryption="DSY">bbRtum49DRuMMRxwD5eSlAA==</Password> <SyncWindow>5000</SyncWindow> <AddJdbcMirror>

106

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

El Centro de administracin de dispositivos porttiles cifra contraseas de bases de datos maestras y de rplica Cuando utilice el Centro de administracin de dispositivos porttiles para especificar contraseas para bases de datos maestras y de rplica, stas se guardarn en formato cifrado. Si se olvida de las contraseas, no podr recuperarlas buscndolas en estas tablas. Nota: Slo se cifran los registros nuevos y los registros actualizados. Los datos existentes en DSYCTLDB, especficamente DSY.REPL_MIRROR.PASSWORD, DSY.REPL_MASTER.PASSWORD, DSY.JDBC_MIRROR.PASSWORD y DSY.JDBC_MIRROR.PASSWORD no se cifran al migrarlos.

Seguridad

107

108

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Resolucin de problemas
Este captulo presenta herramientas, programas de utilidad y tcnicas que se pueden utilizar para identificar y solucionar problemas de DB2 Everyplace.

Rastreo y diagnsticos
DB2 Everyplace proporciona recursos de registro cronolgico bsico de errores para los dispositivos que utilizan sistemas operativos Linux, QNX Neutrino, o Windows 32 bits. DB2 Everyplace tambin proporciona bibliotecas de desarrollo que se pueden instalar en estos dispositivos para generar datos de rastreo. Estos datos pueden contribuir a la resolucin de problemas al desarrollar y probar aplicaciones para DB2 Everyplace. Rastreo Para habilitar el rastreo, instale las bibliotecas de desarrollo en el dispositivo porttil. Estas bibliotecas se encuentran en directorios que terminan en Dev. Por ejemplo, las bibliotecas de desarrollo para dispositivos Linux con procesadores x86 se encuentran en \Clients\linux\database\x86Dev. Cuando se utilicen estas bibliotecas de desarrollo para ejecutar una aplicacin, DB2 Everyplace grabar datos en un archivo de rastreo en el directorio de la base de datos utilizando un nombre de archivo listado en la tabla siguiente. Si existe un archivo de rastreo en el directorio de la base de datos, se aadir informacin de rastreo de CLI a dicho archivo.
Tabla 28. Nombres de archivos de rastreo y diagnstico Nombre de archivo largo Archivo de rastreo Archivo de anotaciones cronolgicas Archivos de vuelco DSY_DB2eTRACE db2ediag.log DB2e_cxxxxx * Nombre de archivo corto (formato 8.3) _trc.DBs _diag.DBs _cxxxxx.DBs *

* xxxxx es el nmero de identificador de proceso (PID) del proceso afectado. Datos de diagnstico DB2 Everyplace genera datos de diagnstico para las aplicaciones que ejecutan bibliotecas de release o de desarrollo. Cuando una aplicacin se encuentra con un error del sistema muy grave (SQLState 58005), DB2 Everyplace registra el error en un archivo de anotaciones cronolgicas y captura el estado del sistema en un archivo de vuelco. La tabla anterior lista los nombres de archivo correspondientes a los archivos de anotaciones cronolgicas y a los archivos de vuelco. Todos los archivos se encuentran en el mismo directorio que la base de datos. Los datos de los siguientes archivos de anotaciones cronolgicas tambin pueden ayudarle a diagnosticar problemas: v %DSYINSTDIR%\Server\logs\IBMDB2eServer\syncadapterinit.log v %DSYINSTDIR%\Server\logs\IBMDB2eServer\dsynnnn.trace
Copyright IBM Corp. 1998, 2004

109

v %DSYINSTDIR%\Server\logs\dsyadminnnnn.trace

Herramienta de comprobacin de la integridad de los datos


La herramienta de comprobacin de la integridad de los datos informa de si hay tablas e ndices daados. Para ejecutar esta herramienta, ejecute el mandato DBCHECK en la aplicacin de ejemplo de la CLI. La sintaxis del mandato es la siguiente:
DBCHECK archivosalida

El parmetro archivosalida especifica un archivo de texto en el directorio de la base de datos en que el la herramienta grabar los resultados. Nota: Esta herramienta slo recibe soporte en sistemas operativos Linux y Windows de 32 bits.

Tratamiento de los problemas de sincronizacin


Cuando la sincronizacin se interrumpe, Sync Server graba mensajes en el archivo de anotaciones cronolgicas de la base de datos de control de administracin. Los temas siguientes explican cmo tratar los problemas de sincronizacin: v Orden de sincronizacin y recepcin de mensajes de error en la pgina 111 v Visualizacin del archivo de anotaciones cronolgicas de errores para diagnosticar problemas en la pgina 112 v Eliminacin automtica de entradas del archivo de anotaciones cronolgicas de errores en la pgina 113 v Definicin del nivel de rastreo en la pgina 113 v Cmo proporcionar lgica de manejo de errores para salidas de usuario en la pgina 125 v Visualizacin del archivo de anotaciones cronolgicas en el cliente en la pgina 113

Resolucin de conflictos de sincronizacin


A veces, los cambios que un cliente enva a DB2 Everyplace Sync Server entran en conflicto con los cambios que otros clientes o aplicaciones han realizado anteriormente o que estn realizando simultneamente en las tablas de destino. Sync Server hace un seguimiento de la versin de cada registro de cada tabla de una suscripcin de duplicacin. Cada cliente se somete a un seguimiento similar para mantener una versin de cada registro correspondiente a la ltima sincronizacin de cada cliente con cada tabla. Esta informacin permite a Sync Server determinar si un cliente intenta o no actualizar una fila basndose en una versin obsoleta de los datos de dicha fila. Si un cliente intenta actualizar una fila basndose en una versin obsoleta de los datos de dicha fila, la actualizacin se rechazar. Nota: La restauracin de una base de datos (de un dispositivo) de destino de DB2 Everyplace desde una imagen de copia de seguridad anterior tendr como resultado un comportamiento imprevisible, con incoherencias de datos que pueden afectar a otros usuarios adems de al usuario del dispositivo que causa el conflicto. La resolucin de conflictos tiene lugar cuando los datos se transfieren a las tablas de rplica del sistema de nivel medio, tal como se muestra en la Figura 2 en la pgina 111. Esto sucede durante el ciclo de duplicacin siguiente a la sesin de

110

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

sincronizacin del cliente. En consecuencia, los conflictos de las actualizaciones de un cliente no se detectarn hasta que despus de que se devuelvan mensajes de respuesta al cliente durante la sincronizacin en cuestin. Los rechazos de los cambios del cliente se comunicarn al cliente en la primera sesin de sincronizacin posterior a la duplicacin en la que se haya detectado el conflicto. Si un cambio de un cliente se basa en un registro obsoleto, se devolver una versin correcta de dicho registro en la peticin de sincronizacin original.

actualizar

rechazada Tabla VNMEDICALRECORD

Cliente 1
ltima sincronizacin: 12:02:04
actualizar

Tabla de rplica VNMEDICALRECORD

Tabla VNMEDICALRECORD

Base de datos de rplica M_VNURSE

Cliente 2
ltima sincronizacin: 12:02:45

Sistema de nivel medio

Figura 2. Modo en que Sync Server gestiona los conflictos

El cliente cuya actualizacin se ha rechazado recibe tanto el registro rechazado como una versin correcta de dicho registro. El registro rechazado se registra en el archivo de anotaciones cronolgicas en el cliente o la API del cliente lo proporciona a la aplicacin. La versin correcta de dicho registro sustituye al registro original (rechazado) en la base de datos porttil DB2 Everyplace. Cuando DataPropagator aplica los datos modificados del sistema de nivel medio a la base de datos fuente, se pueden producir otros tipos de conflictos. Consulte las publicaciones DB2 Universal Database Replication Guide and Reference y DB2 Universal Database Administration Guide para obtener ms informacin sobre cmo gestionar y resolver estos conflictos.

Orden de sincronizacin y recepcin de mensajes de error


Las suscripciones se sincronizan en el orden en que se han aadido al crear el conjunto de suscripcin en el Centro de administracin de dispositivos porttiles. De modo similar, para cada suscripcin, las tablas se sincronizan en el orden en que se han aadido al crear o modificar la suscripcin. Es importante conocer el orden de sincronizacin para poder interpretar los archivos de anotaciones cronolgicas y resolver problemas de sincronizacin. Puede cambiar el orden de las suscripciones y los conjuntos de suscripcin editndolos en el Centro de administracin de dispositivos porttiles. Las suscripciones listadas en el cuaderno de edicin de conjuntos de suscripcin o en
Resolucin de problemas

111

las tablas que se muestran en el cuaderno de edicin de suscripciones aparecen en el orden en que se han aadido, con la ms antigua al principio de la lista. Puede modificar el orden de sincronizacin en los cuadernos Cambiar conjuntos de suscripcin, Crear conjuntos de suscripcin, Cambiar grupo, Crear grupo y Definir suscripciones de duplicacin. Si Sync Server ha rechazado un registro para JDBC y suscripciones de DataPropagator, el cliente recibir mensajes de error sobre el rechazo durante la sincronizacin posterior a la duplicacin de la base de datos de rplica en cuestin.

Visualizacin del archivo de anotaciones cronolgicas de errores para diagnosticar problemas


Cuando se produzcan problemas de sincronizacin, puede utilizar el Centro de administracin de dispositivos porttiles para ver el archivo de anotaciones cronolgicas de errores con fines de resolucin de problemas. Para determinar las acciones que se deben llevar a cabo en referencia a un determinado mensaje, consulte el apartado Mensajes de error en la pgina 140, que lista los mensajes por cdigo y ofrece una explicacin de cada mensaje y las acciones recomendadas que se pueden llevar a cabo para solucionar el problema en cuestin. Se crean archivos de anotaciones cronolgicas adicionales en forma de archivos de rastreo. Los archivos de rastreo se almacenan, por omisin, en el directorio %DSYINSTDIR\Server\logs. Esta ubicacin la define el valor Trace.Path del archivo DSYGdflt.properties. Estos archivos tienen el sufijo .trace. Puede utilizar un editor de texto para ver los archivos de rastreo. Para ver el archivo de anotaciones cronolgicas para diagnosticar problemas: 1. Inicie el Centro de administracin de dispositivos porttiles. 2. En el rbol de objetos, seleccione la carpeta Anotaciones cronolgicas para abrir el archivo de anotaciones cronolgicas. Cuando abra la carpeta Anotaciones cronolgicas, el panel de contenido mostrar la siguiente informacin: Indicacin de fecha y hora Este campo muestra la hora en que el mensaje se grab en el archivo de anotaciones cronolgicas. Cdigo Este campo muestra el nmero del mensaje. Descripcin Este campo muestra el texto del mensaje. El texto del mensaje se trunca a los 255 caracteres. Nombre de usuario Usuario con el que est asociada esta entrada del archivo de anotaciones cronolgicas, si es aplicable. Suscripcin Suscripcin con la que est asociada esta entrada del archivo de anotaciones cronolgicas, si es aplicable. Base de datos Base de datos con la que est asociada esta entrada del archivo de anotaciones cronolgicas, si es aplicable.

112

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Sist. Pral.:Puerto Identificacin de Sync Server que informa de esta entrada del archivo de anotaciones cronolgicas.

Definicin del nivel de rastreo


Por omisin, Sync Server slo registra mensajes de error en los archivos de rastreo. No obstante, con fines de diagnstico, es posible que desee activar el rastreo para incluir informacin ms detallada. Utilice DSYTrace para activar o desactivar el rastreo. El mandato DSYTrace cambia Trace.Level en el archivo DSYGdflt.properties en el directorio \%DSYINSTDIR%\Server\properties\com\ibm\mobileservices\. Para obtener informacin sobre opciones de rastreo adicionales, escriba DSYTrace sin opciones en la lnea de mandatos o abra el archivo DSYGdflt.properties en un editor de texto y modifique los parmetros Trace.var, donde var es una variable de parmetro especfica. 1. Para guardar todos los mensajes de rastreo en un archivo .trace, active el rastreo. a. Abra un indicador de mandatos. b. Cambie al directorio %DSYINSTDIR%/Server/bin. c. En el indicador de mandatos, escriba: DSYTrace 1 -console 2. Para guardar slo los mensajes de error en un archivo .trace, desactive el rastreo. a. Abra un indicador de mandatos. b. Cambie al directorio %DSYINSTDIR%/Server/bin. c. En el indicador de mandatos, escriba: DSYTrace 0 -console

Visualizacin del archivo de anotaciones cronolgicas en el cliente


Si utiliza DB2 Sync en un dispositivo Palm o en un emulador de Palm, se mantendr un archivo de anotaciones cronolgicas (LOGDB-ISYN.pdb). Para ver el archivo de anotaciones cronolgicas en la aplicacin DB2 Sync, pulse el botn Anot. cron.. Si desea guardar el contenido del archivo con fines de depuracin, utilice cualquier programa de utilidad que pueda mostrar el contenido de un archivo .pdb para abrir este archivo. El contenido del archivo de anotaciones cronolgicas de sincronizacin se sobregraba cada vez que se inicia una nueva sincronizacin. Adems del archivo de anotaciones cronolgicas de sincronizacin que DB2 Sync proporciona, el motor de sincronizacin genera un archivo de rastreo denominado trace-isyn.

Eliminacin automtica de entradas del archivo de anotaciones cronolgicas de errores


Puede especificar cuntos das se deben guardar las entradas del archivo de anotaciones cronolgicas de errores en el Centro de administracin de dispositivos porttiles. Las entradas del archivo de anotaciones cronolgicas con una antigedad superior al nmero de das especificado se eliminan automticamente. Esta caracterstica ayuda a mantener un tamao reducido del archivo de anotaciones cronolgicas de errores.
Resolucin de problemas

113

Para eliminar entradas del archivo de anotaciones cronolgicas de errores automticamente: 1. Utilice la herramienta dsysetproperty para establecer la propiedad Log.KeepDays de DSYGdflt. 2. Tambin puede establecer un nmero mximo de entradas que se almacenarn en el archivo de anotaciones cronolgicas antes de que se produzca la eliminacin de entradas. Este nmero lo determina la propiedad DSYGdflt Log.PruneToSize, que tiene como valor por omisin 10.000 entradas.

Supervisin de la sincronizacin del cliente


Puede utilizar las herramientas, los programas de utilidad y las caractersticas siguientes para obtener informacin sobre la actividad de sincronizacin del cliente: v Programa de utilidad de diagnstico v Recopilacin de informacin de sincronizacin del cliente v Supervisor de sincronizacin Utilizando esta informacin, puede generar informes que pueden ayudarle a supervisar y analizar el funcionamiento y el rendimiento de las sincronizaciones del cliente.

Uso del programa de utilidad de diagnstico


El programa de utilidad de diagnstico recupera datos del almacn de mensajes. La herramienta de utilidad comprueba el estado de sincronizacin de cada suscripcin con la que el usuario est asociado y comprueba si la recuperacin es necesaria. Si lo es, la herramienta recupera y graba el estado de recuperacin en un archivo de salida. Este programa de utilidad se puede ejecutar antes de suprimir o restablecer un dispositivo o un ID de usuario para recopilar datos que puedan ayudar a diagnosticar problemas de sincronizacin del cliente. Para utilizar el programa de utilidad de diagnstico: 1. Abra una ventana de mandatos en un sistema en el que se est ejecutando DB2 Everyplace sync server. 2. Ejecute el mandato DYSDiagnose. El mandato tiene la siguiente lista de argumentos: usuario Especifica el usuario. -farchivo Especifica un archivo para almacenar la salida generada por la herramienta. Si no se especifica ningn nombre de archivo, el programa de utilidad grabar la salida en la consola del sistema. El mandato siguiente invoca DSYDiagnose especificando como usuario nurse1 y como archivo de salida c:\diagnosis_report\nurse1_report.txt. DSYDiagnose nurse1 -fc:\diagnosis_report\nurse1_report.txt

Uso del programa de utilidad de recuperacin


Para DB2 Everyplace Sync Server, una tarea es una de las dos acciones que se indican a continuacin: v La preparacin de un mensaje para enviarlo a un dispositivo porttil.

114

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

v Guardar datos de un dispositivo porttil en la base de datos Cuando el intento de sincronizacin de un cliente falla, se puede utilizar el programa de utilidad de recuperacin para rehacer las tareas de Sync Server reconstruyendo los mensajes o guardando cambios en la base de datos. El programa de utilidad de recuperacin y Sync Server se pueden ejecutar a la vez sin causar conflictos. Para utilizar el programa de utilidad de recuperacin: 1. Abra una ventana de mandatos en un sistema en el que se est ejecutando DB2 Everyplace Sync Server. El mandato se instala por omisin en C:\Archivos de programa\IBM\DB2Everyplace\Server\bin (Windows). 2. Ejecute el mandato DYSRecovery. El mandato utiliza un argumento: bd_rplica Especifica la base de datos de rplica. El siguiente mandato invoca DSYRecovery especificando M_VN2 como base de datos de rplica. Este ejemplo enva resultados a la consola. DSYRecovery M_VN2
Recovery task for Mirror DB M_VN2 is successfully executed.

Recopilacin de informacin de sincronizacin


DB2 Everyplace Sync Client puede recopilar informacin sobre sesiones de sincronizacin, incluyendo datos de estadsticas, estado y rastreo y, a continuacin, cargarla en el servidor utilizando una suscripcin de carga normal. El conjunto de suscripcin DSYCLIENTSTAT_SET, que incluye la suscripcin de carga DSYCLIENTSTAT, se crea automticamente al instalar DB2 Everyplace. Tras la instalacin, puede asociar el conjunto de suscripcin con grupos o usuarios especficos, permitindoles utilizar esta caracterstica. Esta caracterstica recopila un amplia gama de informacin de sincronizacin, como la hora de inicio de la sincronizacin, su duracin, qu suscripciones se sincronizan, su estado, el tamao de los cambios de datos transmitidos, el tiempo para procesar los datos y los rastreos de clientes. Esta caracterstica recopila muchos ms datos que la tabla DSY.LOG, que slo registra la hora de inicio de la sincronizacin y si la sincronizacin ha finalizado. Adems, los archivos de anotaciones cronolgicas de la tabla DSY.LOG se desaprobarn en futuros releases.

Habilitacin de la suscripcin de estadsticas de sincronizacin del cliente


El conjunto de suscripcin DSYCLIENTSTAT_SET incluye la suscripcin de carga DSYCLIENTSTAT que permite a los dispositivos cliente enviar estadsticas de sincronizacin a Sync Server. Mediante la asociacin de dicho conjunto de suscripcin con un grupo, se permite a los usuarios de dicho grupo utilizar la caracterstica de carga de informacin de sincronizacin del cliente. Para habilitar la suscripcin de estadsticas de sincronizacin del cliente: 1. Inicie el Centro de administracin de dispositivos porttiles. 2. Pulse Grupos en el rbol de objetos. 3. Pulse con el botn derecho del ratn sobre el grupo que desee cambiar y, a continuacin, seleccione Editar en el men de contexto.
Resolucin de problemas

115

4. Seleccione DSYCLIENTSTAT_SET en la lista Conjuntos de suscripcin disponibles. 5. Pulse el botn > para aadir DSYCLIENTSTAT_SET a la lista Conjuntos de suscripcin seleccionados. 6. Seleccione el recuadro de seleccin Habilitar sincronizacin. 7. Pulse Bien.

Habilitacin de la carga del rastreo de sincronizacin por parte de los usuarios


Despus de habilitar a un grupo de usuarios para la carga de informacin de sincronizacin del cliente, puede configurar el grupo para que tambin cargue el rastreo de sincronizacin del cliente, que est desactivado por omisin. La carga del rastreo del cliente se controla mediante propiedades de filtros de datos predefinidas que se pueden cambiar utilizando el Centro de administracin de dispositivos porttiles o la herramienta de realizacin de scripts XML. v Establecimiento de propiedades de estadsticas de sincronizacin utilizando el Centro de administracin de dispositivos porttiles v Establecimiento de propiedades de estadsticas de sincronizacin utilizando la herramienta de realizacin de scripts XML en la pgina 117 Establecimiento de propiedades de estadsticas de sincronizacin utilizando el Centro de administracin de dispositivos porttiles: Para configurar el momento en que el cliente recopilar y cargar datos de rastreo de sincronizacin, establezca propiedades de filtro de datos en el panel Grupo del Centro de administracin de dispositivos porttiles. Nota: Las mismas propiedades tambin se pueden definir en el panel Usuario, que sobregrabar los valores de grupo. Para establecer propiedades de estadsticas de sincronizacin utilizando el Centro de administracin de dispositivos porttiles: 1. Inicie el Centro de administracin de dispositivos porttiles. 2. Pulse Grupos en el rbol de objetos. 3. Pulse con el botn derecho del ratn sobre el grupo que desee cambiar y, a continuacin, seleccione Editar en el men de contexto. 4. Pulse la pestaa Filtro de datos en el cuaderno Cambiar grupo. 5. Pulse un elemento de la columna Nombre de parmetro. 6. Pulse Cambiar. 7. Especifique un valor nuevo en la ventana Cambiar filtro de datos. 8. Pulse Bien para cerrar la ventana Cambiar filtro de datos. 9. Pulse Bien. Las siguientes propiedades determinan el momento en que el cliente debe recopilar y cargar los datos de rastreo de sincronizacin. isync.info.limit.count Especifica el nmero de filas de informacin del cliente (incluye tanto estadsticas como rastreo) que se deben recopilar antes de cargar datos en el servidor. Cuando se llega al lmite, el cliente para de recopilar datos hasta que se cargan los datos existentes. El lmite por omisin es de 5000 filas.

116

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

isync.trace.collect.status Especifica si el cliente debe guardar el rastreo del cliente en la Base de datos de control del cliente o simplemente descartarlo. Los valores soportados para esta propiedad son los siguientes: v none - no recopilar el rastreo de sincronizacin (es el valor por omisin) v error - recopilar el rastreo de sincronizacin slo si hay un error v all - recopilar siempre el rastreo. isync.trace.upload Especifica si el cliente debe cargar el rastreo del cliente de la Base de datos de control del cliente a la Base de datos de carga. Los valores soportados para esta propiedad son yes y no. No es el valor por omisin. Nota: Si la informacin recopilada llega al lmite (establecido mediante la propiedad isync.info.limit.count), el cliente para de recopilar informacin de sincronizacin nueva. Si se establece no como valor de isync.trace.upload, nunca se recopilar informacin nueva. Establecimiento de propiedades de estadsticas de sincronizacin utilizando la herramienta de realizacin de scripts XML: El script XML que establece las propiedades de estadsticas de sincronizacin iniciales se instala por omisin en %DSYINSTDIR%\config\template\server\dsyclientstat.xml (Windows). Puede utilizar la herramienta de realizacin de scripts XML para cambiar estas propiedades. Para establecer propiedades de estadsticas de sincronizacin utilizando la herramienta de realizacin de scripts XML: El siguiente script establece propiedades para un grupo (G11) y un usuario (nurse5).
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting/mdas3.dtd"> <Root> <AlterGroup> <Name>G11</Name> <Group> <AddDataFilter> <Name>isync.trace.collect.status</Name> <Value>error</Value> </AddDataFilter> <AddDataFilter> <Name>isync.trace.upload</Name> <Value>yes</Value> </AddDataFilter> <AddDataFilter> <Name>isync.info.limit.count</Name> <Value>15000</Value> </AddDataFilter> </Group> </AlterGroup> <AlterUser> <Name>nurse5</Name> <User> <OverrideDataFilter> <Name>isync.trace.collect.status</Name> <Value>all</Value> </OverrideDataFilter> <OverrideDataFilter>
Resolucin de problemas

117

<Name>isync.trace.upload</Name> <Value>yes</Value> </OverrideDataFilter> <OverrideDataFilter> <Name>isync.info.limit.count</Name> <Value>3000</Value> </OverrideDataFilter> </User> </AlterUser> </Root>

Configuracin de bases de datos de informacin de sincronizacin en el cliente


Para permitir la carga de informacin de sincronizacin, el cliente utiliza dos bases de datos lgicas: v La base de datos del control del cliente, para recopilar informacin de sincronizacin v La base de datos de destino por omisin, para cargar informacin de sincronizacin. La base de datos de destino por omisin y la base de datos de control del cliente pueden residir en la misma base de datos fsica. Una aplicacin puede configurar estas bases de datos definiendo las propiedades isync.db.* y target.db.* al abrir un descriptor de contexto de servicio. v Configuracin de las bases de datos de informacin de sincronizacin del cliente utilizando la API Java v Configuracin de las bases de datos de informacin de sincronizacin del cliente utilizando la API C en la pgina 119 Configuracin de las bases de datos de informacin de sincronizacin del cliente utilizando la API Java: DB2 Everyplace Sync Client almacena estadsticas de sincronizacin en dos bases de datos: la base de datos de control del cliente almacena datos recopilados durante la sincronizacin y la base de datos de destino por omisin almacena datos recopilados para la transferencia. Una aplicacin puede especificar caractersticas de dichas bases de datos estableciendo propiedades al abrir el descriptor de contexto de servicio. Para configurar las bases de datos de informacin de sincronizacin del cliente utilizando la API Java: 1. Llame a createSyncService. 2. Establezca valores para las siguientes propiedades. isync.db.driver Controlador JDBC para la Base de datos de control del cliente isync.db.url URL (va de acceso) de la Base de datos de control del cliente isync.db.username Nombre de usuario para la Base de datos de control del cliente isync.db.password Contrasea para la Base de datos de control del cliente target.db.driver Controlador JDBC para la base de datos de destino por omisin

118

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

target.db.url URL (va de acceso) de la base de datos de destino por omisin target.db.username Nombre de usuario para la base de datos de destino por omisin target.db.password Contrasea para la base de datos de destino por omisin Configuracin de las bases de datos de informacin de sincronizacin del cliente utilizando la API C: DB2 Everyplace Sync Client almacena estadsticas de sincronizacin en dos bases de datos: la base de datos de control del cliente almacena datos recopilados durante la sincronizacin y la base de datos de destino por omisin almacena datos recopilados para la transferencia. Una aplicacin puede especificar caractersticas de dichas bases de datos estableciendo propiedades al abrir el descriptor de contexto de servicio. Para configurar las bases de datos de informacin de sincronizacin del cliente utilizando la API C: 1. Llame a iscServiceOpenEx. 2. Establezca valores para las siguientes propiedades. isync.db.driver Controlador JDBC para la Base de datos de control del cliente isync.db.url URL (va de acceso) de la Base de datos de control del cliente isync.db.username Nombre de usuario para la Base de datos de control del cliente isync.db.password Contrasea para la Base de datos de control del cliente target.db.driver Controlador JDBC para la base de datos de destino por omisin target.db.url URL (va de acceso) de la base de datos de destino por omisin target.db.username Nombre de usuario para la base de datos de destino por omisin target.db.password Contrasea para la base de datos de destino por omisin

Consulta de tablas de informacin de sincronizacin del cliente


La informacin de sincronizacin del cliente transferida se almacena en tres tablas en la base de datos DSYCSTAT: DSY.SYNC_STATS, DSY.SYNC_SUBS_STATS y DSY.SYNC_TRACE. Sus estructuras de tabla estn disponibles en el apartado Estructuras de tablas de estadsticas de sincronizacin del cliente. Para consultar las tablas de estadsticas de sincronizacin: El ejemplo siguiente devuelve el nmero y el estado de las operaciones de sincronizacin realizadas por un determinado usuario (nurse1) durante un perodo de tiempo especfico.

Resolucin de problemas

119

SELECT SyncOpID, ServerTS, Status FROM DSY.SYNC_STATS WHERE UserID = nurse1 AND ServerTS >= 2004-01-01-0.0.0 AND ServerTS <= 2004-12-31-23.59.59

El ejemplo siguiente averigua cuntas suscripciones ha sincronizado satisfactoriamente un usuario (nurse1).


SELECT count(*) FROM DSY.SYNC_SUBS_STATS WHERE UserID = nurse1 AND Status = S

El ejemplo siguiente obtiene el rastreo del cliente (si se ha activado en el Centro de administracin de dispositivos porttiles) para una operacin de sincronizacin especfica (SyncOpID = 10) que un usuario (nurse1) ha realizado.
SELECT LogTime, DSYCode, Msg FROM DSY.SYNC_TRACE WHERE SyncOpID = 10 AND UserID = nurse1 ORDER BY LineNo

Uso del informe de estadsticas de sincronizacin de ejemplo


Requisitos previos: v Se debe habilitar la suscripcin de estadsticas de sincronizacin del cliente para grupos especficos y recopilar datos de sincronizacin antes de utilizar el informe de ejemplo. v Software necesario: una aplicacin (por ejemplo, Microsoft Excel) que pueda leer archivos de hoja de datos XSL y ejecutar macros de hojas de datos. Para utilizar el informe de estadsticas de sincronizacin de ejemplo: 1. Abra Sample_Sync_Report.xsl. En una instalacin normal de DB2 Everyplace, este archivo se instala en C:\Archivos de programa\IBM\DB2Everyplace\Server\syncreport (Windows). 2. Pulse sobre el texto Need help? Click here. (Necesita ayuda? Pulse aqu.) para ver instrucciones para especificar parmetros, recuperar datos y generar informes.

Estructuras de tablas de estadsticas de sincronizacin del cliente


La informacin de sincronizacin del cliente transferida se almacena en tres tablas en la base de datos DSYCSTAT: DSY.SYNC_STATS, DSY.SYNC_SUBS_STATS y DSY.SYNC_TRACE. Este apartado presenta las estructuras de las tablas de estadsticas de sincronizacin del cliente de la base de datos DSYCSTAT: v DSY.SYNC_STATS v DSY.SYNC_SUBS_STATS v DSY.SYNC_TRACE
Tabla 29. Estructura de la tabla DSY.SYNC_STATS Nombre de la columna UserID DeviceID Tipo de columna VARCHAR(254) VARCHAR(56) Descripcin Nombre de usuario de Sync Client. ID del dispositivo.

120

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 29. Estructura de la tabla DSY.SYNC_STATS (continuacin) Nombre de la columna SyncOpID ClientTS Tipo de columna INT TIMESTAMP Descripcin ID de operacin de sincronizacin. Indicacin de la hora inicial (en el huso horario local del cliente) en el dispositivo. Indicacin de la hora GMT (Hora media de Greenwich) en el servidor cuando respondi a la primera peticin del cliente. Tiempo total de sincronizacin (en milisegundos). Estado de sincronizacin: v S : Satisfactorio v F : Ha fallado v C : Cancelado v X : Inhabilitado v N : Sin cambios Tabla 30. Estructura de la tabla DSY.SYNC_SUBS_STATS Nombre de la columna UserID DeviceID SyncOpID SessionID SubsID SubsName ClientTS Tipo de columna VARCHAR(254) VARCHAR(56) INT INT VARCHAR(30) VARCHAR(20) TIMESTAMP Descripcin Nombre de usuario de Sync Client. ID del dispositivo. ID de operacin de sincronizacin. ID de sesin. ID de suscripcin. Nombre de suscripcin. Indicacin de la hora inicial (en el huso horario local del cliente) en el dispositivo para la sincronizacin de la suscripcin. Indicacin de la hora GMT (Hora media de Greenwich) en el servidor cuando respondi a la primera peticin del cliente para sincronizar la suscripcin. Modalidad de sincronizacin: v R : Renovar v S : Sincronizar

ServerTS

TIMESTAMP

SyncTime

INT

Status

CHAR(1)

ServerTS

TIMESTAMP

SyncMode

CHAR(1)

Resolucin de problemas

121

Tabla 30. Estructura de la tabla DSY.SYNC_SUBS_STATS (continuacin) Nombre de la columna Resume Tipo de columna CHAR(1) Descripcin Indica si la sesin reanuda una sesin anteriormente cancelada. v T : Verdadero (s) v F : Falso (no) Status CHAR(1) Estado de sincronizacin: v S : Satisfactorio v F : Ha fallado v C : Cancelado DSYCError INT Cdigo de error de DSYC si la sincronizacin falla o 0 si la sincronizacin resulta satisfactoria. Nmero total de peticiones que el cliente ha enviado al servidor durante la sincronizacin. Nmero total de peticiones en las que el cliente no ha recibido los datos solicitados. Nmero total de bytes enviados del cliente al servidor durante la sincronizacin. Nmero total de bytes que el cliente ha recibido del servidor durante la sincronizacin. Tiempo total (en milisegundos) que el cliente tarda (en el transporte de red) para enviar los datos del cliente al servidor. Tiempo total (en milisegundos) que el cliente espera hasta recibir los datos del servidor. Tiempo total (en milisegundos) que el cliente tarda en captar los cambios del cliente y crear un mensaje para enviarlo al servidor. Tiempo total (en milisegundos) que el cliente tarda en aplicar las operaciones en los mensajes del servidor. Tiempo total de sincronizacin para la sesin (en milisegundos).

TotalRequests

INT

FailedRequests

INT

BytesSent

INT

BytesRecv

INT

SendTime

INT

RecvTime

INT

BuildTime

INT

ApplyTime

INT

SyncTime

INT

122

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 30. Estructura de la tabla DSY.SYNC_SUBS_STATS (continuacin) Nombre de la columna UnitsUploaded Tipo de columna INT Descripcin Nmero total de unidades lgicas de los cambios locales que el cliente carga en el servidor. Su semntica vara segn el tipo de suscripcin: Suscripcin de configuracin v 0 : sin cambios de configuracin v 1 : cualquier cambio de configuracin Suscripcin de tabla (JDBC o carga) Nmero de registros. Suscripcin de archivo Tamao real del archivo (en bytes). UnitsApplied INT Nmero total de unidades lgicas de los cambios del servidor que el cliente aplica en los datos de destino. Suscripcin de configuracin v 0 : sin cambios de configuracin v 1 : cualquier cambio de configuracin Suscripcin de tabla (JDBC o carga) Nmero de registros. Suscripcin de archivo Tamao real del archivo (en bytes). Tabla 31. Estructura de la tabla DSY.SYNC_TRACE Nombre de la columna UserID DeviceID SyncOpID LineNo Tipo de columna VARCHAR(254) VARCHAR(56) INT INT Descripcin Nombre de usuario de Sync Client. ID del dispositivo. ID de operacin de sincronizacin. Nmero de lnea del rastreo.

Resolucin de problemas

123

Tabla 31. Estructura de la tabla DSY.SYNC_TRACE (continuacin) Nombre de la columna LogTime Tipo de columna TIMESTAMP Descripcin Indicacin de la hora (en el huso horario local del cliente) de la entrada del archivo de anotaciones cronolgicas. Cdigo de error de DSY. Mensaje de rastreo.

DSYCode Msg

CHAR(9) VARCHAR(255)

Sincronizacin del servidor


Acerca de Synchronization Monitor
Synchronization Monitor muestra el estado de sincronizacin de los usuarios de un servidor de sincronizacin DB2 Everyplace Sync Server. Synchronization Monitor se puede utilizar para realizar las siguientes tareas: v Establecer una renovacin automtica v Personalizar la visualizacin de las columnas v Exportar datos v Uso del informe de estadsticas de sincronizacin de ejemplo en la pgina 120 v Estructuras de tablas de estadsticas de sincronizacin del cliente en la pgina 120

Establecimiento de una frecuencia de renovacin automtica


Para establecer la frecuencia de renovacin automtica: 1. Pulse la flecha hacia abajo en el campo Seconds (Segundos). 2. Escriba o seleccione el nmero de segundos que desee utilizar como frecuencia de renovacin. 3. Pulse Refresh (Renovacin).

Personalizacin de la visualizacin de las columnas


Para personalizar la visualizacin de las columnas en la ventana Sync Status (Estado de sincronizacin): 1. Seleccione View (Ver) Customize Columns (Personalizar columnas). Se abrir la ventana Customize Columns (Personalizar columnas). 2. Seleccione el recuadro de seleccin junto a la columna que desee mover. 3. Pulse Move Up (Subir) o Move Down (Bajar) hasta que la columna seleccionada se encuentre en la posicin deseada. 4. Pulse OK (Bien).

Exportacin de datos
Para exportar datos de la ventana Sync Status (Estado de sincronizacin) a un archivo de texto: 1. Pulse y resalte las filas que desee exportar. 2. Seleccione Edit (Editar) Export (Exportar). Se abrir la ventana File Save (Guardar archivo). 3. Escriba o seleccione el directorio en el que desee guardar el archivo de texto.

124

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

4. En el campo Name (Nombre), escriba el nombre del archivo de texto. 5. Pulse OK (Bien).

Cmo proporcionar lgica de manejo de errores para salidas de usuario


Frecuentemente, los mensajes de error de los archivos de anotaciones cronolgicas del Centro de administracin de dispositivos porttiles requieren que el usuario lleve a cabo alguna accin para resolver el problema indicado en el texto del mensaje. Para simplificar la gestin de la sincronizacin cotidiana, puede optar por aadir su propia lgica para realizar automticamente estas acciones cuando se emita un determinado mensaje de error. Por ejemplo, supongamos que desea incluir una salida de usuario que enve un mensaje a su buscapersonas cuando se emita el mensaje DSYD000E. Puede escribir un programa denominado busca.exe que marque el nmero de su buscapersonas e incluya dicho nmero como parmetro. La lnea del archivo DSYUserExits sera parecida a la siguiente:
DSYD000E=busca.exe number=9980674

Tambin puede incluir los siguientes parmetros y variables con el mandato: ID MSG Utilice este parmetro para grabar el nmero del mensaje. Como valor del parmetro, especifique la variable DSYID. Utilice este parmetro para grabar el texto del mensaje. Como valor del parmetro, especifique DSYMSG para grabar el texto real del mensaje o DSYMSG_ para grabar el texto del mensaje pero convertir todos los espacios en blando del texto en caracteres de subrayado.

El ejemplo siguiente llama al mismo buscapersonas, pero enva el nmero del mensaje y su texto como parmetros para que aparezcan en la pantallas del buscapersonas:
DSYD000E=busca.exe number=9980674 id=dsyid msg=dsymsg

Sync Server no comprueba la validez de las entradas en el archivo de propiedades DSYUserExits ni valida que la accin asociada con el mensaje se haya realizado. Utilice la herramienta del archivo DSYUserExitsTest.bat para probar una rutina de salida de usuario. Utilice el formato siguiente para realizar la prueba:
DSYUserExitsTest.bat id_mensaje_dsy

donde id_mensaje_dsy es el nmero de mensaje que se desea simular. Si no proporciona un ID de mensaje, aparecer una lista de ID de mensaje disponibles. Ejemplo de mandato con el ID de mensaje DSYS001I:
DSYUserExitsTest.bat dsys001i

Se genera el mensaje DSYS001I y se inicia la salida de usuario definida para este nmero de mensaje. Ejemplo de mandato con un nmero de mensaje no vlido:
DSYUserExitsTest.bat zzz

La salida de la herramienta DSYUserExitsTest ser la siguiente:


Resolucin de problemas

125

DSYUserExitsTest id de mensaje DSY ZZZ no encontrado. Los id de mensaje DSY vlidos son: DSYA000E, DSYA001E, DSYD000E, DSYD002E, DSYD006E, DSYD007E, ...

Para definir el proceso automtico de errores: 1. Abra el archivo DSYUserExits.properties para editarlo. Este archivo asocia un nmero de mensaje con una rutina o un programa que se ejecuta cuando el nmero de mensaje en cuestin se graba en el archivo de anotaciones cronolgicas. Este archivo de propiedades soporta muchos parmetros distintos.
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Formatos: {ID de mensaje de DSY}={clase a ejecutar} {parmetros de entorno} {ID de mensaje de DSY}={mandato a ejecutar} {parmetros de entorno} donde {ID de mensaje de DSY}: es el ID de mensaje de DSY* para el que desea definir una salida de usuario (por ejemplo, DSYD000E) {clase a ejecutar}: es el nombre de la clase Java que se debe ejecutar. Esta clase debe implementar com.ibm.mobileservices.DSYUserExitsInterface {mandato a ejecutar}: es el nombre del mandato que se debe ejecutar (por ejemplo, pager.exe) {parmetros de entorno}: una serie de parmetro que se deben pasar a la clase o al mandato que se debe ejecutar Distintivos opcionales <DSYID> = <DSYIDMSG> = <DSYIDMSG_> = <DSYMSG> <DSYMSG_> = = del mandato: id del mensaje texto del mensaje del id de mensaje texto del mensaje del id de mensaje, pero con todos los espacios en blanco convertidos en caracteres de subrayado texto del mensaje texto del mensaje del id de mensaje, pero con todos los espacios en blanco convertidos en caracteres de subrayado. direccin IP del servidor (por ejemplo, 9.112.19.143) nombre del servidor (por ejemplo, mpauser.stl.ibm.com)

<SERVER_IPADDRESS> = <SERVER_NAME> =

Consulte la seccin de mensajes para conocer los ID de mensaje de DSY existentes. Ejemplo 1: Si desease salidas de usuario para DSYD000E, debera aadir una lnea similar a la siguiente: DSYD000E=pager.exe number=5551234 id=<DSYID> msg=<DSYMSG_> Al emitirse un mensaje DSYD000E, se ejecutara el mandato pager.exe con con dos parmetros de entorno establecidos: number=5551234, id=DSYD000E y msg=texto mensaje DSY, sustituyendo un carcter de subrayado (_) por espacios en blanco. Ejemplo 2: Si desease que se ejecutara una clase al detectar DSYD020E, debera aadir una lnea similar a la siguiente: DSYD020E=com.ibm.mobileservices.DSYUserExitsSample.class Al emitirse un mensaje DSYD020E, se ejecutara la clase com.ibm.mobileservices.DSYUserExitsSample.

La accin que se debe realizar debe ser una referencia a una rutina o a un programa vlido. 2. Al final del archivo, asocie un nmero de mensaje con una accin que se deber realizar cuando dicho mensaje se grabe en el archivo de anotaciones

126

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

cronolgicas. La accin puede ser un mandato (un archivo ejecutable o un archivo de proceso por lotes) o una clase Java. Utilice el formato siguiente:
nmero_mensaje=accin parmetro=valor

donde: nmero_mensaje Nmero del mensaje. Consulte el apartado Mensajes de error en la pgina 140 para conocer los nmeros de los mensajes y su texto asociado. accin Es el archivo que hace referencia al mandato o a la clase Java a la que se llama. La clase Java debe implementar com.ibm.mobileservices.DSYUserExitsInterface.

parmetro=valor Es una serie de conjuntos de parmetros (por ejemplo, lastname=Doe firstname=John), en la que cada conjunto est separado por un espacio.

Resolucin de problemas

127

128

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Consulta
Este captulo proporciona informacin de consulta.

Correlaciones de tipos de datos entre DB2 Everyplace y fuentes de datos


Este tema muestra los tipos de datos de rplica y de cliente con los que se correlacionan diversos tipos de datos de fuentes de datos de proceso de fondo, incluidos los siguientes: v DB2 Universal Database en la pgina 130 v Informix en la pgina 131 v Oracle en la pgina 134 v Microsoft SQL Server en la pgina 135 v Sybase en la pgina 136 v Lotus Domino en la pgina 132 v Restricciones de las correlaciones de tipos de datos en la pgina 136 v Microsoft SQL Server en la pgina 135 v IBM Cloudscape Versin 10 Nota: 1. Debido a las diferencias inherentes entre tipos de datos no DB2 y tipos de datos DB2, puede que la creacin de determinadas suscripciones y la duplicacin o sincronizacin de determinados valores no resulte posible. 2. Si un tipo de datos no aparece listado en las tablas de correlaciones de tipos de datos, significa que no est soportado.

IBM Cloudscape Versin 10


La Tabla 32 lista las correlaciones de tipos de datos que se realizan cuando el tipo de datos fuente es un tipo de datos de Cloudscape.
Tabla 32. Correlacin de tipos de datos fuente de Cloudscape Tipo de datos fuente de IBM Cloudscape Versin 10 BIGINT BIT BIT VARYING BOOLEAN CHAR DATE DECIMAL DOUBLE PRECISION FLOAT Tipo de datos de rplica de DB2 BIGINT no soportado LONG VARCHAR FOR BIT DATA SMALLINT CHAR DATE DECIMAL FLOAT FLOAT Tipo de datos de dispositivo de DB2 Everyplace VARCHAR no soportado BLOB SMALLINT CHAR DATE DECIMAL VARCHAR VARCHAR Tipo de datos de dispositivo de IBM Cloudscape Versin 10 BIGINT no soportado BIT VARYING SMALLINT CHAR DATE DECIMAL DOUBLE PRECISION FLOAT

Copyright IBM Corp. 1998, 2004

129

Tabla 32. Correlacin de tipos de datos fuente de Cloudscape (continuacin) Tipo de datos fuente de IBM Cloudscape Versin 10 INT LONG BIT VARYING NATIONAL CHAR NATIONAL CHAR VARYING NUMERIC REAL SMALLINT TIME TIMESTAMP TINYINT VARCHAR Tipo de datos de rplica de DB2 INT LONG VARCHAR FOR BIT DATA no soportado no soportado NUMERIC REAL SMALLINT TIME TIMESTAMP SMALLINT VARCHAR Tipo de datos de dispositivo de DB2 Everyplace INT BLOB no soportado no soportado DECIMAL VARCHAR SMALLINT TIME TIMESTAMP SMALLINT VARCHAR Tipo de datos de dispositivo de IBM Cloudscape Versin 10 INT LONG BIT VARYING no soportado no soportado NUMERIC REAL SMALLINT TIME TIMESTAMP SMALLINT VARCHAR

DB2 Universal Database


La Tabla 33 lista las correlaciones de tipos de datos que se realizan cuando el tipo de datos fuente es un tipo de datos de DB2 Universal Database.
Tabla 33. Correlacin de tipos de datos fuente de DB2 Universal Database Tipo de datos de dispositivo de DB2 Everyplace VARCHAR no soportado CHARACTER no soportado no soportado no soportado DATE no soportado DECIMAL VARCHAR VARCHAR VARCHAR CHARACTER INTEGER Tipo de datos de dispositivo de IBM Cloudscape Versin 10 BIGINT no soportado CHARACTER no soportado no soportado no soportado DATE no soportado DECIMAL DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION no soportado INTEGER

Tipo de datos fuente Tipo de datos de de DB2 UDB rplica de DB2 UDB BIGINT BLOB(n [K|M|G]) CHAR(n) CHAR(n) FOR BIT DATA CLOB(n [K|M|G]) DATALINK DATE DBCLOB(n [K|M|G]) DECIMAL(p,s) DOUBLE DOUBLE PRECISION FLOAT GRAPHIC(n) INTEGER BIGINT no soportado CHARACTER no soportado no soportado no soportado DATE no soportado DECIMAL FLOAT FLOAT FLOAT GRAPHIC INTEGER

130

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 33. Correlacin de tipos de datos fuente de DB2 Universal Database (continuacin) Tipo de datos de dispositivo de DB2 Everyplace VARCHAR BLOB VARCHAR VARCHAR SMALLINT TIME TIMESTAMP VARCHAR BLOB VARCHAR Tipo de datos de dispositivo de IBM Cloudscape Versin 10 LONG VARCHAR LONG BIT VARYING no soportado REAL SMALLINT TIME TIMESTAMP VARCHAR BIT VARYING no soportado

Tipo de datos fuente Tipo de datos de de DB2 UDB rplica de DB2 UDB LONG VARCHAR LONG VARCHAR FOR BIT DATA LONG VARGRAPHIC REAL SMALLINT TIME TIMESTAMP VARCHAR(n) VARCHAR(n) FOR BIT DATA VARGRAPHIC(n) LONG VARCHAR LONG VARCHAR FOR BIT DATA LONG VARGRAPHIC REAL SMALLINT TIME TIMESTAMP VARCHAR VARCHAR() FOR BIT DATA VARGRAPHIC

Informix
La Tabla 34 lista las correlaciones de tipos de datos que se realizan cuando el tipo de datos fuente es un tipo de datos de Informix.
Tabla 34. Correlacin de tipos de datos fuente de Informix Tipo de datos de dispositivo de DB2 Everyplace no soportado no soportado no soportado CHARACTER VARCHAR no soportado DATE TIME TIMESTAMP DATE TIMESTAMP TIMESTAMP Tipo de datos de dispositivo de IBM Cloudscape Versin 10 no soportado no soportado no soportado CHARACTER VARCHAR no soportado DATE TIME TIMESTAMP DATE TIMESTAMP TIMESTAMP

Tipo de datos fuente Tipo de datos de de Informix rplica de DB2 UDB BLOB BOOLEAN BYTE CHAR(n) CHARACTER VARYING(m,r) CLOB DATE DATETIME HOUR TO SECOND DATETIME HOUR TO FRACTION DATETIME YEAR TO DAY DATETIME YEAR TO SECOND DATETIME YEAR TO FRACTION no soportado no soportado no soportado CHARACTER VARCHAR no soportado DATE TIME TIMESTAMP DATE TIMESTAMP TIMESTAMP

Consulta

131

Tabla 34. Correlacin de tipos de datos fuente de Informix (continuacin) Tipo de datos de dispositivo de DB2 Everyplace TIMESTAMP DECIMAL DECIMAL VARCHAR VARCHAR INTEGER CHARACTER Tipo de datos de dispositivo de IBM Cloudscape Versin 10 TIMESTAMP DECIMAL DECIMAL FLOAT BIGINT INTEGER CHARACTER

Tipo de datos fuente Tipo de datos de de Informix rplica de DB2 UDB DATETIME YEAR TO FRACTION(5) DECIMAL(p,s) DOUBLE PRECISION FLOAT(n) INT8 INTEGER INTERVAL largest_qualifier(p) TO smallest_qualifier(s) LVARCHAR MONEY(p,s) NCHAR(n) NUMERIC(p,s) NVARCHAR(m) REAL SERIAL(n) SERIAL8 SMALLFLOAT SMALLINT TEXT VARCHAR(m) TIMESTAMP DECIMAL DECIMAL FLOAT BIGINT INTEGER CHARACTER

VARCHAR DECIMAL CHARACTER NUMERIC VARCHAR REAL no soportado no soportado REAL SMALLINT no soportado VARCHAR

VARCHAR DECIMAL CHARACTER DECIMAL VARCHAR VARCHAR no soportado no soportado VARCHAR SMALLINT no soportado VARCHAR

VARCHAR DECIMAL CHARACTER NUMERIC VARCHAR REAL no soportado no soportado REAL SMALLINT no soportado VARCHAR

Lotus Domino
La Tabla 35 lista las correlaciones de tipos de datos que se realizan cuando el tipo de datos fuente es un tipo de Lotus Domino.
Tabla 35. Correlacin de tipos de datos fuente de Lotus Domino Tipo de datos de rplica de DB2 UDB CHARACTER DATE DECIMAL DOUBLE DOUBLE DOUBLE LONGVARCHAR Tipo de datos de dispositivo de DB2 Everyplace CHARACTER DATE DECIMAL VARCHAR VARCHAR VARCHAR VARCHAR

Domino CHAR(n) DATE DECIMAL[(p[,s])] DOUBLE PRECISION FLOAT(p) INTEGER LONGVARCHAR

132

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 35. Correlacin de tipos de datos fuente de Lotus Domino (continuacin) Tipo de datos de rplica de DB2 UDB DECIMAL DOUBLE SMALLINT TIME TIMESTAMP VARCHAR N/D N/D N/D N/D N/D N/D Tipo de datos de dispositivo de DB2 Everyplace DECIMAL VARCHAR SMALLINT TIME TIMESTAMP VARCHAR N/D N/D N/D N/D N/D N/D

Domino NUMERIC(p,s) REAL SMALLINT TIME TIMESTAMP VARCHAR(n) BIGINT BINARY BIT LONGVARBINARY TINYINT VARBINARY

Restricciones de las fuentes de datos Lotus Domino


Restricciones de las fuentes de datos Domino v Como mnimo, se debe seleccionar una clave primaria en cada tabla correspondiente a fuentes de datos Lotus Domino. Al seleccionar una clave primaria, utilice las reglas siguientes: Una misma columna no puede estar identificada ms de una vez. El nmero de columnas identificadas no debe ser superior a 16 y la suma de sus atributos de longitud no debe ser superior a 1024 No se puede utilizar una columna LONG VARCHAR como parte de la clave primaria Slo se puede definir una clave primaria para una tabla v Domino trata los siguientes nombre como palabras clave reservadas (no los utilice como nombres de columnas): NoteID NoteRef NoteCreated NoteModified NoteFile NoteForm NoteFormType NoteUNID NoteRefUNI NoteConflict NoteAccessed v El ID de Lotus Notes se debe establecer en Dont prompt for password (No solicitar contrasea). v La caracterstica de lgica personalizada no soporta la sincronizacin con fuentes Lotus Domino.

Consulta

133

v Si suprime una suscripcin JDBC de Lotus Domino del Centro de administracin de dispositivos porttiles, reinicie el Centro de administracin de dispositivos porttiles si desea crear otra suscripcin JDBC de Lotus Domino. v Puede pasar por alto sin problemas la excepcin de seguridad de System.exit() durante la inicializacin del controlador JDBC de Lotus Domino. v Slo debe haber una DB2 Everyplace Sync Server 8.2 con suscripciones definidas por cada servidor Lotus Domino. v Los nombres de columnas de bases de datos Lotus Domino deben estar en maysculas si se utilizan filtros verticales u horizontales. v Si se realizan mltiples conexiones con la base de datos Domino, es posible que sea necesario detener y reiniciar una o ms aplicaciones conectadas con el servidor Domino para liberar recursos bloqueados. v Al definir la columna de clave primaria, no utilice tipos de datos SMALLINT e INTEGER como columnas de clave primaria para suscripciones de bases de datos Domino. v Se pueden utilizar otras versiones de Lotus Domino Server/Client (6.x.x), pero no se han probado.

Oracle
La Tabla 36 lista las correlaciones de tipos de datos que se realizan cuando el tipo de datos fuente es un tipo de datos de Oracle.
Tabla 36. Correlacin de tipos de datos fuente de Oracle Tipo de datos de dispositivo de DB2 Everyplace no soportado no soportado CHARACTER no soportado TIMESTAMP no soportado no soportado no soportado no soportado no soportado DECIMAL no soportado BLOB no soportado no soportado TIMESTAMP no soportado VARCHAR Tipo de datos de dispositivo de IBM Cloudscape Versin 10 no soportado no soportado CHARACTER no soportado no soportado no soportado no soportado no soportado no soportado no soportado DECIMAL no soportado BIT VARYING no soportado no soportado TIMESTAMP no soportado VARCHAR

Tipo de datos fuente Tipo de datos de de Oracle rplica de DB2 BFILE BLOB CHAR(n) CLOB DATE FLOAT LONG LONG RAW NCHAR(n) NCLOB NUMBER(p,s) NVARCHAR2(n) RAW(n) REAL ROWID TIMESTAMP UROWID VARCHAR2(n) no soportado no soportado CHARACTER no soportado TIMESTAMP no soportado no soportado no soportado no soportado no soportado DECIMAL no soportado VARCHAR() BIT FOR DATA no soportado no soportado TIMESTAMP no soportado VARCHAR

134

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Microsoft SQL Server


La Tabla 37 lista las correlaciones de tipos de datos que se realizan cuando el tipo de datos fuente es Microsoft SQL Server. En DB2 Everyplace versin 8.1.4 y anteriores, la correlacin para los tipos de datos BIT de Microsoft SQL Server es incoherente entre las suscripciones JDBC y las de transferencia. En las suscripciones JDBC, el tipo de datos BIT de Microsoft SQL Server se correlaciona con el tipo de datos SMALLINT de DB2 Everyplace. En las suscripciones de transferencia, el tipo de datos BIT de Microsoft SQL Server se correlaciona con el tipo de datos VARCHAR(1) de DB2 Everyplace. En DB2 Everyplace versin 8.2, el tipo de datos BIT se correlaciona con SMALLINT en ambos casos. Si desea utilizar el mtodo antiguo, que tiene un comportamiento incoherente, ejecute el siguiente script y reinicie Sync Server: dsysetproperty DatatypeMappings Generic Target:* -7=12 VARCHAR
Tabla 37. Correlacin de tipos de datos de Microsoft SQL Server Tipo de fuente Microsoft SQL Server BIGINT BINARY BIT CHAR CURSOR DATETIME DECIMAL FLOAT IMAGE INT MONEY NCHAR NTEXT NUMERIC NVARCHAR REAL SMALLDATETIME SMALLINT SMALLMONEY TEXT TIMESTAMP TINYINT UNIQUEIDENTIFIER VARBINARY VARCHAR Tipo de datos de rplica de DB2 UDB BIGINT no soportado SMALLINT CHARACTER no soportado TIMESTAMP DECIMAL FLOAT no soportado INTEGER DECIMAL GRAPHIC no soportado DECIMAL VARGRAPHIC REAL TIMESTAMP SMALLINT DECIMAL no soportado no soportado SMALLINT no soportado no soportado VARCHAR Tipo de datos de dispositivo de DB2 Everyplace VARCHAR no soportado SMALLINT CHARACTER no soportado TIMESTAMP DECIMAL VARCHAR no soportado INTEGER DECIMAL CHARACTER no soportado DECIMAL VARCHAR VARCHAR TIMESTAMP SMALLINT DECIMAL no soportado no soportado SMALLINT no soportado no soportado VARCHAR Datos de dispositivo de IBM Cloudscape Versin 10 BIGINT no soportado SMALLINT CHARACTER no soportado TIMESTAMP DECIMAL FLOAT no soportado INTEGER DECIMAL CHARACTER no soportado DECIMAL VARCHAR REAL TIMESTAMP SMALLINT DECIMAL no soportado no soportado SMALLINT no soportado no soportado VARCHAR

Consulta

135

Sybase
La Tabla 38 lista las correlaciones de tipos de datos que se realizan cuando el tipo de datos fuente es un tipo de datos de Sybase.
Tabla 38. Correlacin de tipos de datos fuente de Sybase Tipo de datos de dispositivo de DB2 Everyplace no soportado SMALLINT CHARACTER TIMESTAMP DECIMAL VARCHAR VARCHAR BLOB INT DECIMAL CHARACTER DECIMAL VARCHAR VARCHAR TIMESTAMP SMALLINT DECIMAL VARCHAR no soportado BLOB VARCHAR Tipo de datos de dispositivo de IBM Cloudscape Versin 10 no soportado SMALLINT CHARACTER TIMESTAMP DECIMAL DOUBLE PRECISION DOUBLE PRECISION LONG BIT VARYING INT DECIMAL CHARACTER NUMERIC VARCHAR REAL TIMESTAMP SMALLINT DECIMAL LONG VARCHAR no soportado BIT VARYING VARCHAR

Tipo de datos fuente Tipo de datos de de Sybase rplica de DB2 BINARY(n) BIT CHAR(n) DATETIME DECIMAL[(p[,s])] DOUBLE PRECISION FLOAT(p) IMAGE INT MONEY NCHAR(n) NUMERIC(p,s) NVARCHAR(n) REAL SMALLDATETIME SMALLINT SMALLMONEY TEXT TINYINT VARBINARY(n) VARCHAR(n) no soportado SMALLINT CHARACTER TIMESTAMP DECIMAL FLOAT FLOAT LONG VARCHAR FOR BIT DATA INTEGER DECIMAL CHARACTER NUMERIC VARCHAR REAL TIMESTAMP SMALLINT DECIMAL LONG VARCHAR no soportado VARCHAR() FOR BIT DATA VARCHAR

Restricciones de las correlaciones de tipos de datos


Cuando se llevan a cabo correlaciones de tipos de datos, existen las siguientes restricciones: v Si se utilizan los tipos de rplica de DB2 UDB GRAPHIC, VARGRAPHIC, la base de datos de rplica DB2 UDB se debe crear en DBCS. v Las aplicaciones para dispositivos porttiles deben asegurarse de que el tipo de datos que se entre en una columna de la tabla de un dispositivo sea compatible con los tipos de columnas de las correspondientes tablas de rplica y fuente y que la longitud de los datos no sea superior a la longitud de las

136

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

correspondientes columnas de rplica y fuente. Las aplicaciones fuente deben asegurarse de lo mismo con los datos entrados en una columna de una tabla fuente. v NCHAR de Sybase slo se puede utilizar en idiomas de un solo byte v Las columnas de Informix del tipo DECIMAL, NVARCHAR y VARCHAR no se deben definir utilizando la siguiente sintaxis: DECIMAL(p), NVARCHAR(m,r) y VARCHAR(m,r). v Sync Server no soporta los siguientes tipos de datos como claves primarias: Tipo de DB2 UDB: LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC y VARCHAR() FOR BIT DATA Tipo de Informix: DATETIME e INTERVAL Tipo de Oracle: RAW Tipo de SQL Server: MONEY, REAL y SMALLMONEY Tipo de Sybase: BIT, DOUBLE PRECISION, FLOAT, IMAGE, MONEY, SMALLMONEY, TEXT y VARBINARY Tipo de Lotus Domino: LONG VARCHAR Debido a las diferencias inherentes entre tipos de datos no DB2 y tipos de datos DB2, puede que la creacin de determinadas suscripciones y la duplicacin o sincronizacin de determinados valores no resulte posible. Si un tipo de datos no aparece listado en las tablas de correlaciones de tipos de datos, significa que no est soportado.

Valores por omisin soportados para las bases de datos


Las tablas siguientes listan los valores por omisin que puede tener una columna de una tabla de una fuente de datos. DB2 Everyplace Sync Server podr sincronizar una tabla fuente que tenga columnas con cualquiera de los valores por omisin listados. DB2 Everyplace Sync Server no podr sincronizar una tabla que tenga columnas con valores por omisin que no aparezcan listados en la tabla de la fuente de datos. Nota: Si utiliza IBM Toolbox para el controlador Java para conectarse a DB2 en AS/400, la tabla no podr tener ninguna columna con valores por omisin no nulos.
Tipo de datos de DB2 BIGINT CHAR(n) DATE DECIMAL(p,s) DOUBLE FLOAT GRAPHIC(n) INTEGER LONG VARCHAR LONG VARCHAR FOR BIT DATA LONG VARGRAPHIC REAL Valor por omisin de DB2 constante, NULL constante, NULL fecha actual, NULL constante, NULL constante, NULL constante, NULL NULL constante, NULL constante, NULL NULL NULL constante, NULL
Consulta

137

SMALLINT TIME TIMESTAMP VARCHAR(n) VARCHAR(n) FOR BIT DATA VARGRAPHIC(n)

constante, NULL hora actual, NULL indicacin de la hora actual, NULL constante, NULL NULL NULL

Tipo de datos de Informix CHAR CHARACTER VARYING(m,r) DATE DATETIME HOUR TO SECOND DATETIME HOUR TO FRACTION DATETIME YEAR TO DAY DATETIME YEAR TO SECOND DATETIME YEAR TO FRACTION DATETIME YEAR TO FRACTION(5) DECIMAL(p,s) DOUBLE PRECISION FLOAT(n) INT8 INTEGER INTERVAL largest_qualifier(p) TO smallest_qualifier(s) LVARCHAR MONEY(p,s) NCHAR(n) NUMERIC(p,s) NVARCHAR(m) REAL SMALLFLOAT SMALLINT VARCHAR(m)

Valor por omisin de Informix NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL

Tipo de datos de Oracle CHAR(n) DATE NUMBER(p,s) RAW(n) TIMESTAMP VARCHAR2(n)

Valor por omisin de Oracle constante, NULL SYSDATE, NULL constante, NULL NULL NULL constante, NULL

138

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tipo de datos de Microsoft SQL Server BIGINT BIT CHAR DATETIME DECIMAL FLOAT INTEGER MONEY NCHAR NUMERIC NVARCHAR REAL SMALLDATETIME SMALLINT SMALLMONEY TINYINT VARCHAR

Valor por omisin de Microsoft SQL Server constante, NULL constante, NULL constante, NULL NULL constante, NULL constante, NULL constante, NULL constante, NULL constante, NULL constante, NULL constante, NULL constante, NULL NULL constante, NULL constante, NULL constante, NULL constante, NULL

Tipo de datos de Sybase BIT CHAR(n) DATETIME DECIMAL[(p[,s])] DOUBLE PRECISION FLOAT(p) IMAGE INTEGER MONEY NCHAR(n) NUMERIC(p,s) NVARCHAR(n) REAL SMALLDATETIME SMALLINT SMALLMONEY TEXT VARBINARY(n) VARCHAR(n)

Valor por omisin de Sybase NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL

Consulta

139

Mensajes de error
Este tema ofrece una lista de los mensajes de error y sus significados y proporciona acciones recomendadas para corregir el problema identificado en el mensaje. Utilice este informacin junto con la del apartado Tratamiento de los problemas de sincronizacin en la pgina 110 para identificar y corregir problemas. DSYA002E: El usuario nombre usuario no pudo registrar el dispositivo id dispositivo pues el dispositivo ya est registrado para el usuario nombre usuario registrado. Accin cancelada. Explicacin: La base de datos de control de DB2 Everyplace no ha podido asignar el dispositivo al usuario especificado porque el dispositivo est asignado actualmente al usuario registrado especificado. Respuesta del usuario: Si el dispositivo debe estar registrado para el usuario especificado, utilice el Centro de administracin de dispositivos porttiles de DB2 Everyplace para suprimir el dispositivo asociado con el usuario registrado y vuelva a intentarlo. DSYC2000C: Los cambios de datos solicitados se han rechazado. Explicacin: Algunos de los cambios de datos que Sync Client ha solicitado se han rechazado debido a conflictos de datos o a la falta de permiso. Respuesta del usuario: Compruebe con el administrador de Sync Server si el usuario tiene permiso para realizar la operacin deseada. Puesto que los cambios solicitados se han rechazado, el usuario deber volver a aplicar los cambios o solicitar al administrador de Sync Server que restaure el usuario y volver a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC300E: No se pudo abrir adaptador: nombre adaptador. Explicacin: Sync Client no ha podido encontrar la biblioteca del adaptador para sincronizar una suscripcin. Respuesta del usuario: Compruebe que la biblioteca nombre adaptador se encuentre en el dispositivo. Si no sabe cul es el nombre de la biblioteca, pngase en contacto con el administrador de Sync Server, solictele que restaure el usuario y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC301E: No se pudo cargar adaptador: nombre adaptador. Explicacin: Sync Client no ha podido cargar la biblioteca del adaptador para sincronizar una suscripcin. Respuesta del usuario: Compruebe que la biblioteca correspondiente a nombre adaptador se encuentre en el dispositivo. Si la biblioteca no existe en el dispositivo, es posible que sea debido a que el sistema operativo ya ha alcanzado los lmites de las bibliotecas compartidas abiertas. Cierre las aplicaciones que no utilice, o reinicie la aplicacin Sync Client, y/o realice un restablecimiento parcial (soft reset) del dispositivo y vuelva a intentarlo. Si no sabe cul es el nombre de la biblioteca, pngase en contacto con el administrador de Sync Server, solictele que restaure el usuario y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC302E: No se pudo cerrar adaptador: nombre adaptador.

140

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Explicacin: Sync Client no ha podido cerrar la biblioteca del adaptador tras la sincronizacin. Respuesta del usuario: Es posible que otras aplicaciones Sync Client hayan utilizado y bloqueado la biblioteca correspondiente a nombre adaptador. Compruebe si hay otras aplicaciones Sync Client pendientes y/o realice un restablecimiento parcial (soft reset) del dispositivo y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC303E: Ha fallado sincr de config - sincr canc. anormalmente. Explicacin: Sync Client no ha podido sincronizar debidamente la informacin de configuracin. Respuesta del usuario: Pngase en contacto con el administrador de Sync Server para que compruebe el estado de Sync Server. Reinicie Sync Server y/o realice un restablecimiento parcial (soft reset) del usuario y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC304E: Ha fallado la autentif. - sincr canc. anormalmente. Explicacin: El nombre de usuario o la contrasea proporcionados no pasan la autenticacin en Sync Server. Respuesta del usuario: Asegrese de escribir la contrasea correctamente y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el administrador de Sync Server. DSYC306E: Formato de mensaje cliente no reconocible Explicacin: Sync Server no reconoce el formato del mensaje del cliente. Respuesta del usuario: Asegrese de que el cifrado reciba soporte en la plataforma Sync Client y/o realice un restablecimiento parcial (soft reset) del dispositivo y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC307E: Ha fallado el cifrado/descifrado de cliente. Explicacin: Sync Client no ha podido cifrar satisfactoriamente el mensaje de salida o descifrar el mensaje recibido. Respuesta del usuario: Asegrese de que el sistema operativo del cliente soporte el y el nivel de cifrado elegido, realice un restablecimiento parcial (soft reset) del dispositivo y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC308E: Cifrado no disponible. Explicacin: El cifrado no recibe soporte para Palm OS 3.2 y anteriores. Es posible que la biblioteca de cifrado no est debidamente instalada o que la va de acceso de cifrado no se haya establecido correctamente. Respuesta del usuario: Asegrese de que el sistema operativo del cliente d soporte al cifrado y al nivel de cifrado seleccionado, que la biblioteca de cifrado est debidamente instalada y que la va de acceso de cifrado se haya establecido correctamente. Consulte el apartado sobre la instalacin de la Gua del usuario para obtener instrucciones de instalacin. Si el problema persiste, pngase en contacto con el administrador de Sync Server. DSYC309E: Ha fallado la apertura de la biblioteca de cifrado.
Consulta

141

Explicacin: Es posible que la biblioteca de cifrado no est debidamente instalada o que la va de acceso de cifrado no se haya establecido correctamente. Respuesta del usuario: Asegrese de que el sistema operativo del cliente d soporte al cifrado y al nivel de cifrado seleccionado, que la biblioteca de cifrado est debidamente instalada y que la va de acceso de cifrado se haya establecido correctamente. Consulte el apartado sobre la instalacin de la Gua del usuario para obtener instrucciones de instalacin. Si el problema persiste, pngase en contacto con el administrador de Sync Server. DSYC310E: Versin de Sync Client incompatible. Explicacin: La versin de Sync Client no es compatible con Sync Server. Respuesta del usuario: Compruebe con el administrador de Sync Server si hay una versin compatible de Sync Client instalada en el dispositivo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC311E: Suscripcin no encontrada. Explicacin: Sync Server no encuentra la suscripcin que el cliente est solicitando. Esto puede ser debido a que la configuracin haya cambiado desde que el cliente ha iniciado la sincronizacin. Respuesta del usuario: Intente volver a realizar la sincronizacin y la configuracin se actualizar. Si el problema sigue producindose, pngase en contacto con el administrador de Sync Server comunicndole la suscripcin problemtica y/o restaure el usuario y, a continuacin, vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC312E: Suscripcin bloqueada por el servidor. Explicacin: Sync Server ha bloqueado la suscripcin. Esto puede ser debido a que el administrador de Sync Server est llevando a cabo el mantenimiento de la base de datos de control o est modificando la suscripcin o a que Sync Server est duplicando la suscripcin, o a que la ltima duplicacin haya resultado anmala pero an no se haya recuperado. Respuesta del usuario: Espere un momento y vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el administrador de Sync Server para que compruebe el estado de duplicacin de la suscripcin. DSYC313E: Intento de sincr desde un cliente de copia de seguridad Explicacin: El servidor ha detectado y ha rechazado el intento de sincronizacin desde un cliente de copia de seguridad. Respuesta del usuario: Asegrese de que la imagen del cliente actual (que incluye tanto la configuracin como los datos sincronizados) sea correcta y adecuada. Si es as, seleccione el recuadro de seleccin Allow synchronization from backup (Permitir sincronizacin desde copia de seguridad); de lo contrario, solicite al administrador de Sync Server que restaure el usuario. Luego, vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el administrador de Sync Server. DSYC314E: Usuario no asignado a ningn grupo con privil. de sincr

142

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Explicacin: El usuario no se ha aadido a ningn grupo con privilegio de sincronizacin. Respuesta del usuario: Compruebe que haya escrito correctamente el nombre de usuario y pngase en contacto con el administrador de Sync Server para verificar que el usuario se encuentre en un grupo con la sincronizacin habilitada. Vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC315E: Ha fallado el registro del dispositivo Explicacin: Sync Server no puede registrar el dispositivo para el usuario. Es posible que ya haya un dispositivo registrado para el usuario, aunque el usuario est configurado para permitir la sincronizacin desde un slo dispositivo. Respuesta del usuario: Compruebe que haya escrito correctamente el nombre de usuario y pngase en contacto con el administrador de Sync Server para comprobar la asociacin de usuario del dispositivo y restaurar el usuario y, luego, vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC316E: Alterada la definicin de suscripcin. Explicacin: La definicin de una suscripcin ha cambiado desde que el cliente inici la sincronizacin. Respuesta del usuario: Intente volver a realizar la sincronizacin y la definicin se actualizar. Si el problema sigue producindose, pngase en contacto con el administrador de Sync Server para que restaure el usuario y, a continuacin, vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC317E: Intento de crear imagen de cliente sin ID de dispos. Explicacin: El motor de Sync Client no puede crear una imagen de cliente sin un ID de dispositivo vlido. Respuesta del usuario: La creacin de una imagen de cliente la debe llevar a cabo el administrador. El usuario slo puede crear una imagen de un cliente que se haya sincronizado satisfactoriamente anteriormente y que tenga un ID de dispositivo vlido. Realice la sincronizacin en primer lugar con la opcin CreateImage desactivada y, a continuacin, vuelva a intentar crear la imagen de cliente. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC400E: Ha fallado la asignacin de recursos de adaptador. Explicacin: Sync Client no ha podido asignar recursos especficos del adaptador (por ejemplo, conexiones de bases de datos o descriptores de contexto de sentencias para DB2 Everyplace) para sincronizar los datos suscritos. Respuesta del usuario: Compruebe que los recursos especficos del adaptador no estn ocupados y vuelva a intentarlo. Si el problema persiste, consulte la Gua de desarrollo de aplicaciones de DB2 Everyplace para obtener informacin sobre la limitacin de los recursos en cuestin o pngase en contacto con el Soporte de Software de IBM. DSYC401E: Ha fallado la conexin a los datos de destino. Explicacin: Sync Client ha detectado problemas al conectarse o acceder a los datos de destino.
Consulta

143

Respuesta del usuario: Compruebe los derechos de acceso y que el recurso exista o asegrese de que no haya ninguna aplicacin que utilice el recurso. Si est sincronizando tablas cifradas, asegrese de que se haya otorgado el privilegio de cifrado al nombre de usuario y la contrasea de DB2 Everyplace que se hayan proporcionado. Solicite al administrador de Sync Server que restaure el usuario y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC402E: Ha fallado la desconexin de los datos de destino. Explicacin: Sync Client ha detectado problemas al desconectarse o liberar los datos de destino. Respuesta del usuario: Compruebe los derechos de acceso y que el recurso exista o asegrese de que no haya ninguna aplicacin que utilice el recurso. Solicite al administrador de Sync Server que restaure el usuario y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC403E: No hay datos suscritos en la suscripcin Explicacin: Sync Client ha recibido informacin de suscripcin inesperada vaca o incompleta (por ejemplo, informacin de tablas no suscritas) del servidor. Respuesta del usuario: Es posible que falte informacin en la suscripcin. Pngase en contacto con el administrador de Sync Server. DSYC412E: Formato de mensaje inesperado. Explicacin: Sync Client no reconoce la informacin de algn mensaje del servidor durante la sincronizacin de una suscripcin. Respuesta del usuario: Solicite al administrador de Sync Server que restaure el usuario y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC413E: No se han encontrado los datos de destino solicitados. Explicacin: Sync Client no encuentra los datos de destino (por ejemplo, no encuentra una tabla) para la sincronizacin. Respuesta del usuario: Los datos de destino no existen; es posible que otras aplicaciones los hayan eliminado. Para restaurar los datos de la suscripcin, restablezca el conjunto de suscripcin que la contiene y vuelva a realizar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC414E: Final no esperado de los datos. Explicacin: Sync Client ha detectado que faltan datos o un final no esperado de los datos durante la sincronizacin de una suscripcin. Respuesta del usuario: Pngase en contacto con el Soporte de Software de IBM. DSYC415E: Datos demasiado largos para el campo correspondiente. Explicacin: Sync Client ha recibido datos demasiado largos (por ejemplo, un archivo de tamao excesivo). Es posible que los datos se hayan truncado. Respuesta del usuario: Es posible que los datos de Sync Server no sean vlidos. Comprubelo con el administrador de Sync Server.

144

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

DSYC417E: Suscr informada del servidor no habilitada para sincr. Explicacin: Al usuario no se le permite sincronizar la suscripcin. Respuesta del usuario: Asegrese de haber escrito correctamente el nombre de usuario y pngase en contacto con el administrador de Sync Server para asegurarse de que al usuario se le permita sincronizar la suscripcin y, luego, vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC418E: Excepciones informadas del servidor. Explicacin: Sync Server ha detectado problemas (o excepciones) al sincronizar la suscripcin. Respuesta del usuario: Pngase en contacto con el administrador de Sync Server para que compruebe el estado de Sync Server o el estado de los datos fuente. DSYC420E: Intento de carga de cambios en datos de slo lectura. Explicacin: El cliente intenta cargar cambios en los datos de destino, que estn configurados como de slo lectura en la definicin de la suscripcin. Respuesta del usuario: Pngase en contacto con el administrador de Sync Server para que compruebe el permiso de los datos de destino en la definicin de la suscripcin. Si los datos suscritos estn configurados como de slo lectura, el usuario no debe cambiar los datos de destino. Para renovar los datos de destino, restablezca el conjunto de suscripcin y vuelva a realizar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC421E: Intento de carga de operaciones no permitidas. Explicacin: El cliente intenta cargar cambios en los datos de destino y esto no est permitido en la definicin de la suscripcin. Respuesta del usuario: Pngase en contacto con el administrador de Sync Server para que compruebe el permiso de los datos de destino en la definicin de la suscripcin. El usuario no debe realizar operaciones no permitidas sobre los datos de destino. Para renovar los datos de destino, restablezca el conjunto de suscripcin y vuelva a realizar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC423E: No autorizado a acceder a los datos de destino. Explicacin: El usuario no tiene autorizacin para acceder a los datos solicitados. Respuesta del usuario: Compruebe que haya escrito correctamente el nombre de la usuario y la contrasea (para acceder a los datos de destino) y que el usuario tenga autorizacin para acceder a los datos solicitados. Solicite al administrador de Sync Server que restaure el usuario y vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el administrador de Sync Server. DSYC424E: Datos solicitados no disponibles. Explicacin: Los datos solicitados no estn disponibles. Otra aplicacin est utilizando los datos de destino. Respuesta del usuario: Compruebe que Sync Client tenga permiso para modificar los datos de destino y que no los est utilizando otra aplicacin.
Consulta

145

Solicite al administrador de Sync Server que restaure el usuario y vuelva a intentarlo. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC425E: El tipo de datos solicitado no est soportado. Explicacin: El adaptador de la suscripcin no da soporte al tipo de datos solicitado. Por ejemplo, slo se pueden sincronizar archivos .prc y .pdb a un dispositivo Palm y hay algunos tipos de columnas que DB2 Everyplace no soporta. Respuesta del usuario: Solicite al administrador de Sync Server que verifique que todos los datos suscritos estn soportados (por ejemplo, el tipo de archivo y los tipos de columnas) y vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC426E: Va de acceso de destino de suscripcin no vlida. Explicacin: El nombre de la va de acceso de destino de la suscripcin proporcionado por el usuario no es vlido o la va de acceso no es relativa a la va de acceso de destino del dispositivo. Respuesta del usuario: Asegrese de que el nombre especificado de la va de acceso de destino de la suscripcin sea vlido y sea relativo al directorio de destino del dispositivo. DSYC600E: Ha fallado la apertura de la conexin. Explicacin: Sync Client tiene un problema para abrir una conexin con Sync Server porque el URL (localizador universal de recursos) del servidor es incorrecto o bien el servidor no est activo. Respuesta del usuario: Compruebe que: 1)El URL del servidor se haya escrito correctamente 2)Sync Server est operativo actualmente. Vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC601E: No se pudo establecer conexin. Explicacin: Sync Client tiene un problema para abrir la conexin con Sync Server. Esto puede ser debido a que: 1)El URL (localizador universal de recursos) del servidor es incorrecto 2)El servidor no est activo 3)La red est ocupada 4)La conexin de red no funciona. Respuesta del usuario: Compruebe que: 1)El URL del servidor se haya escrito correctamente 2)Sync Client tenga acceso a Sync Server por medio de un cable serie o USB, un mdem o una conexin de red 3)Sync Server est operativo actualmente 4)Si utiliza Windows RAS o algn software de conexin PPP (por ejemplo, Mocha PPP para el puerto serie, Softick PPP para el puerto USB), asegrese de que la conexin PPP entre el dispositivo porttil y el sistema de sobremesa est establecida 5)Vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC602E: No se pudo enviar la peticin. Explicacin: Sync Client se ha conectado satisfactoriamente a Sync Server, pero tiene un problema para enviar peticiones al servidor. Esto puede ser debido a los motivos siguientes: 1)El servidor no est activo 2)Se ha perdido la conexin de red.

146

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Respuesta del usuario: Compruebe que: 1)Sync Client tenga acceso a Sync Server por medio de un cable serie o USB, un mdem o una conexin de red. 2)Sync Server est operativo actualmente. 3)Si utiliza Windows RAS o algn software de conexin PPP (por ejemplo, Mocha PPP para el puerto serie, Softick PPP para el puerto USB), asegrese de que la conexin PPP entre el dispositivo porttil y el sistema de sobremesa est establecida. 4)Vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC603E: No se pudo recibir la respuesta. Explicacin: Sync Client se ha conectado satisfactoriamente a Sync Server, pero tiene un problema para recibir mensajes del servidor o el mensaje recibido est daado o en un formato inesperado. Esto puede ser debido a los motivos siguientes: 1)El servidor no est activo 2)Se ha perdido la conexin de red. Respuesta del usuario: Compruebe que: 1)Sync Server est operativo actualmente. 2)Si utiliza Windows RAS o algn software de conexin PPP (por ejemplo, Mocha PPP para el puerto serie, Softick PPP para el puerto USB), asegrese de que la conexin PPP entre el dispositivo porttil y el sistema de sobremesa est establecida. 3)Vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC604E: Tiempo de espera excedido al recibir la respuesta. Explicacin: Sync Client ha enviado satisfactoriamente una peticin a Sync Server, pero ha excedido el tiempo de espera mientras reciba el mensaje del servidor. El servidor necesita ms tiempo para preparar la informacin solicitada, la red est ocupada, el servidor no est activo o se ha perdido la conexin de red. Respuesta del usuario: Compruebe que: 1)Sync Server est operativo actualmente. 2)Si utiliza Windows RAS o algn software de conexin PPP (por ejemplo, Mocha PPP para el puerto serie, Softick PPP para el puerto USB), asegrese de que la conexin PPP entre el dispositivo porttil y el sistema de sobremesa est establecida. 3)Especifique un tiempo de espera de red ms largo. 4)Vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC605E: No se pudo recibir acuse de recibo. Explicacin: Sync Client ha enviado satisfactoriamente una peticin a Sync Server y ha recibido una respuesta, pero no ha recibido acuse de recibo del servidor. El servidor necesita ms tiempo para preparar la informacin solicitada, la red est ocupada, el servidor no est activo o se ha perdido la conexin de red. Respuesta del usuario: Compruebe que: 1)Sync Server est operativo actualmente. 2)Si utiliza Windows RAS o algn software de conexin PPP (por ejemplo, Mocha PPP para el puerto serie, Softick PPP para el puerto USB), asegrese de que la conexin PPP entre el dispositivo porttil y el sistema de sobremesa est establecida. 3)Vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC606E: Ha fallado la apertura de la biblioteca de Red. Explicacin: Sync Client tiene un problema para abrir la biblioteca de Red.

Consulta

147

Respuesta del usuario: Compruebe que: 1) La biblioteca de Red se encuentre presente. 2) Si utiliza el emulador de PalmOS, asegrese de que el recuadro de seleccin que hay en Settings->Properties (Configuracin->Propiedades) est marcado. 3) Intente realizar un restablecimiento parcial (soft reset) del dispositivo y vuelva a realizar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC608E: Ha fallado el cierre de la biblioteca de Red. Explicacin: Sync Client tiene un problema para cerrar la biblioteca de Red. Respuesta del usuario: Es posible que la biblioteca de Red est daada. Realice un restablecimiento parcial (soft reset) del dispositivo y vuelva a realizar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC609E: Ha fallado la resolucin de nombre de sistema principal. Explicacin: Sync Client no puede resolver la direccin IP del nombre de sistema principal proporcionado en el URL (localizador universal de recursos) del servidor. Respuesta del usuario: Asegrese de que el nombre del sistema principal se haya especificado correctamente. DSYC610E: Sin memoria. Explicacin: Sync Client no ha podido asignar suficiente memoria para completar la sincronizacin. Respuesta del usuario: Es posible que el dispositivo tenga poca memoria disponible o poca memoria de almacenamiento dinmico. Cierre o suprima las aplicaciones que no utilice y vuelva a intentarlo. Si el problema persiste, consulte la documentacin de DB2 Everyplace para conocer los requisitos del sistema o pngase en contacto con el Soporte de Software de IBM. DSYC611E: Prohibido sincronizarse con el servidor. Explicacin: Al usuario no se le permite sincronizar con el servidor. Respuesta del usuario: Pngase en contacto con el administrador de Sync Server para que compruebe si el usuario tiene autorizacin para sincronizar con Sync Server. DSYC612E: Servidor no encontrado. Explicacin: El servidor no se encuentra porque se est utilizando un URL (localizador universal de recursos) incorrecto, el servidor no est activo o bien Sync Server no est debidamente instalado. Respuesta del usuario: Compruebe que: 1)El URL (localizador universal de recursos) del servidor se haya escrito correctamente; 2)Sync Server est operativo actualmente; 3)Sync Server est debidamente instalado. Vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el administrador de Sync Server. DSYC613E: Error interno de Sync Server. Explicacin: Se ha producido un error interno de Sync Server. Respuesta del usuario: Pngase en contacto con el administrador de Sync Server para que compruebe el estado de Sync Server. Reinicie Sync Server

148

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

y vuelva a intentar la sincronizacin. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC614E: El servidor no responde. Explicacin: No hay ningn servidor disponible para atender las peticiones del cliente. Todos los servidores estn ocupados o bloqueados. Respuesta del usuario: Pngase en contacto con el administrador de Sync Server para que compruebe el estado y la disponibilidad de Sync Server. Vuelva a intentar la sincronizacin cuando el servidor est menos ocupado. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC615E: Protocolo de transporte no soportado Explicacin: El protocolo de transporte especificado en el URL (localizador universal de recursos) del servidor no est soportado. Respuesta del usuario: Asegrese de que el protocolo especificado en el URL del servidor est soportado. Actualmente, slo recibe soporte el protocolo HTTP (HyperText Transfer Protocol). Utilice HTTPS si tanto Sync Server como Sync Client se han configurado para SSL (Secure Socket Layer). DSYC616E: Servidor ocupado Explicacin: No hay ningn servidor disponible para atender las peticiones del cliente. Todos los servidores estn ocupados. Respuesta del usuario: Pngase en contacto con el administrador de Sync Server para que compruebe la disponibilidad de Sync Server. Vuelva a intentar la sincronizacin cuando el servidor est menos ocupado. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC698E: Error interno o estado incoherente. Explicacin: El adaptador de suscripcin ha detectado errores o un estado incoherente del gestor de datos de destino durante la sincronizacin. Respuesta del usuario: Compruebe el archivo de anotaciones cronolgicas de configuracin de Sync Client e identifique el tipo de suscripcin (configuracin, tabla o archivo). Si se trata de una suscripcin de tabla, consulte la Gua de desarrollo de aplicaciones de DB2 Everyplace con el estado de SQL proporcionado en el mensaje de error. Pngase en contacto con el administrador de Sync Server y comunquele al estado de error. Si el problema persiste, pngase en contacto con el Soporte de Software de IBM. DSYC699E: Error de red desconocido. Explicacin: Sync Client ha detectado un error desconocido al comunicarse con Sync Server. Respuesta del usuario: Pngase en contacto con el Soporte tcnico de IBM. DSYD006E: El supervisor de sesiones MDSS ha encontrado una excepcin procedente de la sentencia SQL: sentencia SQL. Explicacin: DB2 Everyplace Sync Server registra informacin sobre el estado de cada sesin de sincronizacin en tablas de supervisin de sesin de la base de datos de control de administracin, DSYCTLDB. Sync Server emite una sentencia SQL para aadir una entrada para cada nueva sesin

Consulta

149

para que la informacin de estado de la sesin sea persistente. La sentencia SQL ha fallado porque no se ha podido acceder a las tablas de supervisin de sesin. Respuesta del usuario: Asegrese de que la base de datos DSYCTLDB sea operativa y que no se haya agotado el almacenamiento. Si no detecta problemas, pngase en contacto con el Soporte de Software de IBM. DSYD007E: La agrupacin de conexiones MDSS ha encontrado la excepcin: detalles excepcin. Explicacin: DB2 Everyplace Sync Server crea una agrupacin de conexiones de bases de datos para cada base de datos a la que se accede. En este caso, Sync Server ha intentado utilizar una conexin de esta agrupacin para la base de datos mencionada que ha fallado. Una posible explicacin de este error es que la base de datos mencionada no est operativa. Respuesta del usuario: Asegrese de que la base de datos mencionada est operativa. Si no detecta problemas, pngase en contacto con el Soporte de Software de IBM. DSYD010E: El adaptador de DB2 no ha podido generar un archivo de contraseas de DataPropagator para el calificador de Apply calificador Apply. Explicacin: Cada vez que se inicie DB2 Everyplace Sync Server, se generar un archivo de contraseas para cada calificador de Apply. DB2 Data Propagator utiliza el ID de usuario y la contrasea de este archivo para acceder a la base de datos fuente. La sincronizacin falla para todas las suscripciones cuyo calificador de Apply no tenga un archivo de contraseas correspondiente. La creacin del archivo falla a causa de un almacenamiento inadecuado en el directorio en el que se est ejecutando Sync Server. Respuesta del usuario: En primer lugar, asegrese de que haya almacenamiento adecuado en el directorio en el que se est ejecutando DB2 Everyplace Sync Server. Luego, detenga e inicie Sync Server para intentar generar el archivo de contraseas. Si los problemas persisten, pngase en contacto con el Soporte de Software de IBM. DSYD011E: El adaptador de DB2 no ha podido crear las tablas necesarias para sincronizar la tabla nombre esquema.nombre tabla de la base de datos nombre base datos. Explicacin: DB2 Everyplace Sync Server crea tablas de etapas para cada tabla de rplica implicada en la sincronizacin. Estas tablas se crean al crear una suscripcin sobre la base de datos que corresponde a la rplica a la que se hace referencia en el mensaje. El almacenamiento inadecuado o el hecho de que la base de datos no est operativa provoca que la creacin de estas tablas falle. Respuesta del usuario: Asegrese de que la base de datos a la que se hace referencia en el mensaje est operativa y que haya almacenamiento adecuado disponible. Abra el Centro de administracin de dispositivos porttiles y elimine y vuelva a crear las suscripciones correspondientes a la base de datos a la que se hace referencia para intentar volver a crear las tablas de etapas. Si sigue recibiendo este mensaje, pngase en contacto con el Soporte de software de IBM. DSYD012E: El adaptador de DB2 no ha podido descartar las tablas necesarias para sincronizar la tabla nombre esquema.nombre tabla de la base de datos nombre

150

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

base datos. Explicacin: Para gestionar la sincronizacin, DB2 Everyplace Sync Server crea varias tablas en asociacin con una determinada base de datos de rplica. Cuando se suprimen conjuntos de suscripcin asociados con la rplica que hay en la base de datos mencionada, Sync Server descarta las tablas asociadas con el conjunto de suscripcin suprimido. Esta operacin de descarte puede fallar si la base de datos no se encuentra operativa. Respuesta del usuario: Asegrese de que la base de datos mencionada en el mensaje sea operativa. DSYD014E: El adaptador de DB2 no ha podido acceder a la tabla de rplica de sincronizacin nombre esquema.nombre tabla de la base de datos nombre base datos. Explicacin: Se h producido un error al intentar acceder a la tabla de rplica. Respuesta del usuario: Asegrese de que est conectado a la base de datos de rplica mencionada en el mensaje y que la base de datos tenga capacidad de almacenamiento adecuada. Si los problemas persisten, pngase en contacto con el Soporte de Software de IBM. DSYD015E: El adaptador de DB2 no ha podido acceder a las tablas de sincronizacin de la periferia de la tabla de rplica nombre esquema.nombre tabla de la base de datos nombre base datos. Explicacin: Para gestionar la sincronizacin, DB2 Everyplace Sync Server crea varias tablas en asociacin con una determinada tabla de rplica. Se ha producido un error Sync Server ha intentado acceder a estas tablas para la tabla de rplica a la que se hace referencia en el mensaje. Respuesta del usuario: Asegrese de que la base de datos mencionada en el mensaje sea operativa. Si los problemas persisten, pngase en contacto con el Soporte de Software de IBM. DSYD018E: El adaptador de DB2 no ha podido acceder a la tabla ASN.IBMSNAP_APPLYTRAIL de la base de datos nombre base datos. Explicacin: Se ha producido un error al intentar acceder a la tabla de seguimiento de Apply de DataPropagator. Respuesta del usuario: Asegrese de que la base de datos mencionada en el mensaje sea operativa y que la suscripcin de DB2 Data Propagator se haya configurado debidamente. Adems, consulte la publicacin DB2 UDB Replication Guide and Reference para obtener ms informacin sobre el motivo que ha impedido el acceso a la tabla de seguimiento de Apply. Si los problemas persisten, pngase en contacto con el Soporte de Software de IBM. DSYD019E: El adaptador de DB2 no ha podido acceder a la tabla ASN.IBMSNAP_UOW de la base de datos nombre base datos. Explicacin: Se ha producido un error al intentar acceder a la tabla de unidad de trabajo de DataPropagator. Respuesta del usuario:Asegrese de que la base de datos mencionada en el mensaje sea operativa y que la suscripcin de Data Propagator se haya configurado debidamente. Adems, consulte la publicacin DB2 UDB Replication Guide and Reference para obtener ms informacin sobre el motivo que ha impedido el acceso a la tabla de unidad de trabajo. Si los problemas persisten, pngase en contacto con el Soporte de Software de IBM.
Consulta

151

DSYD022E: El adaptador de DB2 no ha podido acceder a la tabla de datos de cambios esquema.nombre tabla de la base de datos nombre base datos. Explicacin: Se ha producido un error al intentar acceder a la tabla de datos de cambios de Data Propagator. Respuesta del usuario:Asegrese de que la base de datos mencionada en el mensaje sea operativa y que la suscripcin est debidamente configurada en el Centro de administracin de dispositivos porttiles. Si los problemas persisten, pngase en contacto con el Soporte de Software de IBM. DSYD027E: El proceso Apply de DataPropagator ha fallado para la base de datos nombre base datos, calificador de Apply calificador apply. Explicacin: La sincronizacin de esta base de datos no ser posible hasta que se haya solucionado el error de Apply de DataPropagator. Respuesta del usuario: Consulte la publicacin DB2 UDB Replication Guide and Reference para obtener informacin sobre la causa del fallo del programa Apply. Si los problemas persisten, pngase en contacto con el Soporte de Software de IBM. DSYD028I: Se ha rechazado un elemento de sincronizacin para la base de datos nombre base datos, tabla nombre esquema.nombre tabla, clave primaria valor clave primaria, desde el dispositivo id dispositivo debido a cdigo rechazo. Explicacin: El elemento de sincronizacin correspondiente a la fila de la base de datos relacional especificada no se ha aceptado para la sincronizacin debido al motivo especificado. Respuesta del usuario: No se necesita ninguna accin. DSYD029W: DB2 Everyplace Sync Server ha detectado un error de sintaxis en la clusula WHERE del usuario en la tabla de rplica nombre completo tabla de la base de datos nombre base datos. Mensaje del analizador clusula WHERE Explicacin: DB2 Everyplace Sync Server analiza la clusula WHERE para obtener la informacin para manejar clusulas WHERE que implican varias tablas. Si la clusula WHERE slo hace referencia a una tabla, este aviso se puede pasar por alto sin ningn problema. Respuesta del usuario: Corrija la clusula WHERE en el Centro de administracin de dispositivos porttiles. Si los problemas persisten, pngase en contacto con el Soporte de Software de IBM. DSYD030I: Uso: com.ibm.mobileservices.adapter.rdb.Replicate base_datos_rplica Explicacin:com.ibm.mobileservices.adapter.rdb.Replicate no se ha ejecutado con un argumento de la lnea de mandatos. Respuesta del usuario: Ejecute com.ibm.mobileservices.adapter.rdb.Replicate con un nombre de base de datos de rplica como argumento de la lnea de mandatos. DSYD031I: Duplicacin de la base de datos de duplicacin nombre base datos rplica satisfactoria. Explicacin: La duplicacin de la base de datos de rplica ha sido satisfactoria. Respuesta del usuario: No se necesita ninguna accin. DSYD032E: La tabla de bsqueda nombre tabla no se ha encontrado en la suscripcin nombre suscripcin, pero se menciona en el filtro de duplicacin de

152

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

nombre tabla dominio. Explicacin: El filtro hace referencia a una tabla que no existe en la suscripcin. Respuesta del usuario: Corrija el filtro de duplicacin en el Centro de administracin de dispositivos porttiles para asegurarse de que la tabla de bsqueda especificada en el filtro forme parte de la definicin de suscripcin y vuelva a intentar la operacin. DSYD033E: El adaptador de DB2 ha recibido una peticin para un ID de suscripcin no vlido id suscripcin para el tipo de dispositivo tipo dispositivo, ID de dispositivo id dispositivo y usuario nombre usuario. . Explicacin: El adaptador de DB2 ha recibido una peticin para una suscripcin no vlida del usuario y el dispositivo especificados. El ID de suscripcin especificado ya no existe. Respuesta del usuario: Restaure el dispositivo del usuario y vuelva a intentarlo. DSYD035E: La duplicacin de base datos rplica est bloqueada: motivo. Explicacin: Sync Server no puede garantizar que la realizacin de la duplicacin resulte segura porque no se puede comunicar con algunos servidores habilitados para la sincronizacin. Respuesta del usuario: Compruebe la carpeta de anotaciones cronolgicas del Centro de administracin de dispositivos porttiles. Busque DSYD038E para averiguar qu servidor no resulta accesible. Si el servidor al que no se puede acceder est desactivado, mrquelo como fuera de lnea. Si el servidor est activo, detngalo y vuelva a iniciarlo. DSYD037E: No hay ninguna tabla de suscripcin definida para base datos rplica. Explicacin: No hay ninguna tabla de suscripcin definida para la base de datos de rplica especificada. Respuesta del usuario: Cree una suscripcin de tabla utilizando el nombre de la base de datos de rplica especificada antes de solicitar la duplicacin. DSYD038E: DSYD038E Los tres ltimos intentos de comunicar con el servidor servidor han dado como resultado un error de comunicacin. Explicacin: El servidor est desactivado, no se puede acceder a l o hay problemas de comunicacin desconocidos. Respuesta del usuario: Compruebe que el servidor est activo y que se pueda acceder a l en la red. DSYD039E: El filtro de datos nombre filtro datos para la columna nombre columna en la tabla nombre tabla no est definido en el grupo nombre grupo o usuario nombre usuario . Explicacin: Un filtro de datos necesario no est definido para una columna no suscrita. Respuesta del usuario: Asegrese de que el grupo o el usuario hayan escrito y definido correctamente los parmetros del filtrado vertical. Realice las correcciones adecuadas en las carpetas Suscripcin, Grupo y/o Usuario del Centro de administracin de dispositivos porttiles. DSYD040E: La migracin de DB2 Everyplace no se completa.

Consulta

153

Explicacin: La fase de migracin de la configuracin de DB2 Everyplace ha fallado. Respuesta del usuario: Ejecute el programa de utilidad DSYconfig para completar la migracin de DB2 Everyplace. Este programa de utilidad migra todas las tablas de control internas de DB2 Everyplace Sync Server a la versin actual. DSYD041E: El filtro de duplicacin de nombre tabla en nombre suscripcin no es vlido. Error: error. Filtro: filtro Explicacin: El filtro tiene uno de los siguientes problemas: 1. El filtro es sintcticamente incorrecto. 2. Un valor de un parmetro del filtro es incorrecto. 3. Sync Server no puede identificar las tablas a las que se hace referencia en el filtro. Respuesta del usuario: Compruebe el filtro mediante los pasos siguientes: 1. Compruebe la sintaxis del filtro en Consulta de SQL de DB2 UDB. Si la base de datos fuente es DB2 UDB y todos los nombres de las tablas y las columnas de destino son idnticos a sus correspondientes nombres de la fuente, puede ejecutar el filtro sobre la fuente para validarla. 2. Compruebe los valores por omisin de los parmetros a los niveles de grupo y de usuario. 3. Si no se detecta ningn error en ninguna de las comprobaciones anteriores, modifique el filtro aadiendo un smbolo de almohadilla (#) delante de cada tabla a la que se haga referencia en el filtro. DSYD042E: La base de datos de duplicacin siguiente no ha completado la duplicacin: bases datos anmalas Explicacin: El producto no se puede actualizar hasta que todas las bases de datos de rplica hayan completado la duplicacin. Respuesta del usuario: Duplique las bases de datos de rplica especificadas antes de iniciar la instalacin. DSYD043E: Estn en ejecucin los siguientes Servidores de sincronizacin: servidores en ejecucin Explicacin: El producto no se puede actualizar hasta que todos los Sync Server se hayan cerrado. Respuesta del usuario: Cierre todos los Sync Server antes de iniciar la instalacin. DSYD044E: La base de datos de duplicacin siguiente no ha completado la operacin de presentacin interna: bases datos anmalas Explicacin: El producto no se puede actualizar hasta que todas las bases de datos de rplica hayan completado la operacin de presentacin interna. Respuesta del usuario: Bloquee todas las suscripciones. Inicie Sync Server. Espere hasta que no haya ninguna actividad. Cierre Sync Server. Vuelva a intentar la instalacin. DSYD045E: Las tablas siguientes se deben migrar a un espacio de tablas con un tamao de pgina suficientemente grande: tablas anmalas Explicacin: El producto no se puede actualizar hasta que las tablas especificadas se hayan migrado a un espacio de tablas con un tamao de pgina suficientemente grande. Respuesta del usuario: Busque DSYD045E en las Notas de instalacin.

154

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

DSYD046W: Antes de instalar DB2 Everyplace versin 8.2, todos los usuarios que tienen cambios de datos en el dispositivo deben realizar la sincronizacin. En caso contrario, si el programa Sync Client no ha sido actualizado a la versin 8.2, estos cambios de datos en el dispositivo se pueden perder en la primera sincronizacin despus de esta instalacin. Explicacin: Es posible que Sync Server fuerce a algunos usuarios a realizar una renovacin en la primera sesin de sincronizacin despus de esta instalacin. Slo Sync Client versin 8.2 o superior puede realizar una renovacin sin peligro de perder datos. Respuesta del usuario: Si los usuarios tienen datos importantes en el dispositivo que no estn sincronizados, recomendamos no realizar la instalacin. Solicite a los usuarios que sincronicen sus datos y, a continuacin, vuelva a iniciar la instalacin. DSYD047E: La migracin ha fallado debido a motivo. Explicacin: La migracin ha fallado debido al motivo especificado. Respuesta del usuario: Corrija el problema. Luego, ejecute dsymigration. DSYD048E: El nombre de la base de datos de duplicacin no se ha especificado. Explicacin: Se necesita un nombre de base de datos de rplica para realizar la operacin. Respuesta del usuario: Proporcione el nombre de la base de datos de rplica como entrada para la operacin solicitada. DSYD049I: El proceso de duplicacin se est preparando para duplicar las tablas de la base de datos nombre base datos. Explicacin: El proceso de duplicacin se est preparando para duplicar las tablas de la base de datos especificada. Respuesta del usuario: No se necesita ninguna accin. DSYD050I: El proceso de duplicacin est duplicando las tablas de la base de datos nombre base datos. Explicacin: El proceso de duplicacin est duplicando las tablas de la base de datos especificada. Respuesta del usuario: No se necesita ninguna accin. DSYD051I: El proceso de duplicacin est duplicando datos de la base de datos nombre base datos a la base de datos nombre base datos. Explicacin: El proceso de duplicacin est duplicando datos de la primera base de datos especificada a la segunda base de datos especificada. Respuesta del usuario: No se necesita ninguna accin. DSYD052I: El proceso de duplicacin est duplicando datos de nombre tabla en nombre base datos a nombre tabla en nombre base datos. Explicacin: El proceso de duplicacin est duplicando datos de la primera tabla especificada a la segunda tabla especificada. Respuesta del usuario: No se necesita ninguna accin. DSYD053I: El proceso de duplicacin est duplicando la fila con clave primaria valor clave primaria de nombre tabla en nombre base datos a nombre tabla en nombre base datos.

Consulta

155

Explicacin: El proceso de duplicacin est duplicando la fila especificada de la primera tabla especificada a la segunda tabla especificada. Respuesta del usuario: No se necesita ninguna accin. DSYD054I: El proceso de duplicacin ha terminado de duplicar x filas de nombre tabla en nombre base datos a nombre tabla in nombre base datos. Explicacin: El proceso de duplicacin ha terminado de duplicar el nmero de filas especificado de la primera tabla especificada a la segunda tabla especificada. Respuesta del usuario: No se necesita ninguna accin. DSYD055I: El proceso de duplicacin est podando las tablas de control asociadas con nombre tabla en nombre base datos. Explicacin: El proceso de duplicacin est podando las tablas de control asociadas con la tabla especificada de la base de datos especificada. Respuesta del usuario: No se necesita ninguna accin. DSYD056I: El proceso de duplicacin ha terminado de podar x filas de las tablas de control asociadas con nombre tabla en nombre base datos. Explicacin: El proceso de duplicacin ha terminado de podar el nmero especificado de filas de las tablas de control asociadas con la tabla especificada de la base de datos especificada. Respuesta del usuario: No se necesita ninguna accin. DSYD057I: El proceso de duplicacin ha terminado de duplicar las tablas de la base de datos nombre base datos. Explicacin: El proceso de duplicacin ha terminado de duplicar las tablas de la base de datos especificada. Respuesta del usuario: No se necesita ninguna accin. DSYD058I: El proceso de duplicacin est finalizando la duplicacin de las tablas de la base de datos nombre base datos. Explicacin: El proceso de duplicacin est finalizando la duplicacin de las tablas de la base de datos especificada. Respuesta del usuario: No se necesita ninguna accin. DSYD059I: El proceso de duplicacin est recuperando la duplicacin anterior de la base de datos nombre base datos (estado = estado). Explicacin: La duplicacin anterior de la base de datos especificada ha fallado. La duplicacin actual est realizando la recuperacin empezando desde el estado especificado. Respuesta del usuario: No se necesita ninguna accin. DSYF000E: MDSS ha encontrado una excepcin detalles excepcin. Explicacin: El servlet MDSS ha encontrado una excepcin. Respuesta del usuario: Recopile archivos de rastreo y de anotaciones cronolgicas y pngase en contacto con el Soporte de software de IBM para obtener informacin sobre el adaptador especfico. DSYG001E: Se ha producido una excepcin inesperada: excepcin. Explicacin: DB2 Everyplace Sync Server ha encontrado la excepcin inesperada especificada.

156

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Respuesta del usuario: Informe del error al administrador. DSYG003E: No se puede conectar con la base de datos nombre base datos. Explicacin: No se ha podido establecer una conexin con la base de datos especificada. Respuesta del usuario: Verifique que el nombre de la base de datos, el controlador, el ID de usuario y la contrasea sean vlidos y operativos. DSYG004I: La conexin con la base de datos nombre base datos ha sido satisfactoria. Explicacin: Se ha establecido satisfactoriamente una conexin con la base de datos especificada. Respuesta del usuario: No se necesita ninguna accin. DSYG005E: No se encontr una licencia vlida para la instalacin del producto. Explicacin: Debe haber una licencia vlida instalada para este producto. Respuesta del usuario: Pngase en contacto con IBM para obtener informacin sobre cmo adquirir este producto. DSYG006I: La licencia de evaluacin para la instalacin del producto caduca dentro de das restantes das. Explicacin: La instalacin de este producto slo tiene licencia con fines de evaluacin y dejar de ser vlida en el nmero de das especificado. Respuesta del usuario: Pngase en contacto con IBM para obtener informacin sobre cmo adquirir este producto para evitar la interrupcin del servicio. DSYG007I: No se puede abrir el archivo de anotaciones, excepcin: excepcin. Explicacin: DB2 Everyplace Sync Server no ha podido abrir el archivo de anotaciones cronolgicas porque se ha encontrado la excepcin especificada. Respuesta del usuario: Verifique que la variable Trace.Path del archivo DSYGdflt.properties especifique una va de acceso vlida y que el usuario actual tenga los permisos de creacin/lectura/grabacin necesarios. DSYG008I: No se puede escribir en el archivo de anotaciones nombre archivo anotaciones, excepcin: excepcin. Explicacin: DB2 Everyplace Sync Server no ha podido escribir en el archivo de anotaciones cronolgicas especificado porque se ha encontrado la excepcin especificada. Respuesta del usuario: Verifique que la variable Trace.Path del archivo DSYGdflt.properties especifique una va de acceso vlida y que el usuario actual tenga los permisos de creacin/lectura/grabacin necesarios. DSYG010E: La base de datos de control DSYCTLDB es incompatible con esta instalacin de Sync Server: nivel Explicacin: Este Sync Server requiere que la instalacin est al mismo nivel que la base de datos de control DSYCTLDB. Respuesta del usuario: Si est actualizando o instalando un nuevo Sync Server, la base de datos de control DSYCTLDB se deber instalar o actualizar al mismo nivel utilizando el paquete de instalacin. Si la base de datos DSYCTLDB se ha actualizado, esta instalacin Sync Server se deber
Consulta

157

actualizar al mismo nivel. Si ninguna de estas acciones es el caso o si no resuelven el problema, pngase en contacto con el Soporte de software de IBM. DSYG011E: No se puede leer el archivo nombre archivo. Explicacin: El archivo especificado no se ha podido leer porque no existe o porque los permisos prohben esta accin. Respuesta del usuario: Verifique que el archivo especificado exista y que est accesible. DSYG013E: No se ha podido cargar la subclase CustomLogicPolicy nombre clase. Explicacin: No se ha podido cargar una clase designada por el administrador de DB2 Everyplace para que sea una implementacin de una subclase CustomLogicPolicy. Respuesta del usuario: Asegrese de que la subclase CustomLogicPolicy especificada resulte accesible para todas las instancias de Sync Server, para cualquier proceso dsyreplicate autnomo y para el Centro de administracin de dispositivos porttiles y la herramienta para realizar scripts XML. Si esto no resuelve el problema, pngase en contacto con el Soporte de software de IBM. DSYG014I: Se est bloqueando la base de datos de rplica nombre base datos. Explicacin: Se est solicitando a los servidores que paren de atender las peticiones de sincronizacin y duplicacin para esta base de datos de rplica. Respuesta del usuario: No se necesita ninguna accin. DSYG015I: Actualizando la base de datos de control. Explicacin: Se estn aplicando los cambios solicitados a la base de datos de control. Respuesta del usuario: No se necesita ninguna accin. DSYG016I: Se est desbloqueando la base de datos de rplica nombre base datos. Explicacin: Se est solicitando a los servidores que sigan atendiendo las peticiones de sincronizacin y duplicacin para esta base de datos de rplica. Respuesta del usuario: No se necesita ninguna accin. DSYG017E: No se puede editar la suscripcin porque ha habido un error al cargar los detalles de la suscripcin: mensaje error Explicacin: La suscripcin no se ha inicializado completamente anteriormente y no se puede editar en este momento porque no se conocen los detalles de la suscripcin. Respuesta del usuario: Asegrese de que las bases de datos fuente, y si es necesario las de rplica, sean accesibles y que sus contenidos sean vlidos. Si no hay ningn problema de conexin, asegrese de que el URL sea correcto y que los controladores estn en CLASSPATH. La suscripcin se basa en la informacin de la fuente y la rplica para definirse completamente. Cuando la base de datos fuente y/o de rplica est inactiva, las acciones que se podrn aplicar a la suscripcin sern limitadas. DSYG018I: Se est duplicando la base de datos de rplica nombre base datos.

158

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Explicacin: Se est duplicando la base de datos para sincronizarla con la fuente. Respuesta del usuario: No se necesita ninguna accin. DSYG019I: No hay cambios que aplicar en la base de datos de control para la suscripcin nombre suscripcin. Explicacin: No se realizarn cambios en la base de datos de control para esta operacin. Respuesta del usuario: No se necesita ninguna accin. DSYG020I: Se estn creando activadores. Explicacin: Se trata de un mensaje de progreso. Respuesta del usuario: No se necesita ninguna accin. DSYG021I: Se estn creando tablas de control de duplicacin. Explicacin: Se trata de un mensaje de progreso. Respuesta del usuario: No se necesita ninguna accin. DSYG022I: Se estn estableciendo estructuras de control de filtrado de unin. Explicacin: Se trata de un mensaje de progreso. Respuesta del usuario: No se necesita ninguna accin. DSYG023I: Se est solicitando duplicacin. Explicacin: Se trata de un mensaje de progreso. Respuesta del usuario: No se necesita ninguna accin. DSYG024I: Se estn eliminando estructuras de control de filtrado de unin. Explicacin: Se trata de un mensaje de progreso. Respuesta del usuario: No se necesita ninguna accin. DSYG025I: Se estn eliminando tablas de control de duplicacin. Explicacin: Se trata de un mensaje de progreso. Respuesta del usuario: No se necesita ninguna accin. DSYG026I: Se estn eliminando activadores. Explicacin: Se trata de un mensaje de progreso. Respuesta del usuario: No se necesita ninguna accin. DSYG027E: La conexin con la base de datos nombre base datos ha fallado; por lo tanto, no es posible inicializar por completo la suscripcin nombre suscripcin. Explicacin: Para poder recuperar detalles de la suscripcin, se necesita acceso a la base de datos especificada pero la base de datos est inactiva o hay otro problema de conexin. Respuesta del usuario:Asegrese de que la base de datos especificada est activa y debidamente configurada. Asegrese de que el URL de JDBC sea correcto y los controladores JDBC estn en la variable CLASSPATH de Java. DSYG028E: La tabla nombre tabla no se encuentra en la base de datos nombre base datos.

Consulta

159

Explicacin: La suscripcin utiliza una tabla que no existe en la base de datos o la base de datos no estaba accesible en el momento en que se produjo este error y no se ha podido recuperar la lista de tablas. Respuesta del usuario: Asegrese de que la tabla especificada exista en la base de datos y verifique que la base de datos especificada est activa y debidamente configurada para el acceso mediante JDBC. DSYG029E: No se han podido cargar las tablas de la suscripcin nombre de suscripcin. Causa raz: mensaje excepcin Explicacin: No se han recuperado detalles de las tablas de la suscripcin debido a un error. Es posible que la causa real sea que una base de datos fuente o de rplica est inactiva o que se haya especificado un URL de base de datos incorrecto o que falte un controlador JDBC en CLASSPATH. Respuesta del usuario: Verifique que las bases de datos fuente y de rplica estn activas y debidamente configuradas para el acceso mediante JDBC. Asegrese de que las tablas a las que la suscripcin hace referencia an existan. DSYG030E: No se ha definido el objeto de DB2e Sync Server nombre de objeto que falta. Explicacin: Se ha realizado un intento de utilizar un objeto no definido como, por ejemplo, una base de datos, una suscripcin, un conjunto de suscripcin, un grupo, un usuario u otro tipo que an no est definido en Sync Server. Este objeto se debe definir utilizando la Consola de administracin o la herramienta de realizacin de scripts XML para poder utilizarlo. Respuesta del usuario: Verifique que el objeto al que se hace referencia est realmente definido en la configuracin de DB2e Sync Server. La causa puede ser un error tipogrfico o de configuracin. DSYG031E: No se ha definido la base de datos de DB2e Sync Server nombre base datos. Explicacin: Se ha realizado un intento de utilizar una base de datos de rplica o maestra no definida. Esta base de datos se debe definir utilizando la Consola de administracin o la herramienta de realizacin de scripts XML para poder utilizarlo. Respuesta del usuario: Verifique que la base de datos a la que se hace referencia est realmente definido en la configuracin de DB2e Sync Server. La causa puede ser un error tipogrfico o de configuracin. DSYJ000E: El adaptador de base de datos ha detectado una operacin de no insercin en una suscripcin Put: operacin. Explicacin: En una suscripcin Put, slo se permite la suscripcin. La supresin y la actualizacin se rechazan. Respuesta del usuario: No se necesita ninguna accin. DSYJ001E: Se ha producido un error de base de datos. mensaje de error de base datos Explicacin: Se ha producido un error en la base de datos. El mensaje de error se obtiene de la base de datos. Respuesta del usuario: Consulte la documentacin de la base de datos para diagnosticar el problema. Si el problema persiste, pngase en contacto con el administrador de la base de datos.

160

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

DSYJ002E: Nombre de controlador de JDBC no vlido nombre controlador. Explicacin: MDSS no puede determinar qu base de datos est utilizando el nombre del controlador JDBC especificado. Respuesta del usuario: Verifique que el nombre del controlador JDBC sea correcto. Si es correcto, aada el controlador JDBC al archivo com\\ibm\\mobileservices\\DSYJdbcDriverList.properties. DSYM000E: No se puede iniciar el Centro de administracin de dispositivos porttiles de DB2 Everyplace porque la base de control necesaria DSYCTLDB no existe o no es vlida. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no se ha podido iniciar porque la base de control necesaria DSYCTLDB no existe o no es vlida. Respuesta del usuario: Verifique que la base de datos de control DSYCTLDB exista. Vuelva a ejecutar el script para crear la base de datos de control (por ejemplo, dsyctldb.bat). DSYM001E: No se puede localizar el ID del conjunto de suscripcin nombre conjunto suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar el conjunto de suscripcin especificado. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM006E: Nombre de conjunto de suscripcin no vlido o duplicado nombre conjunto suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el conjunto de suscripcin especificado porque el nombre no es vlido o existe otro conjunto de suscripcin con el mismo nombre. Respuesta del usuario: Especifique un nombre de conjunto de suscripcin vlido y exclusivo y vuelva a intentarlo. DSYM007E: No se ha podido actualizar el nombre del conjunto de suscripcin nombre conjunto suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el conjunto de suscripcin especificado porque el nombre no es vlido o ya existe. Respuesta del usuario: Especifique un nombre de conjunto de suscripcin vlido y exclusivo y vuelva a intentarlo. DSYM008E: No se ha podido actualizar la descripcin del conjunto de suscripcin nombre conjunto suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la descripcin del conjunto de suscripcin especificado porque la descripcin no es vlida. Respuesta del usuario: Especifique una descripcin de conjunto de suscripcin vlida y vuelva a intentarlo. DSYM009E: No se ha podido actualizar la signatura del conjunto de suscripcin nombre conjunto suscripcin. Accin cancelada.

Consulta

161

Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la signatura del conjunto de suscripcin especificado porque la signatura no es vlida. Respuesta del usuario: Especifique una signatura de conjunto de suscripcin vlida y vuelva a intentarlo. DSYM010E: No se han podido actualizar las suscripciones del conjunto de suscripcin nombre conjunto suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar las suscripciones del conjunto de suscripcin especificado. Posible motivo: la suscripcin no es vlida o no existe. Respuesta del usuario: Verifique que la suscripcin sea vlida y vuelva a intentarlo. DSYM011E: No se han podido actualizar los grupos del conjunto de suscripcin nombre conjunto suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar los grupos del conjunto de suscripcin especificado. Posible motivo: el grupo no es vlido o no existe. Respuesta del usuario: Verifique que el grupo sea vlido y vuelva a intentarlo. DSYM012E: No se encuentra el ID del usuario nombre usuario. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar el usuario especificado. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM013E: Nombre de usuario nombre usuario no vlido o duplicado. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el usuario especificado porque el nombre no es vlido o existe otro usuario con el mismo nombre. Respuesta del usuario: Especifique un nombre de usuario vlido y exclusivo y vuelva a intentarlo. DSYM014E: No se ha podido actualizar el nombre del usuario nombre usuario. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el usuario especificado porque el nombre no es vlido o ya existe. Respuesta del usuario: Especifique un nombre de usuario vlido y exclusivo y vuelva a intentarlo. DSYM015E: No se ha podido actualizar la descripcin del usuario nombre usuario. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la descripcin del usuario especificado porque la descripcin no es vlida. Respuesta del usuario: Especifique una descripcin de usuario vlida y vuelva a intentarlo.

162

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

DSYM016E: No se puede asociar el grupo con el usuario nombre usuario. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido asociar un grupo con el usuario especificado. Posible motivo: el grupo no es vlido o no existe. Respuesta del usuario: Verifique que el grupo sea vlido y vuelva a intentarlo. DSYM017E: No se ha podido actualizar la contrasea del usuario nombre usuario. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la contrasea del usuario especificado porque la contrasea no es vlida. Respuesta del usuario: Especifique una contrasea de usuario vlida y vuelva a intentarlo. DSYM018E: No se ha podido actualizar el estado habilitado del usuario nombre usuario. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el estado habilitado del usuario especificado porque el estado habilitado no es vlido. Respuesta del usuario: Especifique un estado habilitado de usuario vlido y vuelva a intentarlo. DSYM019E: No se han podido actualizar los filtros de datos del usuario nombre usuario. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar los filtros de datos del usuario especificado. Posibles motivos: el filtro de datos a nivel de grupo no es vlido o no existe o el filtro de datos del usuario no es vlido. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM020E: No se ha podido eliminar el filtro de datos nombre filtro datos del usuario. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido eliminar el filtro de datos especificado del usuario. Posibles motivos: el filtro de datos no es vlido o ya no est definido a nivel de grupo. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM021E: No se ha podido eliminar el filtro de datos nombre filtro datos del grupo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido eliminar el filtro de datos especificado del grupo. Posible motivo: el filtro de datos no es vlido o ya no existe. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM023E: No se puede localizar el ID para el grupo nombre grupo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar el grupo especificado. Respuesta del usuario: Corrija el error y vuelva a intentarlo.
Consulta

163

DSYM024E: Nombre de grupo nombre grupo no vlido o duplicado. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el grupo especificado porque el nombre no es vlido o existe otro grupo con el mismo nombre. Respuesta del usuario: Especifique un nombre de grupo vlido y exclusivo y vuelva a intentarlo. DSYM025E: No se ha podido actualizar el nombre del grupo usuario nombre grupo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el grupo especificado porque el nombre no es vlido o ya existe. Respuesta del usuario: Especifique un nombre de grupo vlido y exclusivo y vuelva a intentarlo. DSYM026E: No se ha podido actualizar la descripcin del grupo nombre grupo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la descripcin del grupo especificado porque la descripcin no es vlida. Respuesta del usuario: Especifique una descripcin de grupo vlida y vuelva a intentarlo. DSYM028E: No se ha podido actualizar el estado habilitado del grupo nombre grupo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el estado habilitado del grupo especificado porque el estado habilitado no es vlido. Respuesta del usuario: Especifique un estado habilitado de grupo vlido y vuelva a intentarlo. DSYM029E: No se puede asociar el usuario con el grupo nombre grupo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido asociar un usuario con el grupo especificado. Posible motivo: el usuario no es vlido o no existe. Respuesta del usuario: Verifique que el usuario sea vlido y vuelva a intentarlo. DSYM030E: No se puede asociar el conjunto de suscripcin con el grupo nombre grupo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido asociar un conjunto de suscripcin con el grupo especificado. Posible motivo: el conjunto de suscripcin no es vlido o no existe. Respuesta del usuario: Verifique que el conjunto de suscripcin sea vlido y vuelva a intentarlo. DSYM031E: No se han podido actualizar los filtros de datos del grupo nombre grupo. Accin cancelada.

164

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar los filtros de datos del grupo especificado. Posible motivo: el valor del filtro de datos del grupo no es vlido. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM032E: No se encuentra el ID de la suscripcin nombre suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar la suscripcin especificada. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM040E: No se ha podido actualizar la indicacin horaria de la suscripcin de archivo nombre suscripcin archivo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la indicacin de la hora de la suscripcin de archivo especificada porque la indicacin de la hora no es vlida. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM042E: No se ha podido actualizar la fuente de la suscripcin de archivo nombre suscripcin archivo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la fuente de la suscripcin de archivo especificada porque la fuente no es vlida. Respuesta del usuario: Especifique una fuente de suscripcin de archivo vlida y vuelva a intentarlo. DSYM043E: No se ha podido actualizar el destino de la suscripcin de archivo nombre suscripcin archivo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el destino de la suscripcin de archivo especificada porque el destino no es vlido. Respuesta del usuario: Especifique un destino de suscripcin de archivo vlido y vuelva a intentarlo. DSYM045E: Base de datos fuente no vlida para la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado una base de datos no vlida para la suscripcin de tabla especificada. Respuesta del usuario: Verifique que la base de datos fuente correcta y est en el formato {SISTEMA}.{INSTANCIA}.{BASEDATOS}. DSYM046E: Nombre de suscripcin de tabla nombre suscripcin tabla no vlido o duplicado. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la suscripcin de tabla especificada porque el nombre no es vlido o ya existe otra suscripcin de tabla con el mismo nombre. Respuesta del usuario: Especifique un nombre de suscripcin de tabla vlido y exclusivo y vuelva a intentarlo.
Consulta

165

DSYM047E: Falta la suscripcin de DataPropagator o no es vlida. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar la suscripcin asociada de DataPropagator especificada. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM048E: No se pueden crear propiedades de duplicacin de fuente para la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido crear las propiedades de duplicacin de fuente para la suscripcin de tabla especificada. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM049E: No se pueden crear propiedades de duplicacin de rplica para la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido crear las propiedades de duplicacin de rplica de la suscripcin de tabla especificada. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM052E: No se puede localizar el ID de propiedades de duplicacin de fuente para la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar las propiedades de duplicacin de fuente de la suscripcin de tabla especificada. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM053E: No se puede localizar el ID de propiedades de duplicacin de rplica para la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar las propiedades de duplicacin de rplica de la suscripcin de tabla especificada. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM056E: No se ha podido actualizar el sistema fuente de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el sistema fuente de la suscripcin de tabla especificada porque el sistema fuente no es vlido. Respuesta del usuario: Especifique un sistema fuente de suscripcin de tabla vlido y vuelva a intentarlo. DSYM057E: No se ha podido actualizar la instancia fuente de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la instancia fuente de la suscripcin de tabla especificada porque la instancia fuente no es vlida. Respuesta del usuario: Especifique una instancia fuente de suscripcin de tabla vlida y vuelva a intentarlo.

166

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

DSYM058E: No se ha podido actualizar la base de datos fuente de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la base de datos fuente de la suscripcin de tabla especificada porque la base de datos fuente no es vlida. Respuesta del usuario: Especifique una base de datos fuente de suscripcin de tabla vlida y vuelva a intentarlo. DSYM059E: No se ha podido actualizar el ID de usuario fuente de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el ID de usuario fuente de la suscripcin de tabla especificada porque el ID de usuario fuente no es vlido. Respuesta del usuario: Especifique un ID de usuario fuente de suscripcin de tabla vlido y vuelva a intentarlo. DSYM060E: No se ha podido actualizar la contrasea fuente de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la contrasea fuente de la suscripcin de tabla especificada porque la contrasea fuente no es vlida. Respuesta del usuario: Especifique una contrasea fuente de suscripcin de tabla vlida y vuelva a intentarlo. DSYM061E: No se ha podido actualizar la base de datos de rplica de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la base de datos de rplica de la suscripcin de tabla especificada porque la base de datos de rplica no es vlida. Respuesta del usuario: Especifique una base de datos de rplica de suscripcin de tabla vlida y vuelva a intentarlo. DSYM062E: No se ha podido actualizar el ID de usuario de rplica de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el ID de usuario de rplica de la suscripcin de tabla especificada porque el ID de usuario de rplica no es vlido. Respuesta del usuario: Especifique un ID de usuario de rplica de suscripcin de tabla vlido y vuelva a intentarlo. DSYM063E: No se ha podido actualizar la contrasea de rplica de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la contrasea de rplica de la suscripcin de tabla especificada porque la contrasea de rplica no es vlida. Respuesta del usuario: Especifique una contrasea de rplica de suscripcin de tabla vlida y vuelva a intentarlo.
Consulta

167

DSYM064E: No se ha podido actualizar la ventana de sincronizacin de rplica de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la ventana de sincronizacin de rplica de la suscripcin de tabla especificada la ventana de sincronizacin de rplica no es vlida. Respuesta del usuario: Especifique una ventana de sincronizacin de rplica de suscripcin de tabla vlida y vuelva a intentarlo. DSYM066E: No se ha podido actualizar la base de datos de destino de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la base de datos de destino de la suscripcin de tabla especificada porque la base de datos de destino no es vlida. Respuesta del usuario: Especifique una base de datos de destino de suscripcin de tabla vlida y vuelva a intentarlo. DSYM067E: No se ha podido actualizar el calificador de Apply de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el calificador de Apply de la suscripcin de tabla especificada porque el calificador de Apply no es vlido. Respuesta del usuario: Especifique un calificador de Apply de suscripcin de tabla vlido y vuelva a intentarlo. DSYM070E: No se han podido actualizar las subtablas de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar las subtablas de la suscripcin de archivo especificada porque una subtabla no es vlida. Respuesta del usuario: Especifique una subtabla de suscripcin de tabla vlida y vuelva a intentarlo. DSYM072E: No se pueden crear tablas de control del gestor de tablas DataPropagator para la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido completar los cambios en la suscripcin especificada debido a una excepcin. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM073I: No se pueden actualizar las tablas de control del gestor de tablas DataPropagator para la suscripcin de tabla nombre suscripcin tabla. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido completar los cambios en la suscripcin especificada debido a una excepcin. Respuesta del usuario: No se necesita ninguna accin. DSYM074E: La suscripcin de duplicacin que utiliza la tabla fuente nombre tabla fuente y la tabla de destino nombre tabla destino no contiene una columna de destino con una clave primaria. Accin cancelada.

168

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Explicacin: La tabla de suscripcin de duplicacin especificada no es vlida porque no contiene una columna de destino definida como clave primaria. Respuesta del usuario: Utilice la pestaa Columnas de destino del dilogo Definicin de suscripcin avanzada para seleccionar una o varias columnas de destino para que acten como claves primarias. DSYM075E: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha encontrado una excepcin inesperada excepcin. Intente corregir el error especificado en la excepcin. Si no puede hacerlo, cierre el Centro de administracin de dispositivos porttiles de DB2 Everyplace y vuelva a intentarlo. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha encontrado la excepcin especificada. Es posible que la excepcin incluya informacin adicional para identificar la causa del error y pasos para corregir el error. Respuesta del usuario: Intente corregir el error especificado en la excepcin. Si no puede hacerlo, cierre el Centro de administracin de dispositivos porttiles de DB2 Everyplace y vuelva a intentarlo. Si el error persiste, pngase en contacto con el administrador de la base de datos. DSYM077E: La contrasea y la contrasea de confirmacin del usuario nombre usuario no coinciden. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la contrasea del usuario especificado porque la contrasea y la contrasea de confirmacin no coinciden. Respuesta del usuario: Especifique una contrasea vlida que coincida, verifique la contrasea y vuelva a intentarlo. DSYM079E: La contrasea y la contrasea de confirmacin de la base de datos fuente de la suscripcin de tabla nombre suscripcin tabla no coinciden. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la contrasea de la base de datos fuente de la suscripcin de tabla especificada porque la contrasea de la base de datos fuente y la contrasea de confirmacin de la base de datos fuente no coinciden. Respuesta del usuario: Especifique una contrasea de base de datos fuente vlida y que coincida, verifique la contrasea y vuelva a intentarlo. DSYM080E: La contrasea y la contrasea de confirmacin de la base de datos de rplica de la suscripcin de tabla nombre suscripcin tabla no coinciden. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la contrasea de la base de datos de rplica de la suscripcin de tabla especificada porque la contrasea de la base de datos de rplica y la contrasea de confirmacin de la base de datos de rplica no coinciden. Respuesta del usuario: Especifique una contrasea de base de datos de rplica vlida y que coincida, verifique la contrasea y vuelva a intentarlo. DSYM082E: Nombres de tabla de destino duplicados para la suscripcin de tabla nombre suscripcin tabla. Accin cancelada.

Consulta

169

Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado nombres de tablas de destino duplicados para la suscripcin de tabla especificada. Los nombres de tablas de destino que se encuentren en una sola suscripcin de tabla deben ser exclusivos. Respuesta del usuario: Especifique nombres de tablas de destino exclusivos y vuelva a intentarlo. DSYM083E: Nombres de tabla de destino duplicados para suscripciones de tabla asignados al conjunto de suscripcin nombre conjunto suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado nombres de tablas de destino duplicados para dos o ms suscripciones de tabla asignadas al conjunto de suscripcin especificado. Los nombres de tabla de destino de las suscripciones de tabla asignadas a un conjunto de suscripcin deben ser exclusivos. Respuesta del usuario: Asegrese de que las suscripciones de tabla asignadas al conjunto de suscripcin especificado utilicen nombres de tabla de destino exclusivos y vuelva a intentarlo. DSYM084E: Nombres de tabla de destino duplicados para suscripciones de tabla asignados a conjuntos de suscripcin del grupo nombre grupo. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado nombres de tablas de destino duplicados para dos o ms suscripciones de tabla de conjuntos de suscripcin asignados al grupo especificado. Los nombres de tabla de destino de las suscripciones de tabla asignadas a conjuntos de suscripcin de un grupo deben ser exclusivos. Respuesta del usuario: Asegrese de que las suscripciones de tabla asignadas al grupo especificado utilicen nombres de tabla de destino exclusivos y vuelva a intentarlo. DSYM085E: La asignacin del conjunto de suscripcin nombre conjunto suscripcin a uno o varios grupos seleccionados dara como resultado nombres de tabla de destino de suscripcin de tabla duplicados. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que la asignacin del conjunto de suscripcin especificado para el grupo o los grupos dara como resultado nombres de tabla de destino duplicados. Los nombres de tabla de destino de las suscripciones de tabla utilizadas por un grupo deben ser exclusivos. Respuesta del usuario: Asegrese de que los grupos que utilicen las suscripciones de tabla asignadas en el conjunto de suscripcin especificado utilicen nombres de tabla de destino exclusivos y vuelva a intentarlo. DSYM086E: La asignacin de la suscripcin de tabla nombre suscripcin tabla a uno o varios conjuntos de suscripcin seleccionados dara como resultado nombres de tabla de destino de suscripcin de tabla duplicados. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que la asignacin de la suscripcin especificada para el conjunto de suscripcin o los conjuntos de suscripcin dara como resultado nombres de tabla de destino duplicados. Los nombres de tabla de destino de las suscripciones de tabla utilizadas por un conjunto de suscripcin deben ser exclusivos.

170

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Respuesta del usuario: Asegrese de que los conjuntos de suscripcin que utilicen la suscripcin de tabla especificada utilicen nombres de tabla de destino exclusivos y vuelva a intentarlo. DSYM087E: La asignacin de uno o varios conjuntos de suscripcin al grupo nombre grupo dara como resultado nombres de tabla de destino de suscripcin de tabla duplicados. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que la asignacin de conjuntos de suscripciones al grupo especificado dara como resultado nombres de tabla de destino duplicados. Los nombres de tabla de destino de las suscripciones de tabla asignadas a conjuntos de suscripcin de un grupo deben ser exclusivos. Respuesta del usuario: Asegrese de que las suscripciones de tabla asignadas a conjuntos de suscripcin correspondientes al grupo especificado contengan nombres de tabla de destino exclusivos y vuelva a intentarlo. DSYM088E: No se ha podido suprimir la instancia de un adaptador por omisin DSY nombre adaptador. Accin ignorada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado un intento de suprimir el adaptador por omisin DSY especificado. El adaptador especificado no se puede suprimir porque el Centro de administracin de dispositivos porttiles de DB2 Everyplace lo necesita. Respuesta del usuario: No intente eliminar ningn adaptador por omisin DSY. DSYM089E: Nombre de adaptador nombre adaptador no vlido o duplicado. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el adaptador especificado porque el nombre no es vlido o existe otro adaptador con el mismo nombre. Respuesta del usuario: Especifique un nombre de adaptador vlido y exclusivo y vuelva a intentarlo. DSYM090E: No se encuentra el ID del adaptador nombre adaptador. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar el adaptador especificado. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM091E: No se ha podido actualizar el nombre del adaptador nombre adaptador. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el adaptador especificado porque el nombre no es vlido o ya existe. Respuesta del usuario: Especifique un nombre de adaptador vlido y exclusivo y vuelva a intentarlo. DSYM092E: No se ha podido actualizar la descripcin del adaptador nombre adaptador. Accin cancelada.

Consulta

171

Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la descripcin del adaptador especificado porque la descripcin no es vlida. Respuesta del usuario: Especifique una descripcin de adaptador vlida y vuelva a intentarlo. DSYM093E: No se ha podido actualizar la signatura del adaptador nombre adaptador. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la signatura del adaptador especificado porque la signatura no es vlida. Respuesta del usuario: Especifique una signatura de adaptador vlida y vuelva a intentarlo. DSYM095E: No se han podido actualizar los atributos de comunicacin del adaptador nombre adaptador. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar los atributos de comunicacin del adaptador especificado porque uno o varios atributos de comunicacin no son vlidos. Respuesta del usuario: Especifique atributos de comunicacin vlidos y vuelva a intentarlo. DSYM096E: No se han podido actualizar los atributos de archivo del adaptador nombre adaptador. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar los atributos de archivo del adaptador especificado porque uno o varios atributos de archivo no son vlidos. Respuesta del usuario: Especifique atributos de archivo vlidos y vuelva a intentarlo. DSYM098E: No se puede asociar el adaptador con la suscripcin nombre suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido asociar un adaptador con la suscripcin especificada. Posible motivo: el adaptador no es vlido o no existe. Respuesta del usuario: Verifique que el adaptador exista y sea vlido y vuelva a intentarlo. DSYM099E: No se puede disociar el adaptador de la suscripcin nombre suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido disociar un adaptador de la suscripcin especificada. Posible motivo: el adaptador no es vlido o no existe. Respuesta del usuario: Verifique que el adaptador exista y sea vlido y vuelva a intentarlo. DSYM100I: La suscripcin de la tabla DataPropagator nombre suscripcin tabla se ha creado satisfactoriamente. Puede que tenga que llevar a cabo pasos adicionales antes de poder utilizar la suscripcin de tabla para la sincronizacin. Consulte el manual DB2 Everyplace Sync Server Administration Guide para obtener ms informacin.

172

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha creado satisfactoriamente la suscripcin de tabla. No obstante, es posible que tenga que llevar a cabo pasos adicionales para poder utilizar la suscripcin especificada para la sincronizacin. Respuesta del usuario: Consulte el manual DB2 Everyplace Sync Server Administration Guide para obtener ms informacin. DSYM102E: No se puede suprimir el adaptador nombre adaptador ya que una o varias suscripciones lo estn utilizando en este momento. Accin ignorada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado un intento de suprimir el adaptador especificado. El adaptador especificado no se puede suprimir porque una o ms suscripciones an lo estn utilizando. Respuesta del usuario: Reasigne todas las suscripciones que utilicen el adaptador especificado para que utilicen adaptadores diferentes y vuelva a intentarlo (o renueve el objeto adaptador y vuelva a intentarlo). DSYM104E: No se puede conectar con la base de datos nombre base datos utilizando el controlador nombre controlador, el ID de usuario ID usuario. Explicacin: No se ha podido establecer una conexin con la base de datos especificada. Respuesta del usuario: Verifique que el nombre de la base de datos, el controlador, el ID de usuario y/o la contrasea sean vlidos y operativos. DSYM115W: Se han encontrado ms de mximo tablas tablas disponibles en la base de datos maestra nombre base datos maestra. Slo se visualizarn las primeras mximo tablas tablas. Utilice el botn Filtrar para limitar el conjunto de resultados de tablas disponibles. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado una cantidad de tablas disponibles superior a la cantidad mxima especificada en la base de datos maestra especificada. Respuesta del usuario: Si la tabla deseada no se encuentra en la lista, utilice el botn Filtrar para limitar el conjunto de resultados. DSYM122E: No se ha podido actualizar otra suscripcin personalizada nombre suscripcin personalizada. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar otra suscripcin personalizada especificada porque no es vlida. Respuesta del usuario: Especifique otra suscripcin personalizada vlida y vuelva a intentarlo. DSYM124E: No se puede cargar el personalizador nombre clase personalizador de adaptador nombre adaptador. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido cargar el personalizador de adaptador especificado. Posible motivo: el mandato de atributos de comunicacin del adaptador no es vlido, no se encuentra la clase o no est especificada en la variable de entorno CLASSPATH. Respuesta del usuario: Verifique que el mandato de atributos de comunicacin del adaptador sea vlido y verifique que la clase del mandato exista y que est especificada en la variable de entorno CLASSPATH.
Consulta

173

DSYM125E: No se puede cargar el personalizador nombre clase personalizador de adaptador nombre adaptador, excepcin excepcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido cargar el personalizador de adaptador especificado. Posible motivo: el mandato de atributos de comunicacin del adaptador no es vlido, no se encuentra la clase o no est especificada en la variable de entorno CLASSPATH. Respuesta del usuario: Verifique que el mandato de atributos de comunicacin del adaptador sea vlido y verifique que la clase del mandato exista y que est especificada en la variable de entorno CLASSPATH. DSYM127E: No se ha encontrado ningn adaptador personalizado vlido. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido permitir la accin de suscripcin personalizada porque no se ha encontrado ningn adaptador personalizado (no DSY). Respuesta del usuario: Defina, como mnimo, un adaptador personalizado y vuelva a intentarlo. DSYM128E: No se ha podido ubicar una base de datos local que pueda utilizarse como base de datos de rplica. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar ninguna base de datos local que pueda utilizarse como base de datos de rplica. Como mnimo, debe haber una base de datos local definida para utilizarla como base de datos de rplica. Respuesta del usuario: Asegrese de que haya, como mnimo, una base de datos local definida y vuelva a intentarlo. DSYM132E: No se soporta la base de datos fuente de AS/400 nombre base datos para suscripciones de tabla de JDBC. Explicacin: DB2 Everyplace Sync Server no soporta el nombre de base de datos especificado para la sincronizacin utilizando una suscripcin de tabla de JDBC. Para que Sync Server soporte una base de datos fuente AS/400, se necesita DB2/400 V5R1 o posterior. Respuesta del usuario: Utilice DB2/400 V5R1 o posterior para el soporte de suscripcin de tablas de JDBC. Si utiliza una versin anterior de DB2/400, consulte la suscripcin de tabla de DataPropragator del tipo de suscripcin. DSYM133E: No se puede completar la suscripcin personalizada nombre suscripcin porque el adaptador personalizado ha informado de una anomala al procesar la peticin de guardar. Accin cancelada. Explicacin: El adaptador personalizado ha informado de una anomala al procesar la peticin de guardar. Respuesta del usuario: Consulte la documentacin correspondiente al adaptador personalizado. DSYM134E: No se ha podido actualizar el nombre de clase del adaptador nombre adaptador. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar el nombre de clase del adaptador especificado porque el nombre de clase no es vlido.

174

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Respuesta del usuario: Especifique un nombre de clase de adaptador vlido y vuelva a intentarlo. DSYM135E: Se han encontrado bases de datos fuente y de rplica nombre base datos duplicadas. Explicacin: La suscripcin de tabla est intentando utilizar la base de datos especificada como fuente y tambin como rplica. Las bases de datos fuente y de rplica deben ser diferentes. Respuesta del usuario: Especifique nombres de base de datos fuente y de rplica distintos y vuelva a intentarlo. DSYM136E: No se ha podido actualizar el nivel de cifrado de la suscripcin nombre suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la suscripcin especificada porque el nivel de cifrado no es vlido. Respuesta del usuario: Especifique un nivel de cifrado vlido y vuelva a intentarlo. DSYM137E: La tabla nombre tabla no contiene una clave primaria. Accin cancelada. Explicacin: No se ha encontrado ninguna clave primaria en la tabla especificada. Una tabla debe tener, como mnimo, una clave primaria definida para que se pueda utilizar como suscripcin de tabla. Respuesta del usuario: Seleccione una tabla con una clave primaria y vuelva a intentarlo. DSYM138E: No se han podido actualizar las subcolumnas de la suscripcin de tabla nombre suscripcin tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar las subcolumnas de la suscripcin de archivo especificada porque una subcolumna no es vlida. Respuesta del usuario: Especifique una subcolumna de suscripcin de tabla vlida y vuelva a intentarlo. DSYM141E: Nombre de suscripcin nombre suscripcin no vlido o duplicado. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la suscripcin especificada porque el nombre no es vlido o existe otra suscripcin con el mismo nombre. Respuesta del usuario: Especifique un nombre de suscripcin vlido y exclusivo y vuelva a intentarlo. DSYM142E: No se puede crear la suscripcin nombre suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido crear la suscripcin especificada. Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM143E: No se encuentra el ID de la suscripcin nombre suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar la suscripcin especificada.
Consulta

175

Respuesta del usuario: Corrija el error y vuelva a intentarlo. DSYM144E: No se ha podido actualizar el nombre de la suscripcin nombre suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la suscripcin especificada porque el nombre no es vlido o ya existe. Respuesta del usuario: Especifique un nombre de suscripcin vlido y exclusivo y vuelva a intentarlo. DSYM145E: No se ha podido actualizar la descripcin de la suscripcin nombre suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la descripcin de la suscripcin especificada porque la descripcin no es vlida. Respuesta del usuario: Especifique una descripcin de suscripcin vlida y vuelva a intentarlo. DSYM146E: No se ha podido actualizar el adaptador de la suscripcin adaptador suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido actualizar la suscripcin especificada porque el adaptador no es vlido. Respuesta del usuario: Especifique un adaptador de suscripcin vlido y vuelva a intentarlo. DSYM149W: Se han eliminado uno o ms ndices definidos por el usuario pues daran lugar a ndices por omisin duplicados al utilizar claves primarias. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha eliminado automticamente uno o ms ndices definidos por el usuario porque eran duplicados de ndices de claves primarias. Respuesta del usuario: No se necesita ninguna accin. DSYM150I: Se han eliminado uno o ms ndices importados pues daran lugar a ndices duplicados al utilizar claves primarias. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha eliminado automticamente uno o ms ndices importados porque eran duplicados de ndices de claves primarias. Respuesta del usuario: No se necesita ninguna accin. DSYM153E: No se pueden permitir cambios de tabla en la suscripcin nombre suscripcin pues ha fallado la conexin con la base de datos nombre base datos utilizando el controlador nombre controlador y el ID de usuario ID usuario. El botn Definir Suscripcin est inhabilitado. Explicacin: El botn Definir Suscripcin se ha inhabilitado porque no se ha podido establecer una conexin con la base de datos especificada. Normalmente, esto se debe al cambio de la contrasea. Respuesta del usuario: Verifique que el nombre de la base de datos, el controlador, el ID de usuario y la contrasea sean vlidos y operativos utilizando el botn Probar conexin y aplique los cambios realizados pulsando el botn Bien. Una vez aplicados los cambios, vuelva a intentar la sincronizacin.

176

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

DSYM155E: No se puede utilizar la rplica nombre base datos rplica para la fuente nombre base datos fuente pues otra suscripcin ya utiliza la rplica con una fuente diferente. Dos bases de datos fuente diferentes no pueden tener la misma base de datos de rplica. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que otra suscripcin ya utilizaba la rplica especificada. Las bases de datos fuente diferentes no pueden compartir la misma base de datos de rplica. Respuesta del usuario: Cambie el nombre de la base de datos fuente y vuelva a intentarlo. DSYM156E: No se puede determinar si cualquiera de los dispositivos DB2 Everyplace estn instalados. Uno o ms de los tipos de dispositivo DB2 Everyplace debe estar instalado para poder crear o modificar una suscripcin de este tipo. Repase el archivo DSYIdflt.properties y compruebe que contenga la entrada DB2e.InstalledDeviceTypes o ejecute de nuevo el programa de instalacin de DB2 Everyplace. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido determinar qu dispositivos DB2 Everyplace estn instalados. Uno o ms de los tipos de dispositivo DB2 Everyplace debe estar instalado para poder crear o modificar una suscripcin de este tipo. Respuesta del usuario: Repase el archivo DSYIdflt.properties y compruebe que contenga la entrada DB2e.InstalledDeviceTypes o ejecute de nuevo el programa de instalacin de DB2 Everyplace. DSYM157E: Uno o ms servidores de Sync Server no han podido bloquear la suscripcin nombre suscripcin. Accin cancelada. Explicacin: Uno o ms servidores de Sync Server no han podido bloquear la suscripcin especificada. Se debe bloquear una suscripcin en todos los servidores activos para poder procesar la peticin de edicin. Respuesta del usuario: El administrador debe llevar a cabo los pasos siguientes para garantizar que la accin intentada resulte satisfactoria. 1. Asegurarse de que todos los servidores (o el servidor de un entorno de un solo servidor) no se estn ejecutando actualmente. 2. Asegurarse de que, en la vista Servidor de MDAC, todas las entradas del panel de la derecha muestren todos los servidores marcados como fuera de lnea. Si no lo estn, deber pulsar con el botn derecho del ratn sobre cada uno de los servidores y seleccionar Marcar como fuera de lnea. 3. Si el motor del servlet est a la escucha de solicitudes http en un puerto que no sea el 8080, debe asegurarse de que se haya establecido el valor adecuado para la propiedad Server.Port en el archivo DSYGdflt.properties. Despus de aadir este valor, deber suprimir el servidor en la vista Servidor de MDAC si hay una entrada con un valor incorrecto. Tenga en cuenta que este puerto debe estar accesible desde cualquier mquina que est ejecutando MDAC o scripts de MDAC. 4. Si se est ejecutando ms de un servidor en esta mquina, debe asegurarse de que Server.Name est definido con un valor exclusivo en el archivo DSYGdflt.properties. Despus de definir este valor, deber suprimir el servidor en la vista Servidor de MDAC si hay una entrada con un valor incorrecto. 5. Si hay ms de una direccin IP en la que el servidor est activo, deber asegurarse de que la direccin en la que el motor del servlet est a la escucha est definida en DSYGdflt.properties mediante la variable Server.IP. Una vez ms, deber suprimir cualquier entrada de la vista Servidor de MDAC si contiene un
Consulta

177

valor incorrecto. 6. Para evitar el error en el futuro, debe asegurarse de que todos los servidores se cierren mediante un mtodo de conclusin soportado en lugar de terminar el proceso o JVM. En el caso de una anomala que evite una conclusin correcta, deber abrir MDAC y marca los servidores que ya no se estn ejecutando como fuera de lnea tal como se ha descrito anteriormente. Despus de verificar todas las circunstancias anteriores, se puede reiniciar el servidor y/o volver a intentar la accin. DSYM158E: No se puede conectar con el servidor LDAP WEBSERVICE_SOAP_ROUTER utilizando el nombre de conexin nombre usuario.\n\nEspecifique un nombre de usuario o contrasea vlidos y pruebe de nuevo o modifique DSYLDAP.properties para cambiar la informacin de conexin predefinida correspondiente a LDAP.\n\nExcepcin de LDAP: excepcin. Explicacin: No se ha podido conectar con el servidor LDAP especificado utilizando el nombre de usuario y la contrasea especificados. Respuesta del usuario: Especifique un nombre de usuario y/o contrasea vlidos y vuelva a intentarlo o modifique DSYLDAP.properties para cambiar la informacin de conexin por omisin de LDAP. DSYM159E: No se puede determinar el servidor LDAP con el que conectar, pues no se especific una entrada WEBSERVICE_SOAP_ROUTER en el archivo com/ibm/mobileserivces/DSYLDAP.properties. Especifique una entrada vlida WEBSERIVCE_SOAP_ROUTER en el archivo com/ibm/mobileservices/DSYLDAP.properties y pruebe de nuevo. Explicacin: No se puede determinar el servidor LDAP con el que conectar, pues no se especific una entrada WEBSERVICE_SOAP_ROUTER en el archivo com/ibm/mobileservices/DSYLDAP.properties. Respuesta del usuario: Especifique una entrada vlida WEBSERIVCE_SOAP_ROUTER en el archivo com/ibm/mobileservices/DSYLDAP.properties y pruebe de nuevo. DSYM160W: No se encontr ningn grupo con el prefijo de nombre prefijo nombre grupo DB2e en el servidor LDAP WEBSERVICE_SOAP_ROUTER. Explicacin: No se han encontrado grupos con el prefijo DB2e* (el prefijo se puede configurar, es DB2e por omisin) en el servidor LDAP especificado. Respuesta del usuario: Defina, como mnimo, un grupo DB2e*. DSYM161W: No se encontr ningn usuario en el grupo de sincronizacin SYNCGROUP, servidor LDAP WEBSERVICE_SOAP_ROUTER. Explicacin: No se ha encontrado ningn usuario en el grupo de sincronizacin especificado. Respuesta del usuario: Especifique un grupo de sincronizacin que contenga uno o ms usuarios y vuelva a intentarlo. DSYM162W: Uno o ms tipos de dispositivo DB2 Everyplace instalados no dan soporte al cifrado de tablas. Los datos de las tablas de esos dispositivos no se cifrarn. Explicacin: El Centro de administracin de dispositivos porttiles ha detectado que se ha solicitado que la tabla se cifre, pero uno o ms tipos de dispositivo DB2 Everyplace instalados no dan soporte al cifrado. Por lo tanto, los datos de las tablas de estos dispositivos que no soportan el cifrado no se cifrarn.

178

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Respuesta del usuario: No se necesita ninguna accin. DSYM163E: La tabla nombre tabla contiene una clave primaria con una longitud superior a 255 o bien la longitud total de todas las claves primarias supera a 1024. Accin cancelada. Explicacin: En DB2 Everyplace, la longitud de columna de clave primaria no puede ser superior a 255 caracteres. En, DB2 Everyplace la longitud total de todas las columnas de clave primaria no puede ser superior a 1024 caracteres. Respuesta del usuario: Seleccione una tabla vlida y vuelva a intentarlo. DSYM165E: Uno o ms servidores de Sync Server no se encontraban fuera de lnea. Todos los Sync Server deben marcarse como fuera de lnea para crear una suscripcin de DataPropagator. Accin cancelada. Explicacin: Uno o ms servidores de Sync Server no se encontraban fuera de lnea. Todos los Sync Server deben marcarse como fuera de lnea para crear una suscripcin de DataPropagator. Respuesta del usuario: Marque todos los servidores como fuera de lnea y vuelva a intentarlo. DSYM166W: La suscripcin de DataPropagator nombre suscripcin est actualmente en modalidad de slo lectura. La suscripcin se puede ver, pero se ignorar cualquier cambio realizado debido a que uno o ms servidores de sincronizacin no se encontraba fuera de lnea. Todos los servidores de sincronizacin deben estar marcados en modalidad de fuera de lnea para editar una suscripcin de DataPropagator. Explicacin: Uno o ms servidores de Sync Server no se encontraban fuera de lnea. Todos los servidores de sincronizacin deben estar marcados en modalidad de fuera de lnea para editar una suscripcin de DataPropagator. Respuesta del usuario: Marque todos los servidores como fuera de lnea y vuelva a intentarlo. DSYM167E: La tabla fuente nombre tabla fuente tiene un error de sintaxis en la fuente a replicar texto de clusula where: texto clusula where. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado un error de sintaxis en la clusula where de la fuente a replicar (se necesitan todas las filas) de la tabla especificada. Respuesta del usuario: Valide la clusula where de la fuente a replicar (se necesitan todas las filas) de la tabla especificada y vuelva a intentarlo. DSYM168I: Se ha restablecido el usuario nombre usuario, el ID de dispositivo id dispositivo y el tipo de dispositivo tipo dispositivo. Explicacin: El dispositivo del usuario especificado se ha restablecido. Respuesta del usuario: No se necesita ninguna accin. DSYM169E: Ha fallado la actualizacin del tipo de poltica de lgica personalizada tipo poltica de la suscripcin nombre suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no puede actualizar la poltica de lgica personalizada de la suscripcin especificada porque la poltica especificada no es vlida. Respuesta del usuario: Especifique un tipo de poltica vlido y vuelva a intentarlo.
Consulta

179

DSYM170E: Uno o ms nombres de columna en la tabla nombre tabla excede longitud mxima nombre columna caracteres. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido aadir la tabla especificada porque las longitudes de los nombres de una o ms columnas ha excedido la longitud mxima del nombre de columna. Respuesta del usuario: Especifique una tabla con longitudes de nombres de columna vlidas y vuelva a intentarlo. DSYM171E: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no se ha podido comunicar con uno o ms servidores y no ha realizado la duplicacin en la base de datos de rplica nombre base datos rplica, razn: excepcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no se ha podido comunicar con uno o ms servidores y no ha realizado la duplicacin en la base de datos de rplica especificada debido a la excepcin especificada. Para evitar la prdida de datos, se ha cancelado la peticin de edicin. Respuesta del usuario: El administrador debe llevar a cabo los pasos siguientes para garantizar que la accin intentada resulte satisfactoria. 1. Asegurarse de que todos los servidores (o el servidor de un entorno de un solo servidor) no se estn ejecutando actualmente. 2. Asegurarse de que, en la vista Servidor de MDAC, todas las entradas del panel de la derecha muestren todos los servidores marcados como fuera de lnea. Si no lo estn, deber pulsar con el botn derecho del ratn sobre cada uno de los servidores y seleccionar Marcar como fuera de lnea. 3. Si el motor del servlet est a la escucha de solicitudes http en un puerto que no sea el 8080, debe asegurarse de que se haya establecido el valor adecuado para la propiedad Server.Port en el archivo DSYGdflt.properties. Despus de aadir este valor, deber suprimir el servidor en la vista Servidor de MDAC si hay una entrada con un valor incorrecto. Tenga en cuenta que este puerto debe estar accesible desde cualquier mquina que est ejecutando MDAC o scripts de MDAC. 4. Si se est ejecutando ms de un servidor en esta mquina, debe asegurarse de que Server.Name est definido con un valor exclusivo en el archivo DSYGdflt.properties. Despus de definir este valor, deber suprimir el servidor en la vista Servidor de MDAC si hay una entrada con un valor incorrecto. 5. Si hay ms de una direccin IP en la que el servidor est activo, deber asegurarse de que la direccin en la que el motor del servlet est a la escucha est definida en DSYGdflt.properties mediante la variable Server.IP. Una vez ms, deber suprimir cualquier entrada de la vista Servidor de MDAC si contiene un valor incorrecto. 6. Para evitar el error en el futuro, debe asegurarse de que todos los servidores se cierren mediante un mtodo de conclusin soportado en lugar de terminar el proceso o JVM. En el caso de una anomala que evite una conclusin correcta, deber abrir MDAC y marca los servidores que ya no se estn ejecutando como fuera de lnea tal como se ha descrito anteriormente. Despus de verificar todas las circunstancias anteriores, se puede reiniciar el servidor y/o volver a intentar la accin. DSYM172E: No se puede suprimir la suscripcin nombre suscripcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido suprimir la suscripcin especificada debido a

180

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

anomalas en las validaciones internas. Para evitar la prdida de datos, se ha cancelado la peticin de supresin. Respuesta del usuario: El administrador debe llevar a cabo los pasos siguientes para garantizar que la accin intentada resulte satisfactoria. 1. Asegurarse de que todos los servidores (o el servidor de un entorno de un solo servidor) no se estn ejecutando actualmente. 2. Asegurarse de que, en la vista Servidor de MDAC, todas las entradas del panel de la derecha muestren todos los servidores marcados como fuera de lnea. Si no lo estn, deber pulsar con el botn derecho del ratn sobre cada uno de los servidores y seleccionar Marcar como fuera de lnea. 3. Para evitar el error en el futuro, debe asegurarse de que todos los servidores se cierren mediante un mtodo de conclusin soportado en lugar de terminar el proceso o JVM. En el caso de una anomala que evite una conclusin correcta, deber abrir MDAC y marca los servidores que ya no se estn ejecutando como fuera de lnea tal como se ha descrito anteriormente. Despus de verificar todas las circunstancias anteriores, se puede reiniciar el servidor y/o volver a intentar la accin. DSYM173E: No se puede suprimir la suscripcin nombre suscripcin, razn: excepcin. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido suprimir la suscripcin especificada debido a una anomala de depuracin interna. Para evitar la prdida de datos, se ha detenido la peticin de supresin. Respuesta del usuario: El administrador debe llevar a cabo los pasos siguientes para garantizar que la accin intentada resulte satisfactoria. 1. Asegurarse de que todos los servidores (o el servidor de un entorno de un solo servidor) no se estn ejecutando actualmente. 2. Asegurarse de que, en la vista Servidor de MDAC, todas las entradas del panel de la derecha muestren todos los servidores marcados como fuera de lnea. Si no lo estn, deber pulsar con el botn derecho del ratn sobre cada uno de los servidores y seleccionar Marcar como fuera de lnea. 3. Para evitar el error en el futuro, debe asegurarse de que todos los servidores se cierren mediante un mtodo de conclusin soportado en lugar de terminar el proceso o JVM. En el caso de una anomala que evite una conclusin correcta, deber abrir MDAC y marca los servidores que ya no se estn ejecutando como fuera de lnea tal como se ha descrito anteriormente. Despus de verificar todas las circunstancias anteriores, se puede reiniciar el servidor y/o volver a intentar la accin. DSYM174E: El nombre de tabla de destino nombre tabla destino ya lo utiliza otra suscripcin para la rplica nombre base datos rplica. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que otra suscripcin de tabla correspondiente a la rplica especificada ya utilizaba el nombre de tabla de destino especificado. Los nombres de tablas de destino que se encuentren en una rplica deben ser exclusivos. Respuesta del usuario: Especifique un nombre de tabla de destino exclusivo y vuelva a intentarlo. DSYM175E: No se puede dar soporte a la caracterstica Unir filtro para la suscripcin nombre suscripcin, tabla de destino nombre tabla destino, razn: razn. Accin cancelada.

Consulta

181

Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que la tabla de destino especificada contiene un filtro de unin que no recibe soporte por el motivo especificado. Respuesta del usuario: Corrija el filtro de la tabla y vuelva a intentarlo. DSYM176E: No se puede localizar una base de datos local que se pueda utilizar como base de datos fuente. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace no ha podido localizar ninguna base de datos local que pueda utilizarse como base de datos fuente. Como mnimo, debe haber una base de datos local definida para utilizarla como base de datos fuente. Respuesta del usuario: Asegrese de que haya, como mnimo, una base de datos local definida y vuelva a intentarlo. DSYM178I: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que DB2 UDB v8.1 o posterior est instalado. Est ejecutando el Centro de control de UDB v7.2 que tiene soporte para DB2 Everyplace Sync Server. Los objetos especficos del Centro de control se ocultarn o inhabilitarn. Adems, el soporte de DPROPR se inhabilitar en el Centro de administracin de dispositivos porttiles de DB2 Everyplace. Para administrar DPROPR, utilice el Centro de duplicacin y la herramienta para realizar Scripts de XML de DB2 Everyplace. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que DB2 UDB v8.1 o posterior est instalado. Puesto que DB2 Everyplace Sync Server an no soporta totalmente UDB v8.1 o posterior, los objetos especficos del Centro de control se ocultarn o se inhabilitarn y la operativaidad de DPROPR se inhabilitar en el Centro de administracin de dispositivos porttiles de DB2 Everyplace. Para administrar DPROPR, utilice el Centro de duplicacin y la herramienta para realizar Scripts de XML de DB2 Everyplace. Respuesta del usuario: Para administrar la instalacin de DB2 UDB, utilice el Centro de control. Para administrar DPROPR, utilice el Centro de duplicacin y la herramienta para realizar Scripts de XML de DB2 Everyplace. DSYM179E: No se puede recuperar una lista de tablas de la base de datos fuente nombre base datos fuente utilizando el patrn de esquema patrn esquema, patrn de tabla patrn tabla. Puede que la lista de tablas a aadir est vaca. Razn: excepcin. Explicacin: El Centro de administracin de dispositivos porttiles no ha podido recuperar una lista de tablas de la base de datos fuente especificada debido a la excepcin inesperada especificada. Respuesta del usuario: Corrija la excepcin y vuelva a intentarlo. DSYM180E: La tabla fuente nombre tabla contiene una o ms columnas cuyos tipos de datos no estn soportados y son anulables con ningn valor por omisin especificado. La tabla no se puede utilizar en una suscripcin de tabla. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que la tabla fuente especificada contiene una o ms columnas que no estn soportadas y son anulables con ningn valor por omisin especificado. La tabla no se puede utilizar en una suscripcin de tabla.

182

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Respuesta del usuario: Especifique una tabla que no contenga tipos de datos no soportados y que no sea anulable con ningn valor por omisin especificado. DSYM181E: No se puede desbloquear la suscripcin nombre suscripcin hasta que finalice una duplicacin en la base de datos de rplica nombre base datos rplica. Accin cancelada. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que la suscripcin especificada no se puede desbloquear hasta que finalice una duplicacin de la base de datos de rplica especificada. Respuesta del usuario: Realice una duplicacin y vuelva a intentarlo. DSYM182W: No se puede dar soporte a la caracterstica Unir filtro para la suscripcin nombre suscripcin, tabla de destino nombre tabla destino, razn: razn. Se han confirmado cambios. Explicacin: El Centro de administracin de dispositivos porttiles de DB2 Everyplace ha detectado que la tabla de destino especificada contiene un filtro de unin que no recibe soporte por el motivo especificado. Se han confirmado cambios de la suscripcin. Respuesta del usuario: Corrija el filtro de la tabla y vuelva a intentarlo. DSYM183E: La tabla de destino nombre tabla destino no es vlida. Accin cancelada. Explicacin: La tabla de destino especificada no es vlida. Los nombres de las tablas de destino pueden tener una longitud mxima de 18 caracteres. Respuesta del usuario: Especifique un nombre de tabla de destino vlido y vuelva a intentarlo. DSYM184E: No se puede crear la sesin de Domino en el servidor nombre servidor Domino. Explicacin: No se puede acceder al servidor Domino por medio de DIIOP. Respuesta del usuario: Compruebe la configuracin del servidor Domino o la informacin de inicio de sesin. DSYM185I: Se suprimi usuario nombre usuario, ID de dispositivo id dispositivo, tipo de dispositivo tipo dispositivo. Explicacin: El dispositivo del usuario especificado se ha suprimido. Respuesta del usuario: No se necesita ninguna accin. DSYS000I: Se ha recibido una peticin de sincronizacin completa; operacin tipo operacin iniciada para el usuario nombre usuario, sesin nmero sesin, para la suscripcin nombre suscripcin. Explicacin: Se ha recibido una peticin de sincronizacin completa del usuario especificado porque se ha recibido el ltimo mensaje. DB2 Everyplace Sync Server empezar ahora el proceso de sincronizacin. Respuesta del usuario: No se necesita ninguna accin. DSYS001I: Ha finalizado la sincronizacin para el usuario nombre usuario, sesin nmero sesin, suscripcin nombre suscripcin. Explicacin: El proceso de sincronizacin del usuario especificado ha finalizado.

Consulta

183

Respuesta del usuario: No se necesita ninguna accin. DSYS002E: Ha fallado la sincronizacin para el usuario nombre usuario, sesin nmero sesin, suscripcin nombre suscripcin: razn. Explicacin: El proceso de sincronizacin del usuario especificado ha fallado. Respuesta del usuario: Pngase en contacto con el administrador de Sync Server. DSYS003I: Se ha iniciado la duplicacin para la base de datos nombre base datos fuente. Explicacin: Se ha iniciado el proceso de duplicacin para la base de datos especificada. Respuesta del usuario: No se necesita ninguna accin. DSYS004I: Ha finalizado la duplicacin para la base de datos nombre base datos fuente. Explicacin: Ha finalizado el proceso de duplicacin para la base de datos especificada. Respuesta del usuario: No se necesita ninguna accin. DSYS005E: Ha fallado la duplicacin para la base de datos nombre base datos: razn. Explicacin: El proceso de duplicacin para la base de datos especificada ha fallado. Respuesta del usuario: Pngase en contacto con el administrador de Sync Server. DSYS006I: Se est recibiendo la peticin de sincronizacin del usuario nombre usuario, sesin nmero sesin, para la suscripcin nombre suscripcin. Explicacin: El usuario especificado ha iniciado el proceso de sincronizacin y DB2 Everyplace Sync Server ha recibido el primer mensaje. Respuesta del usuario: No se necesita ninguna accin. DSYS007I: Se est reiniciando la sincronizacin para el usuario nombre usuario, sesin nmero sesin, para la suscripcin nombre suscripcin, desde el estado estado. Explicacin: DB2 Everyplace Sync Server ha reiniciado la sincronizacin para el usuario especificado. Respuesta del usuario: No se necesita ninguna accin. DSYS008I: Sincronizacin iniciada para el usuario nombre. Explicacin: Se ha iniciado la sincronizacin para el usuario especificado. Respuesta del usuario: No se necesita ninguna accin. DSYS009I: Sincronizacin finalizada para el usuario nombre usuario. Explicacin: Ha finalizado la sincronizacin para el usuario especificado. Respuesta del usuario: No se necesita ninguna accin. DSYS010I: Iniciando la sincronizacin. Explicacin: Se est iniciando la sincronizacin para el usuario especificado. An no se ha especificado ninguna suscripcin especfica.

184

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Respuesta del usuario: No se necesita ninguna accin. DSYS011I: Recibiendo la peticin de sincronizacin para la suscripcin especificada. Explicacin: Se est recibiendo una peticin de sincronizacin del usuario especificado para la suscripcin especificada. El servidor que est realizando el proceso en nombre de esta peticin an no ha empezado. Respuesta del usuario: No se necesita ninguna accin. DSYS012I: La sincronizacin de la suscripcin est en curso. Explicacin: Se ha recibido una peticin de sincronizacin completa del usuario especificado para la suscripcin especificada y se ha iniciado el proceso del servidor en nombre de esta peticin. Respuesta del usuario: No se necesita ninguna accin. DSYS013I: La sincronizacin de la suscripcin ha finalizado. Explicacin: El proceso del servidor de la sincronizacin de suscripcin especificada ha finalizado satisfactoriamente. Respuesta del usuario: No se necesita ninguna accin. DSYS014E: La sincronizacin de la suscripcin ha fallado. Explicacin: El proceso del servidor de la sincronizacin de suscripcin especificada no ha finalizado satisfactoriamente. Respuesta del usuario: Pngase en contacto con el administrador. DSYS015W: La sesin anterior estaba inacabada; se est realizando la recuperacin despus de la cancelacin de la sesin para el usuario nombre usuario, sesin nmero sesin, para la suscripcin nombre suscripcin. Explicacin: El cliente nunca ha recuperado los mensajes de una sincronizacin de suscripcin anterior. Ha sido necesaria la recuperacin de cancelacin de la sesin. Respuesta del usuario: No se necesita ninguna accin. DSYS016I: El usuario nombre usuario deber renovar la tabla nombre tabla en su prxima peticin de sincronizacin. Explicacin: Sync Server ha determinado que el usuario especificado no ha realizado ninguna sincronizacin de la tabla especificada durante un perodo de das definido por la propiedad MaxSyncPeriod.Days. En su prxima sincronizacin, al usuario se le notificar que debe renovar la tabla. El hecho de forzar esta renovacin permite a Sync Server mejorar el rendimiento para la sincronizacin frecuente de los usuarios. Respuesta del usuario: No se necesita ninguna accin. DSYS017I: El usuario nombre usuario ha actualizado satisfactoriamente el dispositivo. Explicacin: El servlet de despliegue automtico ha determinado que el usuario ha realizado la actualizacin satisfactoriamente. Respuesta del usuario: No se necesita ninguna accin. DSYS018E: El usuario nombre usuario no pudo actualizar el dispositivo. Explicacin: El servlet de despliegue automtico ha determinado que el usuario no ha podido realizar la actualizacin.
Consulta

185

Respuesta del usuario: No se necesita ninguna accin. DSYS019I: El usuario nombre usuario ha comenzado a actualizar el dispositivo. Explicacin: El servlet de despliegue automtico ha determinado que el usuario ha iniciado la actualizacin. Respuesta del usuario: No se necesita ninguna accin. DSYS020E: El directorio especificado en DSYDeploy.properties no existe: nombre directorio. Explicacin: El directorio especificado en DSYDeploy.properties no existe. Respuesta del usuario: La administracin debe realizar la accin adecuada. DSYS021E: El usuario nombre seguridad no es un miembro del grupo LDAP grupo sinc necesario. Sesin cancelada. Explicacin: El usuario especificado no es un miembro del grupo LDAP necesario. Un usuario debe ser miembro del SYNCGROUP especificado en com/ibm/mobileservices/DSYLDAP.properties para poder llevar a cabo la sincronizacin. Respuesta del usuario: Pngase en contacto con el administrador. DSYS023E: El usuario nombre seguridad pertenece a ms de un grupo LDAP con prefijo prefijo nombre grupo DB2e. Sesin cancelada. Explicacin: El usuario especificado es miembro de ms de un grupo que tiene el prefijo DB2e (el prefijo se puede configurar, es DB2e por omisin) que tiene suscripciones asignadas. Es posible que un usuario LDAP no pertenezca a varios grupos DB2e debido a posibles conflictos de suscripciones. Respuesta del usuario: Pngase en contacto con el administrador. DSYS024W: La agrupacin de hebras de sincronizacin ha alcanzado la capacidad mxima. Explicacin: El servidor ha empezado a poner en cola la nueva peticin de sincronizacin porque la agrupacin de hebras est llena. Esto provocar un aumento de los tiempos de respuesta del servidor para las nuevas peticiones. Respuesta del usuario: Si los recursos de la mquina no estn completamente maximizados, se recomienda aumentar el tamao de la agrupacin de hebras. El tamao de la agrupacin de hebras se determina en base a la propiedad ThreadPoolCount in DSYGdflt.properties. DSYS025W: La agrupacin de conexiones de sincronizacin ha alcanzado la capacidad mxima. Explicacin: El servidor ha empezado a esperar conexiones porque todas las conexiones de la agrupacin de conexiones se estn utilizando actualmente. Esto provocar un aumento de los tiempos de respuesta del servidor para las nuevas peticiones. Respuesta del usuario: Si los recursos de base de datos de la mquina no estn completamente maximizados, se recomienda aumentar el tamao de la agrupacin de conexiones. El tamao de la agrupacin de conexiones se determina en base a la propiedad Jdbc.MaxConnections de la tabla de propiedades de la base de datos de control.

186

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

DSYS026W: Ha fallado la autentificacin del dispositivo id dispositivo del grupo nombre grupo porque no est habilitado. Explicacin: Ha fallado la autentificacin del dispositivo porque no est habilitado. Respuesta del usuario: Asegrese de que este dispositivo/usuario/grupo est habilitado. DSYS027W: El dispositivo id dispositivo para el usuario nombre usuario ha fallado en la autentificacin porque no est asociado con un grupo. Explicacin: Ha fallado la autentificacin del dispositivo porque no est asociado con ningn grupo. Respuesta del usuario: Asegrese de que este usuario est asociado con un grupo. DSYS028W: Los datos enviados por el usuario nombre usuario, id de dispositivo id dispositivo no se pueden procesar. Esto puede suceder cuando se suprime el dispositivo o cuando se cambia el esquema de una tabla a la que se suscribe este usuario. Explicacin: El dispositivo ha enviado datos que el servidor no ha podido procesar debido a una accin administrativa realizada por este usuario, dispositivo o suscripcin asociada. Respuesta del usuario: Pngase en contacto con el usuario y solictele que vuelva a aplicar los cambios necesarios. DSYS029I: El usuario nombre usuario con id de dispositivo id dispositivo se sincroniza desde una imagen de renovacin fuera de lnea. Explicacin: El usuario est realizando la sincronizacin desde una imagen de renovacin fuera de lnea. Respuesta del usuario: No se necesita ninguna accin. DSYS030I: El usuario nombre usuario con id de dispositivo id dispositivo se sincroniza desde una imagen de copia de seguridad. Explicacin: El usuario est realizando la sincronizacin desde una imagen de copia de seguridad. Respuesta del usuario: No se necesita ninguna accin. DSYS031E: La imagen de copia de seguridad nombre usuario con dispositivo id dispositivo no se puede utilizar para sincronizar hasta que se procesen las sesiones anteriores. Explicacin: No se puede utilizar una imagen de copia de seguridad hasta que todas las sesiones previas del dispositivo hayan finalizado o hasta que el administrador suprima manualmente el dispositivo. Respuesta del usuario: Ejecute el mandato DSYINSTDIR/Server/bin/dsyrecovery o suprima el dispositivo. DSYS032W: El usuario nombre usuario con dispositivo id dispositivo no puede sincronizar porque la suscripcin est bloqueada. Explicacin: Es posible se haya bloqueado al usuario para la sincronizacin porque la suscripcin se est editando, el administrador la ha bloqueado manualmente, se est ejecutando la duplicacin actualmente o la duplicacin no ha finalizado satisfactoriamente.

Consulta

187

Respuesta del usuario: Desbloquee la suscripcin utilizando MDAC. Si la suscripcin no est bloqueada y no hay ninguna duplicacin en ejecucin, lleve a cabo la sincronizacin manualmente. De este modo, se recuperar cualquier sincronizacin que haya resultado anmala y la suscripcin estar disponible para la sincronizacin una vez que se haya editado. DSYT001E: El usuario nombre usuario no puede alterar temporalmente el filtro de datos nombre filtro datos porque el filtro de datos no est definido para este grupo de usuarios nombre grupo. Explicacin: Los usuarios slo pueden utilizar filtros de datos que estn definidos en sus grupos para personalizar el valor del filtro de datos basado en el usuario actual. En este caso, el script XML habr intentado hacer referencia a un filtro de datos script para especificar un valor de filtro personalizado, pero el filtro de datos en cuestin no existe en el grupo del usuario. Respuesta del usuario: Arregle el script XML de modo que haga referencia a nombres de filtros de datos que sean vlidos para el grupo relacionado. DSYT002E: El filtro de datos nombre filtro datos se ha especificado ms de una vez. Explicacin: El script XML contiene referencias duplicadas a un filtro de datos, por lo que la accin que se debe llevar a cabo no resulta clara. Respuesta del usuario: Arregle el script XML de modo que la referencia a nombres de filtros de datos sea exclusiva. DSYT003E: La suscripcin nombre suscripcin no es una suscripcin de jdbc. Explicacin: El script XML intenta cambiar una suscripcin como si fuera una suscripcin JDBC, pero el tipo de suscripcin es diferente. Respuesta del usuario: Arregle el script XML de modo que el tipo de suscripcin al que hace referencia coincida con el tipo de suscripcin para el que se est intentando realizar cambios. DSYT004E: No se ha podido crear el ndice nombre ndice en la tabla nombre tabla en la base de datos de rplica. Explicacin: La herramienta de realizacin de scripts XML no ha podido crear el ndice especificado en la base de datos de rplica. Esto puede ser debido a la existencia de referencias de columnas no vlidas o a que posiblemente ya exista un ndice. Respuesta del usuario: Arregle el script XML de modo que especifique la descripcin de ndice correcta. DSYT005E: La suscripcin nombre suscripcin no es una suscripcin de subida. Explicacin: El script XML intenta cambiar una suscripcin como si fuera una suscripcin de subida, pero el tipo de suscripcin es diferente. Respuesta del usuario: Arregle el script XML de modo que el tipo de suscripcin al que hace referencia coincida con el tipo de suscripcin para el que se est intentando realizar cambios. DSYT006E: El tipo de adaptador no coincide con el tipo de suscripcin para la suscripcin nombre suscripcin. Explicacin: El script XML ha intentado asociar una suscripcin con un adaptador pero los tipos del adaptador y la suscripcin no coinciden.

188

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Respuesta del usuario: Arregle el script XML de modo que el tipo de suscripcin y el tipo de adaptador con el que se est intentando asociar la suscripcin coincidan. DSYT007E: La suscripcin nombre suscripcin no es una suscripcin de archivo. Explicacin: El script XML intenta cambiar una suscripcin como si fuera una suscripcin de archivo, pero el tipo de suscripcin es diferente. Respuesta del usuario: Arregle el script XML de modo que el tipo de suscripcin al que hace referencia coincida con el tipo de suscripcin para el que se est intentando realizar cambios. DSYT008E: No se ha podido desbloquear la suscripcin nombre suscripcin. Explicacin: La herramienta de administracin no ha podido desbloquear una suscripcin bloqueada anteriormente para evitar la sincronizacin mientras se estaba modificando. Respuesta del usuario: Es posible que una herramienta que est inactiva se haya marcado como en ejecucin, por lo que la herramienta de administracin no se puede comunicar con ella o es posible que un servidor en ejecucin no responda. Tambin es posible que haya un problema de red. Utilizando la GUI de administracin, asegrese de que la suscripcin no est bloqueada si desea que la sincronizacin se pueda llevar a cabo. DSYT009E: La suscripcin nombre suscripcin no es una suscripcin personalizada. Explicacin: El script XML intenta cambiar una suscripcin como si fuera una suscripcin personalizada, pero el tipo de suscripcin es diferente. Respuesta del usuario: Arregle el script XML de modo que el tipo de suscripcin al que hace referencia coincida con el tipo de suscripcin para el que se est intentando realizar cambios. DSYT010E: Se han detectado distintivos de inclusin y exclusin en conflicto. Explicacin: El script XML tiene distintivos ambiguos que hacen que no resulte claro si se debe incluir o excluir un elemento al que se hace referencia. Respuesta del usuario: Arregle el script XML para eliminar los distintivos de inclusin o de exclusin ambiguos. DSYT011E: Los distintivos Order utilizados en scripts XML deben especificar orden ascendente. La herramienta para realizar scripts XML (XML Scripting) ha encontrado el orden ndice orden despus de procesar el orden otro ndice orden. Explicacin: El script XML ha especificado un orden incorrecto de los elementos como, por ejemplo, Conjuntos de suscripcin en Grupos o Suscripciones en Conjuntos de suscripcin. Cuando se especifique el orden de elementos, debern aparecer en orden ascendente o el distintivo order se deber omitir, en cuyo caso se utilizar el orden en que aparezcan los elementos. Respuesta del usuario: Arregle el script XML para eliminar o cambiar los distintivos Order ambiguos. DSYT012E: La columna nombre columna con el tipo de datos tipo datos no se puede duplicar. El tipo de datos no est soportado.

Consulta

189

Explicacin: El script XML ha especificado una columna con un tipo de datos no soportado. Respuesta del usuario: Arregle el script XML para eliminar o cambiar las columnas que contenga tipos de datos no soportados. Segn los tipos de bases de datos implicadas, es posible que algunos tipos de datos no estn soportados. Lea la documentacin sobre los tipos de datos no soportados y las correlaciones de tipos de datos para obtener ms informacin para disear de modo ms adecuado el sistema de sincronizacin de datos. DSYT013E: La suscripcin nombre suscripcin no tiene tablas. Explicacin: El script XML no ha especificado ninguna tabla para la suscripcin de tabla. Respuesta del usuario: Arregle el script XML de modo que incluya tablas para la suscripcin. DSYT014I: Se est incluyendo la tabla nombre tabla en la suscripcin nombre suscripcin. Explicacin: La herramienta de realizacin de scripts XML est incluyendo la tabla en la suscripcin para duplicarla y sincronizarla. Respuesta del usuario: No se necesita ninguna accin. DSYT015E: La tabla nombre tabla ya existe en la suscripcin nombre suscripcin. Explicacin: La tabla ya est incluida en la suscripcin. No se puede aadir ms de una vez una tabla con el mismo esquema de destino y nombre de tabla a una suscripcin. Respuesta del usuario: Arregle el script XML para eliminar la descripcin de tabla conflictiva o cambiar su nombre de destino. DSYT016E: No existe una tabla denominada nombre tabla en la suscripcin nombre suscripcin. Explicacin: La herramienta de realizacin de scripts XML no ha podido cambiar los detalles de una tabla de una suscripcin porque la suscripcin no tiene una tabla con ese nombre. Respuesta del usuario: Arregle el script XML para eliminar la descripcin de tabla conflictiva o cambiar su nombre de destino por el de una tabla existente. DSYT017I: Se est modificando la tabla nombre tabla en la suscripcin nombre suscripcin. Explicacin: La herramienta de realizacin de scripts XML va a cambiar los detalles de una tabla de una suscripcin. Respuesta del usuario: No se necesita ninguna accin. DSYT018E: Valor de filtro de unin inesperado Y o N o G. Explicacin: El script XML contiene un carcter desconocido como valor del filtro de unin. Debe ser Y (habilitado), N (inhabilitado) o G (utilizar el valor Global). Respuesta del usuario: Arregle el Script XML para utilizar uno de los identificadores de filtro de unin vlidos. DSYT019I: El distintivo JoinFilter para las tablas de suscripcin no se aplica a suscripciones de subida. Se pasar por alto.

190

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Explicacin: El script XML contiene una instruccin para el valor del filtro de unin para una suscripcin de subida pero este valor slo se utiliza para las suscripciones duplicadas. Respuesta del usuario: Para evitar este mensaje, arregle el script XML para eliminar los valores de filtros de unin para tablas de suscripciones de subida. DSYT020I: El ndice de slo rplica no es aplicable en este contexto. El ndice nombre ndice se pasar por alto. Explicacin: El script XML contiene una instruccin para aadir un ndice que se debe crear en la base de datos de rplica pero la suscripcin no tiene ninguna rplica o la adicin de dicho ndice no es posible en este momento. Respuesta del usuario: Para evitar este mensaje, arregle el script XML para eliminar los distintivos AddIndex. DSYT021I: Se est excluyendo la columna de base de datos fuente nombre columna de la tabla de destino nombre tabla. Explicacin: La herramienta de realizacin de scripts XML est excluyendo una columna de una tabla. Esto se necesita normalmente si la base de datos fuente ha cambiado y la columna ya no existe. Normalmente, no se debe excluir ninguna columna de una tabla duplicada. Respuesta del usuario: No se necesita ninguna accin. DSYT022I: Se estn estableciendo atributos de sincronizacin y duplicacin de la columna fuente nombre columna. Explicacin: La herramienta de realizacin de scripts XML est procesando la configuracin de una columna de una tabla. Respuesta del usuario: No se necesita ninguna accin. DSYT023E: La columna fuente nombre columna se est pasando por alto en el script XML. Es posible que la columna necesite tener un valor por omisin para que la duplicacin de la tabla resulte satisfactoria. El nombre de la columna fuente se utilizar como nombre de destino. Explicacin: La tabla de la base de datos fuente contiene una columna cuyas propiedades de duplicacin y sincronizacin no estn especificadas para Data Sync Server. Es posible que el proceso de duplicacin no pueda determinar cmo se debe duplicar esta columna. El proceso de configuracin continuar, aunque es posible que Sync Server falle al intentar utilizar esta columna. Respuesta del usuario: Asegrese de que todas las columnas de la tabla fuente estn listadas en el script XML con valores de duplicacin y sincronizacin correctos. DSYT024I: Se est bloqueando la suscripcin nombre suscripcin. Explicacin: La herramienta de realizacin de scripts XML est solicitando a los servidores que paren de atender las peticiones de sincronizacin para esta suscripcin. Respuesta del usuario: No se necesita ninguna accin. DSYT025I: Se est desbloqueando la suscripcin nombre suscripcin.

Consulta

191

Explicacin: La herramienta de realizacin de scripts XML est solicitando a los servidores que sigan atendiendo las peticiones de sincronizacin para esta suscripcin. Respuesta del usuario: No se necesita ninguna accin. DSYT026E: El valor del elemento nombre elemento xml debe ser un entero vlido. El valor especificado es valor. Explicacin: La herramienta de realizacin de scripts XML espera un entero, pero no puede interpretar el valor especificado como un entero vlido. Respuesta del usuario: Arregle el contenido XML para especificar un entero vlido donde sea necesario. DSYT027E: El distintivo SourceTableSpace no es vlido cuando la base de datos fuente no es de DB2. Explicacin: Es posible poner una tabla en un espacio de tabla en DB2. Este distintivo se utiliza para especificar el espacio de tabla de una tabla en una base de datos DB2. No tiene ningn sentido si la base de datos fuente no es DB2. Respuesta del usuario: Arregle el contenido XML para eliminar este distintivo. DSYT028E: No se pudo bloquear la base de datos de rplica nombre base de datos. Explicacin: La herramienta de administracin no ha podido bloquear una base de datos de rplica para evitar la sincronizacin mientras se estaba modificando. Respuesta del usuario: Es posible que una herramienta que est inactiva se haya marcado como en ejecucin, por lo que la herramienta de administracin no se puede comunicar con ella o es posible que un servidor en ejecucin no responda o que la base de datos de rplica est inactiva. Tambin es posible que haya un problema de red. DSYT029E: No se puede cambiar el nombre de un usuario LDAP. Explicacin: En el entorno LDAP, la herramienta XML no puede editar el nombre de un usuario. Respuesta del usuario: Puede intentar eliminar el usuario LDAP en el servidor LDAP y aadir un usuario con un nombre distinto. DSYT030E: Se produjo un error al crear un usuario LDAP y asociarlo con el Sync Server. Explicacin: La herramienta XML no ha podido crear un usuario. Respuesta del usuario: Esto puede ser debido a que el usuario ya exista o a que una de sus propiedades no sea vlida. Es posible que se muestre ms informacin como causa del problema. DSYT031E: Se produjo un error al crear un grupo LDAP y asociarlo con el Sync Server. Explicacin: La herramienta XML no ha podido crear un grupo. Respuesta del usuario: Esto puede ser debido a que el grupo ya exista o a que una de sus propiedades no sea vlida. Es posible que se muestre ms informacin como causa del problema. DSYT032E: No se puede cambiar el nombre de un grupo LDAP.

192

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Explicacin: En el entorno LDAP, la herramienta XML no puede editar el nombre de un grupo. Respuesta del usuario: Puede intentar eliminar el grupo LDAP en el servidor LDAP y aadir un grupo con un nombre de seguridad distinto. DSYT033E: Se debe proporcionar un nombre vlido para el usuario. Explicacin: Se ha especificado un nombre errneo para un usuario. Respuesta del usuario: Proporcione un nombre de usuario vlido. En el entorno LDAP, este nombre tambin debe satisfacer los requisitos de LDAP. DSYT034I: Actualizando la base de datos de control. Explicacin: Se estn grabando cambios en la base de datos de control de Sync Server. Respuesta del usuario: No se necesita ninguna accin. DSYT035E: Se debe proporcionar un nombre vlido para el grupo. Explicacin: Se ha especificado un nombre errneo para un grupo. Respuesta del usuario: Proporcione un nombre de grupo vlido. En el entorno LDAP, este nombre tambin debe satisfacer los requisitos de LDAP. DSYT036E: nombre grupo no es un SyncGroup. Se debe proporcionar como el SyncGroup de este usuario un nombre vlido de SyncGroup que est especificado como SyncGroup en el archivo DSYLDAP.properties. Explicacin: Se ha especificado un nombre errneo para un grupo SyncGroup. En las instalaciones de Sync Server habilitadas para LDAP, los SyncGroups vlidos se listan en el archivo DSYLDAP.properties. Respuesta del usuario: Proporcione un nombre de grupo vlido que est listado en DSYLDAP.properties como SyncGroup. DSYT037E: El nombre de grupo de usuarios nombre grupo debe comenzar con prefijo nombre grupo db2e. Explicacin: En las instalaciones de Sync Server habilitadas para LDAP, para poder realizar sincronizaciones, un usuario debe pertenecer a un grupo DB2e cuyo nombre empiece por DB2e (o el valor del prefijo que se haya establecido en las propiedades de configuracin). Sync Server utiliza este grupo DB2e para la sincronizacin. Respuesta del usuario: Proporcione un nombre de grupo vlido que empiece con el prefijo designado (normalmente DB2e) adems de otros grupos a los que este usuario LDAP ya pertenezca. DSYT038I: Los distintivos WhereClauseMirrorToMobile y WhereClauseMasterToMirror para las tablas de suscripcin no se aplican para cargar suscripciones. Estos distintivos se pasan por alto. Explicacin: El script XML contiene una instruccin para aadir un valor de clusula where para una suscripcin de subida, pero este valor slo se utiliza para las suscripciones duplicadas. Respuesta del usuario: Para evitar este mensaje, arregle el script XML para eliminar las clusulas where para tablas de suscripciones de subida. DSYT039E: Ha fallado la creacin del usuario -- posible longitud de contrasea no vlida.
Consulta

193

Explicacin: El usuario no se ha podido crear, debido posiblemente a que la longitud de la contrasea no es vlida. Respuesta del usuario: Asegrese de que la contrasea especificada sea compatible con las polticas de seguridad de LDAP especificadas por el administrador.

Lmites de DB2 Everyplace


La tabla siguiente describe ciertos lmites de DB2 Everyplace y SQL. Cumplir con el caso ms restrictivo puede ayudar al programador a disear programas de aplicaciones que son fciles de transportar. Es posible que se restrinjan an ms muchos de estos lmites debido a las limitaciones de sistema y memoria fsica impuestas por los dispositivos.
Tabla 39. Lmites de base de datos y de SQL de DB2 Everyplace Descripcin Tamao mximo de la tabla (en un sistema de 32 bits) Nmero mximo de tablas en un almacn de datos Nmero mximo de ndices en una tabla Longitud mxima de una fila en una tabla Lmite 2 Gigabytes 65535 15 64 kilobytes

Nmero mximo de columnas en una clave fornea 8 Nmero mximo de columnas en un ndice Nmero mximo de columnas en una clave primaria Longitud mxima de sentencia de SQL Nmero mximo de lneas en una tabla Nmero mximo de columnas en una tabla Longitud mxima para una columna CHAR Longitud mxima para una columna VARCHAR o BLOB Longitud mxima combinada para columnas INT, SMALLINT, CHAR, DECIMAL, DATE, TIME y TIMESTAMP en un solo registro Nmero mximo de descriptores de contexto de sentencia por conexin 8 8 64 kilobytes Limitado por el tamao de la tabla 256 32767 bytes 32767 bytes 32767 bytes

20

Longitud mxima de restricciones de comprobacin 32767 bytes Longitud mxima de valor por omisin Mximo tamao de decimales Longitud mxima de cada columna en un solo ndice Ao mnimo para un valor de fecha Ao mximo para un valor de fecha 32767 bytes 31 dgitos 1024 bytes 0001 9999

194

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Palabras reservadas de DB2 Everyplace


Las siguientes palabras reservadas de DB2 Everyplace no se pueden utilizar como identificadores a menos que se especifiquen como identificadores delimitados. Por ejemplo: La sentencia siguiente ocasionar un error de SQL:
CREATE TABLE tab1 (select int)

Utilice comillas dobles y no ocasionar un error de SQL:


CREATE TABLE tab1 ("select" int)

Palabras reservadas de DB2 Everyplace


ADD, ALL, ALTER, ALWAYS, AND, AS, ASC, BEGIN, BLOB, BY, CALL, CHAR, CHARACTER, CHECK, COLUMN, COMMIT, CONCAT, CREATE, CURRENT, DATA, DATABASE, DATE, DECIMAL, DEFAULT, DELETE, DESC, DISTINCT, DROP, ENCRYPT, ENCRYPTION, EXCLUSION, EXPLAIN, FETCH, FOR, FOREIGN, FROM, GENERATED, GRANT, GROUP, IDENTITY IN, INDEX, INSERT, INT, INTEGER, INTO, IS, KEY, LIKE, LIMIT, LOCK NEW, NOT, NULL MODE OF, ON, ONLY, OR, ORDER, PRIMARY, QUERYNO READ, REFERENCES, REORG,REVOKE,ROLLBACK, SELECT, SET, SHARE, SMALLINT, TABLE, TIME, TIMESTAMP, TO,TRANSACTION, TYPE UPDATE, USING VALUES, VARCHAR, WHERE, WITH

A efectos de compatibilidades futuras, no utilice como identificadores las palabras reservadas de IBM SQL e ISO/ANSI SQL92 siguientes. Las palabras reservadas de IBM SQL que DB2 Everyplace no utiliza actualmente son las siguientes:
ACQUIRE ADD AFTER ALIAS ALLOCATE ALLOW ALTER ANY ASUTIME AUDIT AUTHORIZATION AUX AUXILIARY AVG BEFORE BETWEEN BINARY BUFFERPOOL CALLED CAPTURE CASCADED CASE CAST CCSID CHARACTER CLOSE CLUSTER COLLECTION COLLID COLUMN COMMENT CONDITION CONNECT CONNECTION CONSTRAINT CONTAINS CONTINUE COUNT COUNT_BIG CROSS CURRENT_DATE CURRENT_LC_PATH CURRENT_PATH CURRENT_SERVER CURRENT_TIME CURRENT_TIMESTAMP CURRENT_TIMEZONE CURRENT_USER CURSOR DATABASE DAY DAYS DBA DBINFO DBSPACE DB2GENERAL DB2SQL DECLARE DESCRIPTOR DETERMINISTIC DISALLOW DISCONNECT DO DOUBLE DSSIZE DYNAMIC EDITPROC ELSE ELSEIF END END-EXEC ERASE ESCAPE EXCEPT EXCEPTION EXCLUSIVE EXECUTE EXISTS EXIT EXPLAIN EXTERNAL FENCED FIELDPROC FILE FINAL FREE FULL FUNCTION GENERAL GENERATED GO GOTO GRANT GRAPHIC HANDLER HAVING HOUR HOURS IDENTIFIED IF IMMEDIATE INDICATOR INNER INOUT INSENSITIVE INTEGRITY INTERSECT ISOBID ISOLATION JAVA JOIN LABEL LANGUAGE LC_CTYPE LEAVE LEFT LINKTYPE LOCAL LOCALE LOCATOR LOCATORS LOCK LOCKSIZE LONG LOOP
Consulta

195

MAX MICROSECOND MICROSECONDS MIN MINUTE MINUTES MODE MODIFIES MONTH MONTHS NAME NAMED NHEADER NO NODENAME NODENUMBER NULLS NUMPARTS OBID OPEN OPTIMIZATION OPTIMIZE OPTION OUT OUTER PACKAGE PAGE PAGES PARAMETER PART PARTITION PATH PCTFREE PCTINDEX PIECESIZE PLAN POSITION PRECISION PREPARE PRIQTY PRIVATE PRIVILEGES PROCEDURE PROGRAM PSID PUBLIC QUERYNO READS RECOVERY RELEASE RENAME REPEAT RESET RESOURCE RESTRICT RESULT RETURN RETURNS REVOKE RIGHT ROW ROWS RRN RUN SCHEDULE SCHEMA SCRATCHPAD SECOND SECONDS SECQTY SECURITY SHARE SIMPLE SOME SOURCE SPECIFIC SQL STANDARD STATIC STATISTICS STAY STOGROUP STORES STORPOOL STYLE SUBPAGES SUBSTRING SUM SYNONYM TABLESPACE THEN TO TRANSACTION TRIGGER TRIM UNDO UNION UNIQUE UNTIL USAGE USER USING VALIDPROC VARIABLE VARIANT VCAT VIEW VOLUMES WHEN WHILE WLM WORK WRITE YEAR YEARS

Las palabras reservadas de ISO/ANSI SQL92 que IBM SQL no utiliza son las siguientes:
ABSOLUTE ACTION ARE ASSERTION AT BIT_LENGTH BOTH CATALOG CHAR_LENGTH CHARACTER_LENGTH COALESCE COLLATE COLLATION CONSTRAINTS CONVERT CORRESPONDING DEALLOCATE DEC DEFERRABLE DEFERRED DESCRIBE DIAGNOSTICS DOMAIN EXEC EXTRACT FALSE FIRST FLOAT FOUND FULL GET GLOBAL IDENTITY INITIALLY INPUT INTERVAL LAST LEADING LEVEL LOWER MATCH MODULE NAMES NATIONAL NATURAL NCHAR NEXT NULLIF NUMERIC OCTET_LENGTH OUTPUT OVERLAPS PAD PARTIAL PRESERVE PRIOR REAL RELATIVE SCROLL SECTION SESSION SESSION_USER SIZE SPACE SQLCODE SQLERROR SQLSTATE SYSTEM_USER TEMPORARY TIMEZONE_HOUR TIMEZONE_MINUTE TRAILING TRANSLATION TRUE UNKNOWN UPPER VALUE VARYING WHENEVER ZONE

Mensajes de error de DB2 Everyplace Update Tool


La tabla siguiente lista todos los mensajes de error que puede generar DB2 Everyplace Update Tool. La Tabla 40 muestra el mensaje de error y una posible solucin para el problema.
Tabla 40. Gua para la resolucin de problemas Mensaje de error Solucin posible

Ha fallado la autentificacin (clave de Verifique que los valores del cliente cifrado no vlida) - sincronizacin finalizada coincidan con los valores del usuario de forma anmala definidos en el Centro de administracin de dispositivos porttiles. El tamao del archivo supera la memoria disponible Error interno del servidor Suprima las aplicaciones o los archivos que ya no se necesiten en el dispositivo y vuelva a intentarlo. Se trata de un error interno que se debe notificar al Soporte de software de IBM con el archivo de rastreo.

196

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 40. Gua para la resolucin de problemas (continuacin) Mensaje de error Ha fallado la apertura de la conexin Solucin posible Compruebe la conexin de red y Sync Server. Asegrese de que el sistema principal est conectado y el servidor est en ejecucin. Compruebe la conexin de red y Sync Server. Asegrese de que el sistema principal est conectado y el servidor est en ejecucin. Vuelva a intentar la sincronizacin cuando haya menos trfico en la red o intente realizar la sincronizacin desde una red ms rpida. Vuelva a intentar la sincronizacin cuando haya menos trfico en la red o intente realizar la sincronizacin desde una red ms rpida. Especifique un tiempo de espera superior o intente realizar la sincronizacin cuando haya menos trfico en la red. Vuelva a intentar la sincronizacin cuando haya menos trfico en la red o intente realizar la sincronizacin desde una red ms rpida. Verifique que la biblioteca de red exista en el dispositivo. Intente reinstalar la biblioteca. Verifique que el nombre de sistema principal y las direcciones DNS sean correctas.

No se pudo establecer conexin

No se pudo enviar la peticin

No se pudo recibir la respuesta

Tiempo de espera excedido al recibir la respuesta No se pudo recibir acuse de recibo

No se ha podido abrir la biblioteca de red Ha fallado la resolucin de nombre de sistema principal

No se ha podido asignar un almacenamiento Suprima las aplicaciones o los archivos que intermedio de trabajo para transporte ya no se necesiten en el dispositivo y vuelva a intentarlo. Error de red desconocido Se trata de un error interno que se debe notificar al Soporte de software de IBM con el archivo de rastreo. Verifique que no haya otra aplicacin que utilice el archivo de destino. Si el archivo de destino est en uso, desbloquelo y vuelva a realizar la sincronizacin. Se trata de un mensaje informativo que notifica que el servidor no tiene una actualizacin para el dispositivo porttil.

No se ha podido crear archivo de destino

No se ha recibido ningn archivo para actualizacin

Consulta

197

Interfaces ADO .NET


Miembros de DB2eConnection
Tabla 41. Mtodos estticos pblicos (Compartidos) Mtodo ReleaseObjectPool Descripcin Indica que el descriptor de contexto de entorno de DB2 Everyplace puede liberarse cuando se libera la ltima conexin subyacente.

Tabla 42. Constructores de instancias pblicas Constructor DB2eConnection() DB2eConnection(string) Descripcin Sobrecargado. Inicialice una nueva instancia de la clase de DB2eConnection. Sobrecargado. Inicialice una newInitialize una instancia nueva de la clase de DB2eConnection con una serie de conexin especificada.

Tabla 43. Propiedades de instancias pblicas Propiedad ConnectionString ConnectionTimeout Descripcin Obtiene o establece la serie utilizada para abrir una base de datos. Obtiene o establece el tiempo que ha de esperarse mientras se intenta establecer una conexin antes de finalizar el intento y de generar un error. Obtiene el nombre de la base de datos actual o la base de datos que ha de utilizarse despus de que se abra una conexin. Obtiene una serie que contiene la versin del servidor al que se conecta el cliente. Obtiene el estado actual de la conexin.

Database ServerVersion State Tabla 44. Mtodos de instancias pblicas Mtodo BeginTransaction BeginTransaction(IsolationLevel isoLevel)

Descripcin Sobrecargado. Inicia una transaccin en la base de datos. Sobrecargado. Inicia una transaccin al nivel de aislamiento especificado. Valores soportados: ReadCommitted ReadUncommitted RepeatableRead Serializable

ChangeDatabase Close CreateCommand

Cambia la base de datos actual asociada con una DB2eConnection abierta. Cierra la conexin con la base de datos. Este es el mtodo preferido de cerrar cualquier conexin abierta. Crea y devuelve un objeto de DB2eCommand asociado con el DB2eConnection.

198

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 44. Mtodos de instancias pblicas (continuacin) Mtodo Open Descripcin Abre una conexin con una fuente de datos con los valores de propiedad especificados mediante la ConnectionString.

Tabla 45. Sucesos de instancias pblicas Suceso InfoMessage StateChange Descripcin Se produce cuando DB2 Everyplace enva un mensaje informativo o de aviso. Se produce cuando el estado de la conexin cambia.

Miembros de DB2eCommand
Tabla 46. Constructores de instancias pblicas Constructor DB2eCommand() DB2eCommand(string) DB2eCommand(string, DB2eConnection) DB2eCommand(string, DB2eConnection, DB2eTransaction) Descripcin Sobrecargado. Inicialice una nueva instancia de la clase de DB2eCommand. Sobrecargado. Inicialice una nueva instancia de la clase de DB2eCommand con el texto de la consulta. Sobrecargado. Inicialice una nueva instancia de la clase de DB2eCommand con el texto de la consulta y un objeto de DB2eConnection. Sobrecargado. Inicialice una nueva instancia de la clase de DB2eCommand con el texto de la consulta, un objeto de DB2eConnection y el objeto de DB2eTransaction.

Tabla 47. Propiedades de instancias pblicas Propiedad CommandText CommandType Connection DesignTimeVisible Parameters Transaction UpdatedRowSource Descripcin Obtiene o establece el procedimiento almacenado o la sentencia SQL que ha de ejecutarse frente a la base de datos. Obtiene o establece un valor indicando el modo en que se interpreta la propiedad de CommandText. Obtiene o establece el DB2eConnection que utiliza esta instancia del DB2eCommand. Obtiene o establece un valor que indica si el objeto de mandatos debera ser visible o no en un control de interfaz personalizado. Obtiene el DB2eParameterCollection. Obtiene o establece el DB2eTransaction en el que se ejecuta el DB2eCommand. Obtiene o establece un valor que especifica el modo en que el mtodo Update debera aplicar resultados de mandato al DataRow.

Tabla 48. Mtodos de instancias pblicas Mtodo CreateParameter Dispose Descripcin Crea una instancia nueva del objeto de DB2eParameter. Sobrecargado. Limpiar.

Consulta

199

Tabla 48. Mtodos de instancias pblicas (continuacin) Mtodo EnableDeletePhysicalRemove EnableDirtyBitSetByApplication Descripcin Habilita o inhabilita la eliminacin fsica de los registros. Habilita la modalidad de aplicacin si se cumple la habilitacin (enable es true). De lo contrario, habilita la modalidad de sistema. Hace que los registros suprimidos lgicamente resulten visibles o invisibles. Habilita o inhabilita la reorganizacin de la base de datos por parte de DB2 Everyplace o la reorganizacin explcita de la base de datos por parte del usuario con una sentencia REORG de SQL. Ejecuta una sentencia SQL frente a Connection y devuelve el nmero de filas afectados. Sobrecargado. Enva el CommandText a Connection y crea un DB2eDataReader. Ejecuta la consulta y devuelve la primera columna de la primera fila en el conjunto de resultados que devuelve la consulta. Se ignoran las filas o columnas adicionales. Compruebe si se ha habilitado o no la eliminacin fsica. Si se ha habilitado, devolver verdadero (true); en caso contrario devolver falso (false). Compruebe si el sistema de la base de datos est en la modalidad de aplicacin o en la modalidad de sistema. Si se ha habilitado, devolver verdadero (true); en caso contrario devolver falso (false). Compruebe si los registros suprimidos lgicamente estn visibles o no para la aplicacin. Devuelve verdadero (true) si los registros suprimidos lgicamente estn visibles para la aplicacin; en caso contrario devuelve falso (false). Comprueba si est habilitada la reorganizacin de la base de datos. Devuelve verdadero (true) si est habilitada; en caso contrario devuelve falso (false). Crea una versin preparada (o compilada) del mandato en la base de datos.

EnableReadIncludeMarkedDelete EnableReorg

ExecuteNonQuery ExecuteReader ExecuteScalar

IsEnabledDeletePhysicalRemove

IsEnabledDirtyBitSetByApplication

IsEnabledReadIncludeMarkedDelete

IsEnabledReorg

Prepare

Miembros de DB2eCommandBuilder
Tabla 49. Mtodos estticos pblicos (Compartidos) Mtodo DeriveParameters Descripcin Recupera informacin de parmetro del procedimiento almacenado especificado en DB2eCommand y puebla la coleccin de Parmetros del objeto DB2eCommand especificado.

200

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 50. Constructores de instancias pblicas Constructor DB2eCommandBuilder() DB2eCommandBuilder(DB2eDataAdapter) Descripcin Sobrecargado. Inicialice una nueva instancia de la clase de DB2eCommandBuilder. Sobrecargado. Inicialice una nueva instancia de la clase de DB2eCommandBuilder con el objeto DB2eDataAdapter asociado.

Tabla 51. Propiedades de instancias pblicas Propiedad DataAdapter Descripcin Obtiene o establece un objeto DB2eDataAdapter para el que este objeto DB2eCommandBuilder generar sentencias SQL.

Tabla 52. Mtodos de instancias pblicas Mtodo GetDeleteCommand GetInsertCommand GetUpdateCommand RefreshSchema Descripcin Obtiene el objeto DB2eCommand generado automticamente para realizar supresiones en la base de datos. Obtiene el objeto DB2eCommand generado automticamente para realizar inserciones en la base de datos. Obtiene el objeto DB2eCommand generado automticamente para realizar actualizaciones en la base de datos. Renueva la informacin de esquema de base de datos utilizada para generar sentencias INSERT, UPDATE o DELETE.

Tabla 53. Mtodos de instancias protegidas Mtodo Dispose Descripcin Sobrecargado.

Miembros de DB2eDataAdapter
Tabla 54. Constructores de instancias pblicas Constructor DB2eDataAdapter() DB2eDataAdapter(DB2eCommand) Descripcin Sobrecargado. Inicialice una nueva instancia de la clase DB2eDataAdapter. Sobrecargado. Inicialice una nueva instancia de la clase DB2eDataAdapter con la sentencia SELECT de SQL especificada. Sobrecargado. Inicialice una nueva instancia de la clase DB2eDataAdapter con la sentencia SELECT de SQL especificada y un objeto de DB2eConnection. Sobrecargado. Inicialice una nueva instancia de la clase DB2eDataAdapter con la sentencia SELECT de SQL especificada y una serie de conexin.

DB2eDataAdapter(string, DB2eConnection)

DB2eDataAdapter(string, string)

Tabla 55. Propiedades de instancias pblicas Propiedad AcceptChangesDuringFill (se hereda de DataAdapter) Descripcin Obtiene o establece un valor que indica si se llama o no AcceptChanges en una DataRow despus de que se aada a la DataTable.

Consulta

201

Tabla 55. Propiedades de instancias pblicas (continuacin) Propiedad ContinueUpdateOnError (se hereda de DataAdapter) DeleteCommand InsertCommand MissingMappingAction (se hereda de DataAdapter) MissingSchemaAction (se hereda de DataAdapter) SelectCommand Descripcin Obtiene o establece un valor que especifica si ha de generarse o no una excepcin o la fila errnea cuando se encuentra un error durante una actualizacin de filas. Obtiene o establece una sentencia SQL o procedimiento almacenado utilizado para suprimir registros en la base de datos. Obtiene o establece una sentencia SQL o procedimiento almacenado utilizado para insertar registros nuevos en la fuente de datos. Determina la accin a adoptar cuando los datos de entrada no tienen una columna o tabla coincidente. Determina la accin a adoptar cuando el esquema DataSet existente no coincide con los datos de entrada. Obtiene o establece una sentencia SQL o procedimiento almacenado utilizado para seleccionar registros en la base de datos.

TableMappings (se hereda de DataAdapter) Obtiene una coleccin que proporciona la asignacin maestra entre una tabla fuente y una DataTable . UpdateCommand Obtiene o establece una sentencia SQL o procedimiento almacenado utilizado para actualizar registros en la base de datos.

Tabla 56. Mtodos de instancias pblicas Mtodo Clone Descripcin Crea un objeto que contiene toda la informacin relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. Aade o renueva filas a un DataSet o DataTable para que coincidan con las de la fuente de datos. Aade una DataTable a un DataSet y configura el esquema para que coincida con el de la fuente de datos. Obtiene los parmetros que establece el usuario al ejecutar una sentencia SELECT de SQL. Invoca las sentencias INSERT, UPDATE o DELETE respectivos para cada fila insertada, actualizada o suprimida del DataSet.

Fill (se hereda de DbDataAdapter) FillSchema (se hereda de DbDataAdapter) GetFillParameters (se hereda de DbDataAdapter) Update (se hereda de DbDataAdapter)

Tabla 57. Sucesos de instancias pblicas Suceso FillError (se hereda de DbDataAdapter) RowUpdated Descripcin Se devuelve cuando se produce un error durante una operacin de relleno. Se produce durante una operacin de actualizacin despus de que se ejecute un mandato frente a la base de datos. Se produce durante una Update antes de que se ejecute un mandato frente a la base de datos.

RowUpdating

202

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Miembros de DB2eDataReader
Tabla 58. Propiedades de instancias pblicas Propiedad Depth FieldCount IsClosed Item Descripcin Obtiene un valor que indica la profundidad de anidamiento para la fila actual. Obtiene el nmero de columnas de la fila actual. Indica si se cierra o no el DB2eDataReader. Sobrecargado. Obtiene el valor de la columna especificada en su formato nativo que se proporciona en el ordinal de la columna. Obtiene el nmero de filas cambiadas, insertadas o suprimidas mediante la ejecucin de la sentencia de SQL.

RecordsAffected

Tabla 59. Mtodos de instancias pblicas Mtodo Close GetByte GetBytes Descripcin Cierra el objeto de DB2eDataReader. Obtiene el valor de la columna especificada como un byte. Lee una corriente de bytes desde el desplazamiento de la columna especificada al almacenamiento intermedio como matriz, comenzando a partir del desplazamiento de almacenamiento intermedio concreto. Obtiene el nombre del tipo de datos fuente. Obtiene el valor de la columna especificada en forma de objeto DateTime. Obtiene el valor de la columna especificada en forma de objeto DateTime. Obtiene el valor de la columna especificada en forma de objeto Decimal. Obtiene el valor de la columna especificada como nmero de coma flotante de precisin doble. Obtiene Type, que es el tipo de datos del objeto. Obtiene el valor de la columna especificada como nmero de coma flotante de precisin nica. Obtiene el valor de la columna especificada como entero con signo de 16 bits. Obtiene el valor de la columna especificada como entero con signo de 32 bits. Obtiene el valor de la columna especificada como entero con signo de 64 bits. Obtiene el nombre de la columna especificada. Obtiene el ordinal de columna, dado el nombre de la columna. Devuelve una DataTable que describe los metadatos de columna del DB2eDataReader. Obtiene el valor de la columna especificada como una serie.

GetDataTypeName GetDate GetDateTime GetDecimal GetDouble GetFieldType GetFloat GetInt16 GetInt32 GetInt64 GetName GetOrdinal GetSchemaTable GetString

Consulta

203

Tabla 59. Mtodos de instancias pblicas (continuacin) Mtodo GetTime GetValue GetValues IsDBNull NextResult Descripcin Obtiene el valor de la columna especificada en forma de objeto TimeSpan. Obtiene el valor de la columna en ordinal especificado en su formato nativo. Obtiene todas las columnas de atributos de la fila actual. Obtiene un valor que indica si la columna contiene o no valores inexistentes o que falten. Avanza el DB2eDataReader al siguiente resultado, al leer los resultados de las sentencias SQL de proceso por lotes. DB2 Everyplace no da soporte en la actualidad a las sentencias de SQL de proceso por lotes. Avanza el DB2eDataReader al siguiente registro.

Read

Miembros de DB2eError
Tabla 60. Propiedades de instancias pblicas Propiedad Message NativeError SQLState Descripcin Obtiene una breve descripcin del error. Obtiene la informacin de error de DB2 Everyplace. Obtiene el cdigo de error de cinco caracteres que sigue al estndar de SQL de ANSI para la base de datos.

Miembros de DB2eParameter
Tabla 61. Constructores de instancias pblicas Constructor DB2eParameter() DB2eParameter(string, object) Descripcin Sobrecargado. Inicialice una nueva instancia de la clase de DB2eParameter. Sobrecargado. Inicialice una nueva instancia de la clase de DB2eParameter con el nombre de parmetro y el valor del parmetro. Sobrecargado. Inicialice una nueva instancia de la clase de DB2eParameter con el nombre de parmetro y el tipo de datos. Sobrecargado. Inicialice una nueva instancia de la clase de DB2eParameter con el nombre de parmetro, el tipo de datos y la anchura. Sobrecargado. Inicialice una nueva instancia de la clase de DB2eParameter con el nombre de parmetro, el tipo de datos, la anchura y el nombre de columna fuente.

DB2eParameter(string, DB2eType)

DB2eParameter(string, DB2eType, int)

DB2eParameter(string, DB2eType, int, string)

DB2eParameter(string, DB2eType, int, Sobrecargado. Inicialice una nueva instancia ParameterDirection, bool, byte, byte, string, de la clase de DB2eParameter con el nombre DataRowVersion, object) de parmetro, el tipo de datos, la anchura, la direccin del parmetro, el booleano anulable, la precisin numrica, la escala, el nombre de columna fuente, la versin fuente y el valor del parmetro.

204

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 62. Propiedades de instancias pblicas Propiedad DB2eType DbType Direction Obtiene o establece un valor que indica si el parmetro sea slo de entrada, slo de salida, bidireccional o un parmetro de valor de retorno de procedimiento almacenado. Obtiene o establece un valor que indica si el parmetro acepta valores nulos. Obtiene o establece el nombre del DB2eParameter. Obtiene o establece el nmero mximo de dgitos utilizados para representar la propiedad Value. Obtiene o establece el nmero de lugares decimales en los que se ha resuelto Value. Obtiene o establece el tamao mximo, en bytes, de los datos de la columna. Obtiene o establece el nombre de la columna fuente correlacionada con el DataSet y utilizada para cargar o devolver el Value. Obtiene o establece la DataRowVersion a utilizar al cargar el Value. Obtiene o establece el valor del parmetro. Descripcin Obtiene o establece el DB2eType del parmetro.

IsNullable ParameterName Precisin Scale Size SourceColumn

SourceVersion Value

Tabla 63. Mtodos de instancias pblicas Mtodo ToString Descripcin Obtiene una serie que contiene el ParameterName.

Enumeracin de DB2eType
Especifica el tipo de datos de un campo, propiedad o DB2eParameter. [Visual Basic] Public Enum DB2eType [C#] public enum DB2eType La tabla siguiente muestra las correlaciones entre tipos de datos de DB2eType, los tipos de datos de DB2 Everyplace (se muestra entre parntesis) y los tipos de estructura de .NET.
Tabla 64. Correlaciones de tipo de datos Miembro SmallInt Descripcin Valor numrico exacto con precisin 5 y escale 0 (con signo: 32.768 <= n <= 32.767, sin signo: 0 <= n <= 65.535) (SMALLINT). Se correlaciona con Int16.

Consulta

205

Tabla 64. Correlaciones de tipo de datos (continuacin) Miembro Entero Descripcin Valor numrico exacto con la precisin 10 y la escala 0 (con signo: 2[31] <= n <= 2[31] 1, sin signo:0 <= n <= 2[32] 1) (INTEGER). Se correlaciona con Int32. Serie de caracteres de longitud fija (CHAR). Se correlaciona con String. Serie de caracteres de longitud variable (VARCHAR). Se correlaciona con String. Valor numrico, exacto, con signo con una precisin de al menos p y escala s, dnde 1 <= p <= 31 y s <= p. (DECIMAL). Se correlaciona con Decimal. Datos de fecha en el formato aaaa-mm-dd (DATE). Se correlaciona con DateTime. Datos de hora en el formato hh:mm:ss (TIME). Se correlaciona con TimeSpan. Datos de indicacin de la fecha y hora en el formato aaaa-mm-dd-hh.mm.ss.zzzzzz (TIMESTAMP). Se correlaciona con DateTime. Corriente de datos binarios (BLOB). Se correlaciona con una Matriz del tipo Byte.

Char VarChar Decimal

Date Time Timestamp

Blob

Requisitos NameSpace: IBM.Data.DB2.DB2e Namespace Assembly: IBM.Data.DB2.DB2e.dll

Mandatos del CLP


Esta aplicacin es un simple Procesador de lnea de mandatos (CLP) para trabajar con tablas y datos de DB2 Everyplace. Los desarrolladores de aplicaciones pueden ejecutar directamente sentencias de SQL desde esta interfaz de lnea de mandatos. Por ejemplo:
SELECT * FROM PHONEBOOK

En algunas plataformas, cada sentencia debe terminar con un punto y coma. Por ejemplo:
SELECT * FROM PHONEBOOK;

El Procesador de lnea de mandatos tambin soporta algunos mandatos ampliados. $file [archivo entrada] [archivo salida] Ejecuta sentencias de SQL desde un archivo de entrada y graba el resultado en un archivo de salida. Este mandato est soportado en Palm OS, en Symbian OS ni en Windows CE. Para todas las dems plataformas, puede especificar la va de acceso completa. AUTOCOMMIT OFF|ON Especifica si la aplicacin confirma cada sentencia por omisin (el valor por omisin del motor es ON). Cuando la modalidad de confirmacin automtica est activada (true), cada sentencia se trata como una sola

206

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

transaccin completa. AUTOCOMMIT OFF cambia la modalidad de transaccin a manual, lo que permite que las aplicaciones retrotraigan o bien confirmen el trabajo. BLASTDB Descarta todas las tablas de usuario de la base de datos. COMMIT WORK (o COMMIT) Confirma todas las operaciones de actualizacin, supresin e insercin anteriores e inicia un nuevo mbito transaccional. CONNECT TO arg1 Desconecta automticamente la aplicacin de la conexin actual y vuelve a conectar la aplicacin con una base de datos local arg1). La especificacin est en la llamada de CLI SQLConnect(). El delimitador para las vas de acceso correspondientes a CLI-SQLConnect es \ (barra inclinada invertida) o bien / (barra inclinada). Ambos delimitadores se reconocen en todas las plataformas y se correlacionan con el delimitador apropiado cuando se accede al sistema de archivos, lo que permite que las bases de datos residan en directorios diferentes. Por ejemplo,
connect to c:\temp \ create table t (a int) insert into t values (10) select * from t

CONNECT TO arg1 USER arg2 USING arg3 Conecta la aplicacin a una base de datos local (arg1) utilizando el nombre de usuario (arg2) y la contrasea (arg3) especificados. Esta informacin se necesita para acceder a tablas cifradas. Si la aplicacin ya est conectada a la base de datos, la conexin en cuestin se descartar. Nota: Un nombre de directorio puede incluir un espacio. Por ejemplo, C:\System\program files\ es una estructura de directorios vlida, pero debe utilizar la misma estructura de directorios que exista en su mquina. DBCHECK archivosalida Ejecuta la herramienta de comprobacin de la integridad de los datos y graba el resultado en un archivo de salida en el directorio de la base de datos. Este mandato slo recibe soporte en sistemas operativos Linux y Windows de 32 bits. DESCRIBE SELECT Describe el tipo, la columna y la longitud del nombre de los datos devueltos por una sentencia SELECT. Por ejemplo:
DESCRIBE SELECT * FROM PHONEBOOK

DISABLE APPLICATION SET DIRTY Impide que el Procesador de lnea de mandatos establezca el bit de modificacin. DISABLE LONG FILENAME Crea archivos en el formato de nombres 8.3. DISABLE PHYSICAL DELETE Inhabilita la modalidad de supresin fsica (es el valor por omisin).
Consulta

207

DISABLE READ DELETED Inhabilita la lectura de las filas suprimidas. DISABLE REORG Inhabilita la reorganizacin de tablas. ENABLE APPLICATION SET DIRTY Permite que el Procesador de lnea de mandatos establezca el bit de modificacin. ENABLE LONG FILENAME Crea archivos en el formato de nombres largo (es el valor por omisin). ENABLE PHYSICAL DELETE Habilita la modalidad de supresin fsica. Las filas suprimidas ya no se podrn leer. ENABLE READ DELETED Habilita la lectura de las filas suprimidas. ENABLE REORG Habilita la reorganizacin de tablas automticamente (es el valor por omisin). HELP Lista todos los mandatos disponibles. LIST COLUMNS Lista todas las columnas de las tablas de usuario de la base de datos. LIST INDEX Lista todos los ndices ordenados por tabla, nombre, nombre de ndice y columna. LIST TABLES Lista todas las tablas de usuario de la base de datos. ROLLBACK WORK (o ROLLBACK) Retrotrae todas las operaciones anteriores de actualizacin, supresin e insercin e inicia un nuevo mbito de transaccin. VERSION Imprime la cadena de caracteres de la versin de la base de datos porttil DB2 Everyplace. Devuelve la misma cadena de caracteres que la funcin SQLGetInfo().

DB2 CLI
Resumen de funciones de DB2 CLI
La Tabla 65 en la pgina 209 ofrece un resumen de las funciones de DB2 CLI soportadas por DB2 Everyplace que incluye la finalidad de cada funcin y un resumen de las diferencias entre las funciones de DB2 CLI soportadas por DB2 Everyplace y las funciones estndar de DB2 CLI.

208

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 65. Lista de funciones de DB2 CLI Nombre de la funcin SQLAllocConnect SQLAllocEnv SQLAllocHandle SQLAllocStmt SQLBindCol Finalidad Obtiene un descriptor de contexto de conexin. Obtiene un descriptor de entorno. Obtiene un descriptor de contexto. Asigna un descriptor de sentencia. Asigna almacenamiento para El tipo de datos destino slo una columna resultante y puede ser un tipo de datos especifica el tipo de datos. soportado. No se da soporte al localizador de LOB. Asigna almacenamiento para No da soporte al enlace con un parmetro de una matrices de variables de sentencia de SQL. aplicacin o localizadores de LOB. No da soporte a SQLPutData(), por lo que la aplicacin debe colocar el valor del parmetro en ParameterValuePtr antes de invocar SQLExecute(). El tipo de parmetro slo puede ser INPUT, pues no se da soporte a los procedimientos almacenados. Devuelve la lista de nombres CatalogName, NameLength1, de columna en las tablas SchemaName, NameLength2 se especificadas. pasan por alto. Las columnas 2, 12 y 15 del conjunto de resultados devuelto son siempre NULL. No se da soporte al cdigo de retorno SQL_STILL_EXECUTING. Conecta a un controlador especfico mediante un nombre de fuente de datos, un ID de usuario y una contrasea. Describe una columna del conjunto de resultados. La informacin sobre columnas est limitada por los tipos soportados de datos de columnas. Resumen de las diferencias

SQLBindParameter

SQLColumns

SQLConnect

SQLDescribeCol

SQLDisconnect SQLEndTran

Cierra la conexin. Solicita un COMMIT o un ROLLBACK para todas las operaciones de todas las sentencias asociadas a una conexin. Devuelve informacin adicional sobre errores o sobre el estado. El atributo de conexin SQL_ATTR_AUTOCOMMIT debe establecerse en SQL_AUTOCOMMIT_OFF antes de invocar SQLEndTran().

SQLError

Consulta

209

Tabla 65. Lista de funciones de DB2 CLI (continuacin) Nombre de la funcin SQLExecDirect Finalidad Ejecuta una sentencia. Resumen de las diferencias No se da soporte a los cdigos de retorno SQL_STILL_EXECUTING ni SQL_NEED_DATA. No se da soporte a las llamadas de CLI asncronas. Se deben enlazar todos los parmetros antes de invocar SQLExecute(). No se da soporte a la ejecucin asncrona de las llamadas de SQL.

SQLExecute

Ejecuta una sentencia preparada.

SQLFetch

Devuelve una fila resultante. El resultado se obtiene fila a fila, no por conjuntos de filas. No se da soporte a los descriptores de sentencias. No se da soporte al cdigo de retorno SQL_STILL_EXECUTING. Devuelve un conjunto de filas resultante. El resultado se obtiene por conjuntos de filas. No se da soporte al cdigo de retorno SQL_STILL_EXECUTING. PKCatalogName, NameLength1, PKSchemaName, NameLength2, FKCatalogName, NameLength4, FKSchemaName, NameLength5 se pasan por alto. Las columnas 1, 2, 5, 6, 12 y 13 del conjunto de resultados devuelto son siempre una serie de longitud cero. Las columnas 10, 11 y 14 del conjunto de resultados devuelto son siempre cero. No se da soporte al cdigo de retorno SQL_STILL_EXECUTING.

SQLFetchScroll

SQLForeignKeys

Devuelve informacin sobre claves forneas para la tabla especificada.

SQLFreeConnect SQLFreeEnv SQLFreeHandle SQLFreeStmt

Libera el descriptor de contexto de conexin. Libera el descriptor de entorno. Libera recursos de descriptor de contexto. Finaliza el proceso de la sentencia, desecha los resultados pendientes y, opcionalmente, libera todos los recursos asociados al descriptor de la sentencia. Slo se da soporte a las opciones SQL_DROP y SQL_RESET_PARAMS.

210

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 65. Lista de funciones de DB2 CLI (continuacin) Nombre de la funcin SQLGetConnectAttr Finalidad Devuelve el valor actual de un atributo de conexin. Resumen de las diferencias DB2 Everyplace da soporte a un subconjunto de atributos de conexin soportados por DB2. DB2 Everyplace tambin da soporte a algunos atributos de conexin no soportados por DB2. El nombre de cursor generado internamente siempre comienza por CUR. El tipo de datos destino slo puede ser un tipo de datos soportado. No se da soporte al localizador de LOB. No se da soporte al cdigo de retorno SQL_STILL_EXECUTING. Slo se da soporte a los registros de diagnstico asociados a un descriptor de contexto de una sentencia o conexin. Slo se da soporte a registros de diagnstico individuales.

SQLGetCursorName

Devuelve el nombre de cursor que est asociado a un descriptor de sentencia. Devuelve parte o la totalidad de una columna de una fila de un conjunto de resultados.

SQLGetData

SQLGetDiagRec

Obtiene varios campos de datos de diagnstico.

SQLGetInfo

Devuelve informacin acerca DB2 Everyplace da soporte a de una fuente de datos y un un subconjunto de los tipos controlador especficos. de informacin soportados por DB2. Devuelve el valor actual de DB2 Everyplace da soporte a un atributo de una sentencia. un subconjunto de atributos de sentencia soportados por DB2. DB2 Everyplace tambin da soporte a algunos atributos de sentencia no soportados por DB2. Devuelve el nmero de marcadores de parmetros de una sentencia de SQL. Devuelve el nmero de columnas del conjunto de resultados. Prepara una sentencia de SQL para una ejecucin posterior. No se da soporte al cdigo de retorno SQL_STILL_EXECUTING.

SQLGetStmtAttr

SQLNumParams

SQLNumResultCols

SQLPrepare

Consulta

211

Tabla 65. Lista de funciones de DB2 CLI (continuacin) Nombre de la funcin SQLPrimaryKeys Finalidad Devuelve una lista de nombres de columna que abarcan la clave primaria de una tabla. Resumen de las diferencias No se tienen en cuenta los parmetros CatalogName, NameLength1, SchemaName, NameLength2. Las columnas 1, 2 y 6 del conjunto de resultados devuelto son siempre una serie de longitud cero. No se da soporte al cdigo de retorno SQL_STILL_EXECUTING.

SQLRowCount

Devuelve el nmero de filas afectadas por una peticin de insercin, actualizacin o supresin. Establece opciones relacionadas con una conexin. DB2 Everyplace da soporte a un subconjunto de atributos de conexin soportados por DB2. DB2 Everyplace tambin da soporte a algunos atributos de conexin no soportados por DB2. DB2 Everyplace da soporte a un subconjunto de atributos de sentencia soportados por DB2. DB2 Everyplace tambin da soporte a algunos atributos de sentencia no soportados por DB2.

SQLSetConnectAttr

SQLSetStmtAttr

Establece opciones relacionadas con una sentencia.

SQLTables

Devuelve la lista de nombres CatalogName, NameLength1, de tabla almacenados en una SchemaName, NameLength2, fuente de datos especfica. TableType, NameLength4 se pasan por alto. DB2 Everyplace slo da soporte al tipo TABLE. No se da soporte al cdigo de retorno SQL_STILL_EXECUTING.

Clave para las descripciones de funciones de DB2 CLI


Cada descripcin de funcin contiene las secciones siguientes: Finalidad Esta seccin proporciona una breve visin general de lo que realiza la funcin. Tambin indica si debe invocarse alguna funcin antes y despus de invocar la funcin que se est describiendo. Cada funcin tiene tambin una tabla que indica qu especificacin o norma cumple la funcin. Esta tabla indica el soporte de la funcin. Algunas funciones utilizan un conjunto de opciones que no son aplicables a todas las especificaciones o normas. Las diferencias significativas estn indicadas en la seccin sobre restricciones de la funcin.

212

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Sintaxis Esta seccin contiene el prototipo C genrico. El prototipo genrico se utiliza para todos los entornos, incluido Windows. Todos los argumentos de funcin que son punteros se definen utilizando la macro FAR; esta macro se inhabilita (se establece en un espacio en blanco) para todas las plataformas excepto Windows. En Windows, FAR se utiliza para definir argumentos como punteros remotos. Argumentos Esta seccin lista cada argumento de la funcin, junto con su tipo de datos, una descripcin y la indicacin de si es un argumento de entrada o de salida. Algunas funciones contienen argumentos de entrada o salida, que se denominan argumentos diferidos o enlazados. Estos argumentos son punteros que apuntan a almacenamientos intermedios asignados por la aplicacin y estn asociados con (o enlazados a) un parmetro de una sentencia de SQL o una columna de un conjunto de resultados. DB2 CLI accede a las reas de datos que la funcin especifica en un momento posterior. Estas reas de datos diferidas deben ser vlidas todava cuando DB2 CLI acceda a ellas. Uso Esta seccin proporciona informacin sobre cmo utilizar la funcin y cualquier consideracin especial aplicable. Las posibles condiciones de error no se describen aqu, sino que se incluyen en la seccin sobre diagnsticos.

Cdigos de retorno Esta seccin lista todos los posibles cdigos de retorno de la funcin. Cuando se devuelve SQL_ERROR o SQL_SUCCESS_WITH_INFO, se puede obtener informacin sobre errores invocando SQLError() o SQLGetDiagRec(). Diagnsticos Esta seccin contiene una tabla que lista los SQLSTATE devueltos explcitamente por DB2 CLI (tambin pueden obtenerse los SQLSTATE generados por DBMS) e indica la causa del error. Estos valores se obtienen invocando SQLError() o SQLGetDiagRec() despus de que la funcin devuelva un SQL_ERROR o SQL_SUCCESS_WITH_INFO. Restricciones Esta seccin indica las diferencias o limitaciones existentes entre DB2 Everyplace CLI y ODBC que podran afectar a una aplicacin. Consulte el manual IBM DB2 Universal Database Call Level Interface Guide and Reference para obtener ms informacin sobre DB2 CLI como, por ejemplo, informacin sobre los cdigos de retorno, diagnsticos, ejemplos, configuracin del entorno de la CLI y el acceso a las aplicaciones de ejemplo.

Conversin de datos mediante funciones de DB2 CLI


DB2 CLI gestiona la transferencia de datos, y su conversin si procede, entre la aplicacin y DB2 Everyplace. Antes de que tenga lugar la transferencia de datos propiamente dicha, se indica el tipo de datos fuente, el tipo de datos destino o ambos tipos cuando se llama a SQLBindParameter(), SQLBindCol() o SQLGetData(). Estas funciones utilizan nombres simblicos (tales como SQL_CHAR y SQL_C_CHAR) para identificar los tipos de datos implicados.

Consulta

213

Por ejemplo, para enlazar un marcador de parmetro que corresponde a un tipo de datos de SQL de SQL_VARCHAR, con un tipo de almacenamiento intermedio C de entero largo de una aplicacin, la llamada apropiada a SQLBindParameter() tendra este aspecto:
SQLBindParameter (hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_VARCHAR, 0, 0, long_ptr, 0, NULL);

La Tabla 66 muestra las conversiones soportadas entre los tipos de datos C y de SQL. La primera columna de la Tabla 66 contiene el tipos de datos de SQL. Las columnas restantes representan los tipos de datos C. Si la columna del tipo de datos C contiene: D X La conversin est soportada y es la conversin por omisin para el tipo de datos de SQL. DB2 Everyplace da soporte a la conversin.

en blanco DB2 Everyplace no da soporte a la conversin. Los lmites existentes respecto a la precisin, la escala y las reglas para el truncamiento y el redondeo para conversiones de tipos siguen las normas de sintaxis de SQL.
Tabla 66. Conversiones de datos soportadas SQL, tipo de datos BLOB CHAR Conversin por omisin SQL C BINARY SQL C CHAR SQL C LONG SQL C SHORT SQL C TINYINT SQL C TYPE DATE SQL C TYPE TIME SQL C BINARY SQL C BIT SQL C TYPE TIMESTAMP DATE DECIMAL SQL C TYPE DATE SQL C CHAR SQL SQL SQL SQL INTEGER SQL C LONG SQL SQL SQL SQL SQL SQL SMALLINT SQL C SHORT SQL SQL SQL SQL SQL SQL C C C C C C CHAR LONG TINYINT FLOAT DOUBLE BIT C C C C C C CHAR SHORT TINYINT FLOAT DOUBLE BIT C C C C LONG SHORT TINYINT BIT SQL C CHAR Otras conversiones soportadas SQL C CHAR

214

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 66. Conversiones de datos soportadas (continuacin) SQL, tipo de datos TIME TIMESTAMP VARCHAR Conversin por omisin SQL C TYPE TIME SQL C TYPE TIMESTAMP SQL C CHAR SQL SQL SQL SQL SQL SQL SQL SQL C C C C C C C C LONG SHORT TINYINT TYPE DATE TYPE TIME BINARY BIT TYPE TIMESTAMP Otras conversiones soportadas SQL C CHAR SQL C CHAR

SQLAllocConnectAsignar descriptor de conexin


En ODBC Versin 3, SQLAllocConnect() se desaprob y se sustituy por SQLAllocHandle(); para obtener ms informacin, vea SQLAllocHandleAsignar descriptor de contexto en la pgina 216. Recomendacin: Aunque esta versin de DB2 CLI sigue dando soporte a SQLAllocConnect(), utilice SQLAllocHandle() en sus programas de DB2 CLI para que se ajusten a las normas ms recientes. Migracin a la nueva funcin Por ejemplo, la sentencia:
SQLAllocConnect(henv, hdbc);

se escribira as utilizando la nueva funcin:


SQLAllocHandle(SQL_HANDLE_DBC, henv, hdbc);

SQLAllocEnvAsignar descriptor de entorno


En ODBC versin 3, SQLAllocEnv() se desaprob y se sustituy por SQLAllocHandle(); vea SQLAllocHandleAsignar descriptor de contexto en la pgina 216 para obtener ms informacin. Recomendacin: Aunque esta versin de DB2 CLI sigue dando soporte a SQLAllocEnv(), utilice SQLAllocHandle() en sus programas de DB2 CLI para que se ajusten a las normas ms recientes. Migracin a la nueva funcin Por ejemplo, la sentencia:
SQLAllocEnv(henv);

se escribira as utilizando la nueva funcin:


SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, henv);

Consulta

215

SQLAllocHandleAsignar descriptor de contexto


Finalidad
Especificacin: DB2 CLI 5.0 ODBC 3.0 ISO CLI

SQLAllocHandle() asigna descriptores de contexto de entorno, de conexin o de sentencia. Esta funcin es una funcin genrica para asignar descriptores de contexto que sustituye a las funciones de la versin 2 desaprobadas, SQLAllocConnect(), SQLAllocEnv() y SQLAllocStmt(). Sintaxis
SQLRETURN SQLAllocHandle (SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE *OutputHandlePtr);

Argumentos de la funcin
Tabla 67. Argumentos de SQLAllocHandle Tipo de datos SQLSMALLINT Argumento HandleType Uso entrada Descripcin El tipo de descriptor de contexto que debe ser asignado por SQLAllocHandle(). Debe ser uno de los valores siguientes: v SQL_HANDLE_ENV v SQL_HANDLE_DBC v SQL_HANDLE_STMT SQLHANDLE InputHandle entrada Descriptor de contexto existente que debe utilizarse como contexto para el nuevo descriptor de contexto que se est asignando. Si HandleType es SQL_HANDLE_ENV, este valor es SQL_NULL_HANDLE. Si HandleType es SQL_HANDLE_DBC, este valor debe ser un descriptor de entorno; y si es SQL_HANDLE_STMT, debe ser un descriptor de contexto de conexin. Puntero que apunta a un almacenamiento intermedio en el que devolver el descriptor de contexto a la estructura de datos recin asignada.

SQLHANDLE

OutputHandlePtr salida

Uso SQLAllocHandle() se utiliza para asignar descriptores de contexto de entorno, de conexin y de sentencia, tal como se describe a continuacin. Una aplicacin puede asignar al mismo tiempo varios descriptores de contexto de sentencia. Si la aplicacin invoca SQLAllocHandle() con *OutputHandlePtr establecido en un descriptor de entorno, de conexin o de sentencia que ya existe, DB2 CLI sobreescribir la informacin asociada al descriptor de contexto. DB2 CLI no

216

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

comprueba si el descriptor de contexto especificado en *OutputHandlePtr ya est en uso, ni comprueba el contenido anterior de un descriptor de contexto antes de sobreescribirlo. Para DB2 Everyplace, todos los descriptores de contexto, excepto el descriptor de sentencia, son descriptores de contexto ficticios y no contienen informacin utilizable. El descriptor de sentencia proporciona acceso a informacin sobre una sentencia, tal como mensajes de error, e informacin de estado para el proceso de sentencias de SQL. Para solicitar un descriptor de sentencia, la aplicacin se conecta a una fuente de datos y luego invoca SQLAllocHandle() antes de someter sentencias de SQL. En esta llamada, HandleType se debe establecer en SQL_HANDLE_STMT y InputHandle se debe establecer en el descriptor de conexin devuelto por la llamada a SQLAllocHandle() que hizo que se asignara ese descriptor de contexto. DB2 CLI asigna el descriptor de sentencia, asocia el descriptor de sentencia a la conexin especificada y devuelve en *OutputHandlePtr el valor del descriptor de contexto asociado. La aplicacin pasa el valor de *OutputHandlePtr en todas las llamadas subsiguientes que necesiten un descriptor de sentencia. Cuando una aplicacin finaliza, se liberan todos los recursos de DB2 Everyplace asignados para la aplicacin, por lo que los descriptores de contexto utilizados por la aplicacin dejan de ser vlidos. Para DB2 Everyplace, no existe ningn descriptor asociado a un descriptor de sentencia con atributos que una aplicacin pueda cambiar. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_INVALID_HANDLE v SQL_ERROR Cuando se asigna un descriptor de contexto que no sea un descriptor de contexto de entorno, si SQLAllocHandle() devuelve SQL_ERROR, establece OutputHandlePtr en SQL_NULL_HENV, SQL_NULL_HDBC o SQL_NULL_HSTMT, en funcin del valor de HandleType, a menos que el argumento de salida sea un puntero nulo. La aplicacin puede entonces obtener informacin adicional a partir de la estructura de datos de diagnstico asociada al descriptor de contexto en el argumento InputHandle. Diagnsticos
Tabla 68. SQLSTATE de SQLAllocHandle SQLSTATE Descripcin 01000 08003 Aviso. La conexin est cerrada. Explicacin Mensaje informativo. (La funcin devuelve SQL_SUCCESS_WITH_INFO). El argumento HandleType es SQL_HANDLE_STMT, pero la conexin especificada por el argumento InputHandle no est abierta. El proceso de conexin debe finalizar satisfactoriamente (y se debe abrir la conexin) para que DB2 CLI asigne un descriptor de contexto de sentencia.

Consulta

217

Tabla 68. SQLSTATE de SQLAllocHandle (continuacin) SQLSTATE Descripcin HY000 Error general. Explicacin Se ha producido un error para el que no existe ningn SQLSTATE especfico. El mensaje de error devuelto por SQLGetDiagRec() en el almacenamiento intermedio *MessageText describe el error y su causa. DB2 CLI no puede asignar memoria para el descriptor de contexto especificado. El argumento HandleType es SQL_HANDLE_DBC, o SQL_HANDLE_STMT; y no se pudo procesar la llamada a la funcin debido a que no se pudo acceder a los objetos de memoria subyacentes, posiblemente debido a una falta de memoria. Se ha llegado al lmite en el nmero de descriptores de contexto que se pueden asignar para el tipo de descriptor de contexto indicado por el argumento HandleType. El argumento HandleType no es: v SQL_HANDLE_ENV v SQL_HANDLE_DBC v SQL_HANDLE_STMT

HY001 HY013

Error de asignacin de memoria. Error inesperado de gestin de la memoria.

HY014

No hay ms descriptores de contexto.

HY092

Tipo de opcin fuera de rango.

SQLAllocStmtAsignar un descriptor de sentencia


En ODBC Versin 3, se desaprob SQLAllocStmt() y se sustituy por SQLAllocHandle(); para obtener ms informacin, vea SQLAllocHandleAsignar descriptor de contexto en la pgina 216. Recomendacin: Aunque esta versin de DB2 CLI sigue dando soporte a SQLAllocStmt(), utilice SQLAllocHandle() en sus programas de DB2 CLI para que se ajusten a las normas ms recientes. Migracin a la nueva funcin Por ejemplo, la sentencia:
SQLAllocStmt(hdbc, hstmt);

se escribira as utilizando la nueva funcin:


SQLAllocHandle(SQL_HANDLE_STMT, hdbc, hstmt);

SQLBindColEnlazar una columna a una variable de aplicacin


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI

SQLBindCol() se utiliza para asociar (enlazar) columnas de un conjunto de resultados con variables de aplicacin, para todos los tipos de datos C. Se transfieren datos del DBMS a la aplicacin cuando se invoca SQLFetch(). Durante la transferencia de datos puede producirse una conversin de los datos. SQLBindCol() se invoca una vez para cada columna del conjunto de resultados que la aplicacin necesite recuperar.

218

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

En general, SQLPrepare() o SQLExecDirect() se invocan antes que esta funcin y SQLFetch() se invoca despus. Pueden tambin ser necesarios atributos de columnas antes de invocar SQLBindCol() y se pueden obtener utilizando SQLDescribeCol(). Sintaxis
SQLRETURN SQLBindCol (SQLHSTMT SQLUSMALLINT SQLSMALLINT SQLPOINTER SQLINTEGER SQLINTEGER StatementHandle, /* hstmt */ ColumnNumber, /* icol */ TargetType, /* fCType */ TargetValuePtr, /* rgbValue */ BufferLength, /* cbValueMax */ *FAR StrLen_or_IndPtr); /* pcbValue */

Argumentos de la funcin
Tabla 69. Argumentos de SQLBindCol Tipo de datos SQLHSTMT SQLUSMALLINT Argumento StatementHandle ColumnNumber Uso entrada entrada Descripcin Descriptor de contexto de sentencia Nmero identificador de la columna. Las columnas estn numeradas secuencialmente, de izquierda a derecha. Los nmeros de columna comienzan en el 1. El tipo de datos C del nmero de columna ColumnNumber en el conjunto de resultados. Se da soporte a los tipos siguientes: v SQL_C_BINARY v SQL_C_BIT v SQL_C_CHAR v SQL_C_DOUBLE v SQL_C_FLOAT v SQL_C_LONG v SQL_C_SHORT v SQL_C_TYPE_DATE v SQL_C_TYPE_TIME v SQL_C_TYPE_TIMESTAMP v SQL_C_TINYINT Si se especifica SQL_C_DEFAULT, los datos se transfieren a su tipo de datos C por omisin. SQLPOINTER TargetValuePtr entrada/ salida (diferido) Puntero que apunta al almacenamiento intermedio donde DB2 CLI debe guardar los datos de columna cuando se obtienen los datos. Si TargetValuePtr es nulo, la columna no se enlaza. SQLINTEGER BufferLength entrada Tamao, en bytes, del almacenamiento intermedio TargetValuePtr disponible para almacenar los datos de columna. Si TargetType denota una serie binaria o de caracteres o es SQL_C_DEFAULT, BufferLength debe ser superior a 0 o se devuelve un error. En otro caso, este argumento no se tiene en cuenta.

SQLSMALLINT

TargetType

entrada

Consulta

219

Tabla 69. Argumentos de SQLBindCol (continuacin) Tipo de datos SQLINTEGER * Argumento StrLen_or_IndPtr Uso entrada/ salida (diferido) Descripcin Puntero a un valor que indica el nmero de bytes que DB2 CLI tiene disponibles para devolverlos en el almacenamiento intermedio TargetValuePtr. SQLFetch() devuelve SQL_NULL_DATA en este argumento si el valor de datos de la columna es nulo. Tambin puede devolverse SQL_NO_LENGTH. Consulte la seccin sobre uso para obtener ms informacin.

Para esta funcin, TargetValuePtr y StrLen_or_Ind son salidas diferidas, es decir, las posiciones de memoria a las que apuntan estos punteros no se actualizan hasta que se obtiene una fila del conjunto de resultados. En consecuencia, las posiciones referenciadas por estos punteros deben permanecer vlidas hasta que se invoque SQLFetch(). Por ejemplo, si se invoca SQLBindCol() dentro de una funcin local, SQLFetch() se debe llamar desde dentro del mismo mbito de la funcin o el almacenamiento intermedio TargetValuePtr debe estar asignado o declarado como esttico o global. Uso La aplicacin llama a SQLBindCol() una vez para cada columna del conjunto de resultados para la que la aplicacin necesite recuperar datos. Los conjuntos resultantes se generan llamando a SQLExecute() o a SQLExecDirect(). Cuando se invoca SQLFetch(), los datos de cada una de estas columnas enlazadas se colocan en la ubicacin asignada (proporcionada por los punteros TargetValuePtr y StrLen_or_Ind). Las columnas se identifican mediante un nmero, que se asigna secuencialmente de izquierda a derecha. Los nmeros de columna comienzan en el 1. El nmero de columnas del conjunto de resultados se puede determinar invocando SQLNumResultCols(). La aplicacin puede consultar los atributos de la columna (tales como el tipo de datos y la longitud) invocando primero SQLDescribeCol(). Luego, esta informacin se puede utilizar para asignar una ubicacin de memoria, con el tipo de datos y tamao apropiados, para indicar una conversin a otro tipo de datos. Una aplicacin puede elegir no enlazar todas las columnas, o incluso no enlazar ninguna columna. Los datos de cualquiera de las columnas tambin se pueden recuperar utilizando SQLGetData() una vez obtenidas las columnas enlazadas correspondientes a la fila actual. En recuperaciones subsiguientes de datos, la aplicacin puede cambiar el enlace de estas columnas o puede invocar SQLBindCol() para enlazar columnas previamente desenlazadas. El nuevo enlace no afecta a los datos ya capturados, se utiliza en la recuperacin siguiente. Para desenlazar una columna individual, llame a SQLBindCol() con el puntero TargetValuePtr establecido en NULL. Para desenlazar todas las columnas, la aplicacin debe invocar SQLFreeStmt(). La aplicacin debe asegurarse de que se asigna suficiente almacenamiento para los datos que deben recuperarse. Si el almacenamiento intermedio debe contener datos

220

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

de longitud variable, la aplicacin debe asignar suficiente almacenamiento para la longitud mxima de la columna enlazada, de lo contrario se puede producir un truncamiento de los datos. Si el almacenamiento intermedio debe contener datos de longitud fija, DB2 CLI considera que el tamao del almacenamiento intermedio es la longitud del tipo de datos C. Si se especifica la conversin de datos, esto puede afectar al tamao de almacenamiento necesario. Si se produce truncamiento de la serie, se devuelve SQL_SUCCESS_WITH_INFO y StrLen_or_IndPtr se establece en el tamao real de TargetValuePtr para devolverlo a la aplicacin. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 70. SQLSTATE de SQLBindCol SQLSTATE Descripcin 07009 ndice descriptor no vlido. Error en el enlace de comunicaciones. Error inesperado del sistema. Error de asignacin de memoria. Nmero de columna no vlido. Explicacin El valor especificado para el argumento ColumnNumber excede el nmero mximo de columnas del conjunto de resultados. El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. Error no recuperable del sistema. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. El valor especificado para el argumento ColumnNumber es inferior a 0. El valor especificado para el argumento ColumnNumber exceda el nmero mximo de columnas soportadas por la fuente de datos. HY003 HY013 HY090 Tipo de programa fuera de rango. Error inesperado de gestin de la memoria. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. Controlador no apropiado. TargetType no es un tipo de datos vlido ni SQL_C_DEFAULT. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. El valor especificado para el argumento BufferLength es inferior a 1 y el argumento TargetType es SQL_C_CHAR, SQL_C_BINARY o SQL_C_DEFAULT. DB2 CLI reconoce el tipo de datos especificado en el argumento TargetType pero no le da soporte.

40003 08S01 58004 HY001 HY002

HYC00

Durante la recuperacin de datos pueden presentarse otros mensajes de diagnstico referentes a las columnas enlazadas.

Consulta

221

Restricciones Los almacenamientos intermedios de salida deben estar alineados por palabras (igual). Muchos procesadores, como Motorola 68000, tienen reglas para la alineacin por palabras, y la aplicacin debe alinear debidamente el almacenamiento intermedio para los datos que no son de tipo carcter.

SQLBindParameter-Enlazar un marcador de parmetro a un almacenamiento intermedio


Finalidad
Especificacin: DB2 CLI 2.1 ODBC 2.0

SQLBindParameter() se utiliza para asociar (enlazar) marcadores de parmetros de una sentencia de SQL con variables de aplicacin, para todos los tipos de datos C. En este caso, se transfieren datos de la aplicacin al DBMS cuando se invoca SQLExecute() o SQLExecDirect(). Durante la transferencia de datos puede producirse una conversin de los datos. Sintaxis
SQLRETURN SQL_API SQLBindParameter( SQLHSTMT StatementHandle, /* SQLUSMALLINT ParameterNumber, /* SQLSMALLINT InputOutputType, /* SQLSMALLINT ValueType, /* SQLSMALLINT ParameterType, /* SQLUINTEGER ColumnSize, /* SQLSMALLINT DecimalDigits, /* SQLPOINTER ParameterValuePtr,/* SQLINTEGER BufferLength, /* SQLINTEGER *FAR StrLen_or_IndPtr);/* hstmt */ ipar */ fParamType */ fCType */ fSqlType */ cbColDef */ ibScale */ rgbValue */ cbValueMax */ pcbValue */

Argumentos de la funcin
Tabla 71. Argumentos de SQLBindParameter Tipo de datos SQLHSTMT SQLUSMALLINT Argumento StatementHandle ParameterNumber Uso entrada entrada Descripcin Descriptor de contexto de sentencia. Nmero del marcador de parmetro, ordenado secuencialmente de izquierda a derecha y comenzando en 1.

222

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 71. Argumentos de SQLBindParameter (continuacin) Tipo de datos SQLSMALLINT Argumento InputOutputType Uso entrada Descripcin El tipo de parmetro. El tipo soportado es: v SQL_PARAM_INPUT: Cuando se ejecuta la sentencia, se enva al servidor el valor de datos real del parmetro; el almacenamiento intermedio ParameterValuePtr debe contener valores vlidos de datos de entrada; el almacenamiento intermedio StrLen_or_IndPtr debe contener el correspondiente valor de longitud o SQL_NTS, o SQL_NULL_DATA. DB2 Everyplace no da soporte a SQLPutData(), por lo que no se debe colocar el valor del parmetro en el almacenamiento intermedio ParameterValuePtr. v SQL_PARAM_INPUT_OUTPUT: El marcador de parmetro est asociado a un parmetro de entrada/salida del procedimiento almacenado invocado. Una vez ejecutada la sentencia, se envan al servidor los valores de datos reales para el parmetro. El almacenamiento intermedio ParameterValuePtr debe contener valores vlidos de datos de entrada; el almacenamiento intermedio StrLen_or_IndPtr debe contener el correspondiente valor de longitud o SQL_NTS, SQL_NULL_DATA. v SQL_PARAM_OUTPUT: El marcador de parmetro est asociado a un parmetro de salida del procedimiento almacenado invocado o al valor de retorno del procedimiento almacenado. Una vez ejecutada la sentencia, los datos del parmetro de salida se devuelven al almacenamiento intermedio de la aplicacin especificado mediante ParameterValuePtr y StrLen_or_IndPtr, a menos que ambos sean punteros NULL, en cuyo caso se descartan los datos de salida. Si un parmetro de salida no tiene un valor de retorno, StrLen_or_IndPtr se establece en SQL_NULL_DATA. SQLSMALLINT ValueType entrada Tipo de datos C del parmetro. Se da soporte a los tipos siguientes: v SQL_C_BINARY v SQL_C_BIT v SQL_C_CHAR v SQL_C_DOUBLE v SQL_C_FLOAT v SQL_C_LONG v SQL_C_SHORT v SQL_C_TYPE_DATE v SQL_C_TYPE_TIME v SQL_C_TYPE_TIMESTAMP v SQL_C_TINYINT Si se especifica SQL_C_DEFAULT, los datos se transfieren desde su tipo de datos C por omisin al tipo indicado en ParameterType.

Consulta

223

Tabla 71. Argumentos de SQLBindParameter (continuacin) Tipo de datos SQLSMALLINT Argumento ParameterType Uso entrada Descripcin Tipo de datos SQL del parmetro. Los tipos soportados son: v SQL_BLOB v SQL_CHAR v SQL_DECIMAL v SQL_INTEGER v SQL_SMALLINT v SQL_TYPE_DATE v SQL_TYPE_TIME v SQL_TYPE_TIMESTAMP v SQL_VARCHAR SQLUINTEGER ColumnSize entrada Precisin del marcador de parmetro correspondiente. v Si ParameterType denota una serie binaria o una serie de caracteres de un solo byte (tal como SQL_CHAR, SQL_BLOB), esta es la longitud mxima en bytes del marcador de parmetro. v En otro caso, este argumento no se tiene en cuenta. SQLSMALLINT SQLPOINTER DecimalDigits ParameterValuePtr entrada entrada (diferido), salida (diferido), o ambos Escala del correspondiente parmetro si ParameterType es SQL_DECIMAL. v En la entrada (InputOutputType establecido en SQL_PARAM_INPUT o SQL_PARAM_INPUT_OUTPUT): Durante la ejecucin, si StrLen_or_IndPtr no contiene SQL_NULL_DATA, entonces ParameterValuePtr apunta a un almacenamiento intermedio que contiene los datos reales del parmetro. v En la salida (InputOutputType establecido en SQL_PARAM_OUTPUT o SQL_PARAM_INPUT_OUTPUT): ParameterValuePtr apunta al almacenamiento intermedio donde se almacena el valor del parmetro de salida del procedimiento almacenado. v Si ParameterValuePtr es nulo, denota la desvinculacin del parmetro. SQLINTEGER BufferLength entrada Para datos binarios y de tipo de carcter, BufferLength especifica la longitud del almacenamiento intermedio ParameterValuePtr. Para datos que no sean binarios ni de tipo carcter, este argumento no se tiene en cuenta y se considera que el almacenamiento intermedio ParameterValuePtr tiene la longitud asociada al tipo de datos C. Para parmetros de salida, BufferLength se utiliza para determinar si se truncan los datos.

224

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 71. Argumentos de SQLBindParameter (continuacin) Tipo de datos SQLINTEGER * Argumento StrLen_or_IndPtr Uso entrada (diferido), salida (diferido), o ambos Descripcin v Si es un parmetro de entrada o de entrada/salida: Es el puntero que apunta a la ubicacin que contiene (cuando se ejecuta la sentencia) la longitud del valor de marcador de parmetro almacenado en ParameterValuePtr. Para especificar un valor nulo para un marcador de parmetro, esta ubicacin de almacenamiento debe contener SQL_NULL_DATA. Si ValueType es SQL_C_CHAR, esta ubicacin de almacenamiento debe contener la longitud exacta de los datos almacenados en ParameterValuePtr o SQL_NTS si el contenido de ParameterValuePtr termina en nulo. Si contiene la longitud exacta, no se permiten caracteres nulos en los datos almacenados en ParameterValuePtr. Si ValueType indica datos de tipo carcter, (explcitamente o implcitamente utilizando SQL_C_DEFAULT) y este puntero se establece en NULL, la aplicacin debe proporcionar una serie terminada en nulo en ParameterValuePtr. Esto tambin implica que este marcador de parmetro nunca tiene un valor nulo. v Si se trata de un parmetro de salida (InputOutputType se establece en SQL_PARAM_OUTPUT): Debe ser un parmetro de salida o un valor de retorno de una llamada (CALL) a un procedimiento almacenado y debe apuntar a uno de los siguientes valores, despus de la ejecucin del procedimiento almacenado: Nmero de bytes disponibles a devolver en ParameterValuePtr, excluyendo el carcter de terminacin en nulo. SQL_NULL_DATA

Uso Un marcador de parmetro se representa mediante un smbolo ? en una sentencia de SQL y sirve para indicar una posicin en la sentencia donde se colocar un valor proporcionado por la aplicacin cuando se ejecute la sentencia. Este valor se puede obtener a partir de una variable de aplicacin. Se utiliza SQLBindParameter() para enlazar el rea de almacenamiento de la aplicacin con el marcador de parmetro. La aplicacin debe asociar una variable a cada marcador de parmetro de la sentencia de SQL antes de ejecutarse sta. Para esta funcin, ParameterValuePtr y StrLen_or_IndPtr son argumentos diferidos. Las posiciones de almacenamiento deben ser vlidas y contener valores de datos de entrada cuando se ejecute la sentencia. Esto significa que la llamada a SQLExecDirect() o a SQLExecute() se debe mantener en el mismo mbito de procedimiento que las llamadas a SQLBindParameter(), o bien estas posiciones de almacenamiento se deben asignar dinmicamente o declarar de forma esttica o global. Se hace referencia a los marcadores de parmetros por un nmero (ColumnNumber) y estn numerados secuencialmente de izquierda a derecha, comenzando en el 1.

Consulta

225

Todos los parmetros enlazados por esta funcin permanecen en vigor hasta que se invoca una de las funciones siguientes: v Se invoca SQLFreeStmt() con la opcin SQL_RESET_PARAMS v Se invoca SQLFreeHandle() con HandleType establecido en SQL_HANDLE_STMT v Se invoca de nuevo SQLBindParameter() para el mismo nmero de parmetro (ParameterNumber) Una vez ejecutada la sentencia de SQL y procesados los resultados, la aplicacin puede volver a utilizar el descriptor de sentencia para ejecutar otra sentencia de SQL. Si las especificaciones para el marcador de parmetro son diferentes (nmero de parmetros, longitud o tipo), se debe invocar SQLFreeStmt() con SQL_RESET_PARAMS para restaurar o borrar los enlaces de parmetros. El tipo de datos del almacenamiento intermedio C indicado por ValueType debe ser compatible con el tipo de datos SQL indicado por ParameterType, de lo contrario se produce un error. Debido a que los datos contenidos en las variables referenciadas por ParameterValuePtr y StrLen_or_IndPtr no se verifican hasta que se ejecuta la sentencia, los errores de contenido o formato de los datos no se detectan ni notifican hasta que se llama a SQLExecute() o a SQLExecDirect(). Para esta funcin, ParameterValuePtr y StrLen_or_IndPtr son argumentos diferidos. Cuando InputOutputType est establecido en SQL_PARAM_INPUT, las posiciones de almacenamiento deben ser vlidas y contener valores de datos de entrada cuando se ejecute la sentencia. Esto significa que la llamada a SQLExecDirect() o a SQLExecute() se debe mantener en el mismo mbito de procedimiento que las llamadas a SQLBindParameter(), o bien estas posiciones de almacenamiento se deben asignar dinmicamente o declarar de forma esttica o global. DB2 Everyplace da soporte a SQL_PARAM_INPUT, SQL_PARAM_INPUT_OUTPUT y SQL_PARAM_OUTPUT. DB2 Everyplace no da soporte a SQLPutData(), por lo que no se debe colocar el valor del parmetro en el almacenamiento intermedio ParameterValuePtr. Para datos C binarios y de tipo de carcter, el argumento BufferLength especifica la longitud del almacenamiento intermedio ParameterValuePtr. Para todos los dems tipos de datos C, el argumento BufferLength no se tiene en cuenta. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE

226

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Diagnsticos
Tabla 72. SQLSTATE de SQLBindParameter SQLSTATE 07006 Descripcin Conversin no vlida. Explicacin La conversin desde el valor de datos identificado por el argumento ValueType al tipo de datos identificado por el argumento ParameterType no es una conversin vlida. (Por ejemplo, la conversin desde SQL_C_DATE a SQL_DOUBLE.) El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. Error no recuperable del sistema.

40003 08S01

Error en el enlace de comunicaciones. Error inesperado del sistema.

58004 HY001 HY003

Error de asignacin de DB2 CLI no puede asignar la memoria memoria. necesaria para ejecutar o finalizar la funcin. Tipo de programa fuera de rango. Tipo de datos SQL fuera de rango. Valor no vlido de argumento. El valor especificado por el argumento ParameterNumber no es un tipo de datos vlido ni SQL_C_DEFAULT. El valor especificado para el argumento ParameterType no es un tipo vlido de datos SQL. El argumento ParameterValuePtr es un puntero nulo y el argumento StrLen_or_IndPtr es un puntero nulo e InputOutputType no es SQL_PARAM_OUTPUT.

HY004

HY009

HY013 HY090

Error inesperado de DB2 CLI no puede acceder a la memoria gestin de la memoria. necesaria para ejecutar o finalizar la funcin. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. El valor especificado para el argumento BufferLength era inferior a 0.

HY093

Nmero de parmetros El valor especificado para el argumento no vlido. ValueType es inferior a uno o superior al nmero mximo de parmetros soportado por el servidor. Valor no vlido de escala. El valor especificado para ParameterType es SQL_DECIMAL o SQL_NUMERIC y el valor especificado para DecimalDigits es inferior a 0 o superior al valor del argumento ParamDef (precisin). El valor especificado para ParameterType es SQL_DECIMAL o SQL_NUMERIC y el valor especificado para ParamDef es inferior a uno. InputOutputType no es SQL_PARAM_INPUT.

HY094

HY104

Valor no vlido de precisin. Tipo de parmetro no vlido.

HY105

Consulta

227

Tabla 72. SQLSTATE de SQLBindParameter (continuacin) SQLSTATE HYC00 Descripcin Controlador no apropiado. Explicacin DB2 CLI o la fuente de datos no dan soporte a la conversin especificada por la combinacin del valor especificado para el argumento ValueType y el valor especificado para el argumento ParameterType. El valor especificado para el argumento ParameterType no est soportado por DB2 CLI o por la fuente de datos.

SQLConnectConectar con una fuente de datos


Finalidad
Especificacin: DB2 CLI 2.1 ODBC 1.0 ISO CLI

SQLConnect() establece una conexin con la base de datos destino. Antes de invocar esta funcin se debe asignar un descriptor de conexin utilizando SQLAllocHandle(). Esta funcin se debe invocar antes de asignar un descriptor de sentencia utilizando SQLAllocHandle(). Sintaxis
SQLRETURN SQLConnect ( SQLHDBC ConnectionHandle, SQLCHAR *FAR ServerName, SQLSMALLINT NameLength1, SQLCHAR *FAR UserName, SQLSMALLINT NameLength2, SQLCHAR *FAR Authentication, SQLSMALLINT NameLength3); /* /* /* /* /* /* /* hdbc */ szDSN */ cbDSN */ szUID */ cbUID */ szAuthStr */ cbAuthStr */

Argumentos de la funcin
Tabla 73. Argumentos de SQLConnect Tipo de datos SQLHDBC SQLCHAR * SQLSMALLINT SQLCHAR * Argumento ConnectionHandle ServerName NameLength1 UserName Uso entrada entrada entrada entrada Descripcin Descriptor de contexto de conexin. Ubicacin y nombre de la base de datos. El nombre es opcional. DB2 Everyplace pasa por alto este nombre. Longitud del contenido del argumento ServerName. Nombre de autorizacin (identificador de usuario). Esta serie se utiliza con cifrado; de lo contrario, DB2 Everyplace la pasa por alto. Longitud del contenido del argumento UserName. Serie de caracteres de autenticacin (contrasea). Esta serie se utiliza con cifrado; de lo contrario, DB2 Everyplace la pasa por alto. Longitud del contenido del argumento Authentication.

SQLSMALLINT SQLCHAR *

NameLength2 Authentication

entrada entrada

SQLSMALLINT

NameLength3

entrada

228

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Notas Un usuario no registrado (alguien que no exista en la tabla DB2eSYSUSERS) recibir el mensaje de aviso, 42704 (objeto no definido) al intentar conectar con una base de datos DB2 Everyplace cifrada durante una llamada a la funcin SQLGetDiagRec() de CLI. Un usuario registrado no recibir este aviso. En cambio, tanto un usuario registrado como un usuario no registrado pueden conectar con la base de datos durante la llamada a la funcin SQLConnect() y no recibirn ningn mensaje de aviso. Uso SQLConnect() se puede utilizar para conectar con fuentes de datos en ubicaciones distintas. Para acceder a una fuente de datos en un dispositivo local, el argumento se establece ServerName en un nombre de fuente de datos. DB2 Everyplace pasa por alto el nombre de la fuente de datos y se accede a la fuente de datos local. Para aplicaciones que utilizan dispositivos de almacenamiento secundario, el argumento ServerName acepta una serie que apunte a la ubicacin de una fuente de datos (DataSource) que existe localmente o que existe en un dispositivo de almacenamiento secundario soportado tales como IBM Microdrive, Sony Memory Stick, Compact Flash, SD Memory Card o MultiMediaCard. The ServerName string format is:
ServerName=Device:/Path/DataSource

Device Es el nombre del dispositivo donde se almacena la fuente de datos (DataSource). El carcter reservado # se utiliza para acceder a cualquier dispositivo de almacenamiento Compact Flash (CF) de Tipo II (en dispositivos Palm OS con soporte para CF). El almacenamiento secundario se direcciona utilizando el carcter reservado #. #0 y #1 especifican la ranura de almacenamiento secundario a la que se debe acceder. # es equivalente a #0. Por ejemplo:
ServerName=#:/storage/

DB2 Everyplace se conecta a la fuente de datos (Datasource) del directorio storage de IBM Microdrive en la primera ranura CF. Path Es la va de acceso de la fuente de datos (DataSource) ubicada en el dispositivo (Device). Si se especifica Path sin especificar Device:/, se utilizar la va de acceso del sistema de archivos local referida a la ubicacin de la aplicacin. No se debe grabar ningn archivo en el directorio raz de un volumen. Algunos tipos de soportes no dan soporte a los archivos en el directorio raz. Por ejemplo:
ServerName=dir1/dir2/DATA1

Nota: En DB2 Everyplace no existe lmite en la longitud de la va de acceso. Si la aplicacin se encuentra en /myapp en el sistema de archivos local, DB2 Everyplace se conecta a la fuente datos (FuenteDatos) ubicada en /myapp/dir1/dir2/. El nombre DATA1 de la fuente de datos (Datasource) no se tiene en cuenta. DataSource Opcional: Es el nombre de la fuente de datos con el que se establece una conexin. DB2 Everyplace pasa por alto este nombre.
Consulta

229

Para acceder a un procedimiento almacenado remoto utilizando el Adaptador de consultas y procedimientos almacenados remotos, se utiliza el argumento ServerName para identificar la ubicacin y el nombre de la base de datos. Para aplicaciones que utilizan el adaptador de Consulta remota y Procedimiento almacenado para acceder a bases de datos remotas, el argumento ServerName acepta el formato URL:
http://DireccinIP:NmeroPuerto/path?DB=FuenteDatos

DireccinIP y Authentication son obligatorios. Ejemplos Para conectar con la fuente de datos situada localmente en c:\dir1\dir2\. Se ignora el nombre de fuente de datos DS1:
ServerName=c:/dir1/dir2/DS1

Para conectar localmente con la fuente de datos ubicada en /dir1/dir2/ utilizando la notacin de sistema de archivos propia de UNIX:
ServerName=/dir1/dir2/

Para conectar con la fuente de datos situada localmente en el directorio dir1\, relativo a la va de acceso de la aplicacin. Si la aplicacin se encuentra en c:\myapp\, se acceder a la fuente de datos de c:\myapp\dir1\:
ServerName=dir1\

Para conectar con la fuente de datos situada en el directorio /dir1/ de la memoria de almacenamiento en la ranura 1 del almacenamiento intermedio:
ServerName=#1:/dir1/

Conectar con el DB2 Everyplace Sync Server 192.168.0.1 en el puerto 8080 y con la base de datos mysample utilizando el adaptador de consultas y procedimientos almacenados remotos.
ServerName= http://192.168.0.1:8080/db2e/servlet/com.ibm.mobileservices.adapter .agent.AgentServlet?DB=mysample

Serializacin de conexiones Consulte el apartado Serializacin de conexiones en la pgina 84 para obtener informacin sobre la serializacin de la conexin. Autenticacin de conexiones El cifrado de una base de datos requiere una autenticacin rudimentaria del usuario. DB2 Everyplace utiliza el nombre de usuario (UserName) y la autenticacin (Authentication) para autentificar el usuario durante la conexin. La autentificacin funciona del modo siguiente: Si la tabla de catlogos de DB2eSYSUSERS no existe en la base de datos con la que conecta SQLConnect, se ignora la informacin de UserName y Authentication. DB2 Everyplace distingue entre usuarios registrados y no registrados. Un usuario registrado es un usuario que est relacionado en la tabla DB2eSYSUSERS y que se ha aadido mediante la sentencia GRANT SQL. Durante la conexin, si existe una tabla DB2eSYSUSERS y el UserName pertenece a un usuario registrado, se intenta la autentificacin. Si la contrasea suministrada en el parmetro Authentication no es correcta, se devuelve

230

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

un error (42505). Si el UserName no est registrado, la funcin SQLConnect resultar satisfactoria. Sin embargo, una llamada posterior a SQLGetDiagRec devolver el aviso 42704 (objeto no definido). Esto permite que las aplicaciones distingan entre el caso de un usuario registrado que se conecta satisfactoriamente y un usuario no registrado que se conecta satisfactoriamente. Para obtener ms informacin, vea el Visin general del cifrado local de los datos en la pgina 97, DB2eSYSUSERS en la pgina 88 y GRANT en la pgina 442. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 74. SQLSTATE de SQLConnect SQLSTATE Descripcin 08001 08002 Explicacin

No se puede conectar con DB2 CLI no puede establecer una conexin con la la fuente de datos. fuente de datos (servidor). Conexin en uso. El descriptor de conexin (ConnectionHandle) especificado ya se ha utilizado para establecer una conexin con una fuente de datos y la conexin todava est abierta. La fuente de datos (servidor) rechaz el establecimiento de la conexin.

08004

El servidor de aplicaciones rechaz el establecimiento de la conexin. Error inesperado del sistema. Error de asignacin de memoria. Error inesperado de gestin de la memoria. Nombre no vlido de la DataSource.

58004 HY001 HY013 HY501 HYT00

Error no recuperable del sistema. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. El nombre de fuente de datos (DataSource) especificado no es vlido.

Ha transcurrido el tiempo El tiempo de espera ha transcurrido antes de que la de espera de conexin. aplicacin pudiera conectar con la fuente de datos. El perodo de tiempo de espera se puede establecer mediante el atributo SQL_ATTR_LOGIN_TIMEOUT de SQLSetConnectAttr(). Se devuelve este error cuando hay otra aplicacin que est utilizando la base de datos.

Restricciones Se debe invocar SQLConnect() para poder ejecutar cualquier sentencia de SQL.

SQLDescribeColDevolver un conjunto de atributos de una columna


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI
Consulta

231

SQLDescribeCol() devuelve un conjunto de informacin descriptiva de uso habitual (nombre, tipo, precisin, escala, posibilidad de contener nulos) referente a la columna indicada del conjunto de resultados generado por una consulta. Se debe invocar SQLPrepare() o SQLExecDirect() antes de invocar esta funcin. Generalmente esta funcin se invoca antes de una funcin de enlace de columna (SQLBindCol()) para determinar los atributos de una columna antes de enlazarla a una variable de aplicacin. Sintaxis
SQLRETURN SQLDescribeCol SQLHSTMT SQLUSMALLINT SQLCHAR SQLSMALLINT SQLSMALLINT SQLSMALLINT SQLUINTEGER SQLSMALLINT SQLSMALLINT StatementHandle, ColumnNumber, *FA R ColumnName, BufferLength, *FAR NameLengthPtr, *FAR DataTypePtr, *FAR ColumnSizePtr, *FAR DecimalDigitsPtr, *FAR NullablePtr); ( /* hstmt */ /* icol */ /* szColName */ /* cbColNameMax */ /* pcbColName */ /* pfSqlType */ /* pcbColDef */ /* pibScale */ /* pfNullable */

Argumentos de la funcin
Tabla 75. Argumentos de SQLDescribeCol Tipo de datos SQLHSTMT SQLUSMALLINT Argumento StatementHandle ColumnNumber Uso entrada entrada Descripcin Descriptor de contexto de sentencia. Nmero de la columna que se debe describir. Las columnas estn numeradas secuencialmente, de izquierda a derecha, comenzando en 1. Puntero que apunta a un almacenamiento intermedio de nombres de columna. Este puntero se establece en NULL si no se puede determinar el nombre de la columna. Tamao del almacenamiento intermedio de ColumnName. Bytes disponibles para devolver para el argumento ColumnName. El nombre de columna (ColumnName) se trunca a BufferLength - 1 bytes si NameLengthPtr es mayor o igual que BufferLength. Tipo bsico de datos SQL de la columna. Precisin de la columna tal como est definida en la base de datos. Escala de la columna tal como est definida en la base de datos (slo es aplicable a SQL_DECIMAL). Indica si la columna puede contener nulos. Cualquiera de los dos siguientes: v SQL_NO_NULLS v SQL_NULLABLE

SQLCHAR *

ColumnName

salida

SQLSMALLINT SQLSMALLINT *

BufferLength NameLengthPtr

entrada salida

SQLSMALLINT * SQLUINTEGER * SQLSMALLINT * SQLSMALLINT *

DataTypePtr ColumnSizePtr DecimalDigitsPtr NullablePtr

salida salida salida salida

232

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Uso Las columnas se identifican mediante un nmero, que se asigna secuencialmente de izquierda a derecha, y se pueden describir en cualquier orden. Los nmeros de columna comienzan en el 1. Si se especifica un puntero nulo para cualquiera de los argumentos de puntero, DB2 CLI considera que la informacin no es necesaria para la aplicacin y no se devuelve nada. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos Si SQLDescribeCol() devuelve SQL_ERROR o SQL_SUCCESS_WITH_INFO, se puede obtener uno de los SQLSTATE siguientes llamando a la funcin SQLError().
Tabla 76. SQLSTATE de SQLDescribeCol SQLSTATE 01004 Descripcin Datos truncados. Explicacin El nombre de columna devuelto en el argumento ColumnName es ms largo que el valor especificado en el argumento BufferLength. El argumento NameLengthPtr contiene la longitud del nombre de columna completo. (La funcin devuelve SQL_SUCCESS_WITH_INFO).

07005

La sentencia no ha La sentencia asociada al descriptor de sentencia (StatementHandle) devuelto un conjunto de no devolvi un conjunto de resultados. No haba ninguna columna resultados. para describir. (Invoque primero SQLNumResultCols() para determinar si hay alguna fila en el conjunto de resultados). ndice descriptor no vlido. Error en el enlace de comunicaciones. Error inesperado del sistema. Error de asignacin de memoria. Nmero de columna no vlido. El valor especificado para ColumnNumber es inferior o igual que 0. El valor especificado para el argumento ColumnNumber es superior al nmero de columnas del conjunto de resultados. El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. Error no recuperable del sistema. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. El valor especificado para el argumento ColumnNumber es inferior a 1 o el valor especificado para el argumento ColumnNumber es superior al nmero de columnas del conjunto de resultados.

07009

40003 08S01 58004 HY001 HY002

HY090

Longitud no vlida de la La longitud especificada en el argumento BufferLength es inferior a 1. serie de caracteres o del almacenamiento intermedio. Error de secuencia de funcin. Error inesperado de gestin de la memoria. Se llama a la funcin antes de llamar a SQLPrepare() o SQLExecDirect() para el descriptor de contexto de sentencia (StatementHandle). DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin.
Consulta

HY010

HY013

233

Tabla 76. SQLSTATE de SQLDescribeCol (continuacin) SQLSTATE HYC00 Descripcin Controlador no apropiado. Explicacin DB2 CLI no reconoce el tipo de datos SQL de la columna ColumnNumber.

Restricciones DB2 Everyplace slo da soporte a los siguientes tipos de datos definidos por ODBC: v SQL_BLOB v SQL_CHAR v SQL_DECIMAL v SQL_INTEGER v SQL_SMALLINT v SQL_TYPE_DATE v SQL_TYPE_TIME v SQL_TYPE_TIMESTAMP v SQL_VARCHAR

SQLDisconnectDesconectar de una fuente de datos


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI

SQLDisconnect() cierra la conexin asociada al descriptor de conexin de la base de datos. Despus de invocar esta funcin, invoque SQLConnect() para conectar con otra base de datos o bien invoque SQLFreeHandle(). Sintaxis
SQLRETURN SQLDisconnect (SQLHDBC ConnectionHandle;) /* hdbc */

Argumentos de la funcin
Tabla 77. Argumentos de SQLDisconnect Tipo de datos SQLHDBC Argumento ConnectionHandle Uso entrada Descripcin Descriptor de contexto de conexin.

Uso Si una aplicacin llama a SQLDisconnect() antes de haber liberado todos los descriptores de contexto de sentencia asociados a la conexin, DB2 CLI los libera despus de desconectarse satisfactoriamente de la base de datos. Si se devuelve SQL_SUCCESS_WITH_INFO, significa que desconexin de la base de datos se ha realizado satisfactoriamente pero existe informacin adicional sobre errores o especfica de la implementacin. Por ejemplo, se encontr un problema durante el proceso posterior a la desconexin de la conexin o no existe ninguna

234

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

conexin actual debido a un suceso que se produjo independientemente de la aplicacin (por ejemplo, un error de comunicaciones). Despus de invocar SQLDisconnect() satisfactoriamente, la aplicacin puede reutilizar el argumento ConnectionHandle para hacer otra peticin SQLConnect() o SQLDriverConnect(). Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 78. SQLSTATE de SQLDisconnect SQLSTATE 01002 Descripcin Error de desconexin. Explicacin Se produjo un error durante la desconexin. Sin embargo, la desconexin se realiz satisfactoriamente. (La funcin devuelve SQL_SUCCESS_WITH_INFO). La conexin especificada en el argumento ConnectionHandle no est abierta. Error no recuperable del sistema.

08003 58004 HY001 HY013

La conexin est cerrada. Error inesperado del sistema.

Error de asignacin de memoria. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Error inesperado de gestin de la DB2 CLI no puede acceder a la memoria necesaria para ejecutar o memoria. finalizar la funcin.

Restricciones Ninguna.

SQLEndTranSolicitar COMMIT o ROLLBACK


Finalidad
Especificacin: DB2 CLI ODBC ISO CLI

SQLEndTran() solicita una operacin de COMMIT o ROLLBACK para todas las operaciones activas de todas las sentencias asociadas a una conexin. Sintaxis
SQLRETURN SQLEndTran (SQLSMALLINT SQLHANDLE SQLSMALLINT HandleType, Handle, Completion Type);

Argumentos de la funcin
Tabla 79. Argumentos de SQLEndTran Tipo de datos SQLSMALLINT SQLHANDLE Argumento HandleType Handle Uso entrada entrada Descripcin Tipo de descriptor de contexto Descriptor de contexto de conexin.

Consulta

235

Tabla 79. Argumentos de SQLEndTran (continuacin) Tipo de datos SQLSMALLINT Argumento CompletionType Uso entrada Descripcin Cmo completar las operaciones activas asociadas a una conexin

Uso HandleType Identificador de tipo de descriptor de contexto. Slo se permite SQL_HANDLE_DBC (descriptor de conexin). Handle Descriptor de contexto, del tipo indicado por HandleType. CompletionType Uno de los dos valores siguientes: v SQL_COMMIT v SQL_ROLLBACK En modalidad de comprometer de forma manual, SQLEndTran() debe invocarse antes de invocar SQLDisconnect(). Si no se llama a SQLEndTran() antes que a SQLDisconnect(), las operaciones que han actualizado la base de datos (desde que se inici la ltima transaccin) se retrotraern. Cuando se ejecuta una operacin de ROLLBACK, se borran todos los descriptores de contexto de sentencia. Si la aplicacin se interrumpe o termina prematuramente durante su utilizacin en la modalidad manual, se pierden las actualizaciones realizadas a partir del ltimo COMMIT. SQLEndTran() debe invocarse antes de invocar SQLDisconnect(). Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 80. SQLSTATE de SQLEndTran SQLSTATE 58004 HY001 HY013 HY014 Descripcin Explicacin

Error inesperado del sistema. Error no recuperable del sistema. Error de asignacin de memoria. Error inesperado de gestin de la memoria. No hay ms descriptores de contexto. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar un descriptor de contexto debido a los recursos internos.

Restricciones Ninguna.

236

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

SQLErrorRecuperar informacin sobre errores


En ODBC Versin 3, SQLError() se desaprob y se sustituy por SQLGetDiagRec() y SQLGetDiagField(); para obtener ms informacin, vea SQLGetDiagRecObtener varios valores de campos del registro de diagnsticos en la pgina 263. Recomendacin: Aunque esta versin de DB2 CLI sigue dando soporte a SQLError(), utilice SQLGetDiagRec() en sus programas de DB2 CLI para que se ajusten a las normas ms recientes. Migracin a la nueva funcin Por ejemplo, para obtener informacin de diagnstico correspondiente a un descriptor de sentencia determinado, la sentencia:
SQLError(henv, hdbc, hstmt, szSqlState, pfNativeError, szErrorMsg, cbErrorMsgMax, pcbErrorMsg);

se escribira as utilizando la nueva funcin:


SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, 1, szSqlState, pfNativeError, szErrorMsg, cbErrorMsgMax, pcbErrorMsg);

SQLExecDirectEjecutar una sentencia directamente


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI

SQLExecDirect() ejecuta directamente la sentencia de SQL especificada. La sentencia se puede ejecutar una sola vez. Sintaxis
SQLRETURN SQLExecDirect (SQLHSTMT SQLCHAR SQLINTEGER StatementHandle, *FAR StatementText, TextLength); /* hstmt */ /* szSqlStr */ /* cbSqlStr */

Argumentos de la funcin
Tabla 81. Argumentos de SQLExecDirect Tipo de datos SQLHSTMT SQLCHAR * SQLINTEGER Argumento StatementHandle StatementText TextLength Uso entrada entrada entrada Descripcin Descriptor de contexto de sentencia. Serie de la sentencia de SQL. Longitud del contenido del argumento StatementText. La longitud debe establecerse en un valor igual a la longitud exacta de la sentencia o, si la sentencia termina en nulo, debe establecerse en SQL_NTS.

Uso La serie de la sentencia de SQL no puede contener marcadores de parmetros.

Consulta

237

Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE v SQL_NO_DATA_FOUND Se devuelve SQL_NO_DATA_FOUND si la sentencia de SQL es un UPDATE de bsqueda o un DELETE de bsqueda y no hay ninguna fila que cumpla la condicin de bsqueda. Diagnsticos
Tabla 82. SQLSTATE de SQLExecDirect SQLSTATE Descripcin 22003 Valor numrico fuera de rango Explicacin Un valor numrico asignado a una columna de tipo numrico provoc el truncamiento de la parte entera del nmero, durante el proceso de asignacin o al calcular un resultado intermedio. Los SQLSTATE 42xxx indican la existencia de diversos problemas de sintaxis o de acceso en la sentencia. xxx representa cualquier SQLSTATE con ese cdigo de clase. Ejemplo: 42xxx representa cualquier SQLSTATE perteneciente a la clase 42. La transaccin a la que perteneca esta sentencia de SQL se ha retrotrado debido a un punto muerto o a que se ha excedido el tiempo de espera. Error no recuperable del sistema. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. StatementText es un puntero nulo. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar un descriptor de contexto debido a los recursos internos. El argumento TextLength es inferior a 1 pero no igual a SQL_NTS.

42xxx

Error de sintaxis o violacin de regla de acceso

40001

Retrotraccin de transaccin Error inesperado del sistema Error de asignacin de memoria Valor de argumento no vlido Error inesperado de gestin de la memoria No hay ms descriptores de contexto Longitud no vlida de la serie de caracteres o del almacenamiento intermedio

58004 HY001 HY009 HY013 HY014 HY090

Restricciones Ninguna.

SQLExecuteEjecutar una sentencia


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI

238

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

SQLExecute() ejecuta, una o ms veces, una sentencia que se ha preparado satisfactoriamente con SQLPrepare(). La sentencia se ejecuta utilizando el valor actual de las variables de aplicacin que se enlazaron a marcadores de parmetros mediante SQLBindParameter(). Sintaxis
SQLRETURN SQLExecute (SQLHSTMT StatementHandle); /* hstmt */

Argumentos de la funcin
Tabla 83. Argumentos de SQLExecute Tipo de datos SQLHSTMT Argumento StatementHandle Uso entrada Descripcin Descriptor de contexto de sentencia.

Uso La serie de la sentencia de SQL puede contener marcadores de parmetros. Un marcador de parmetro se representa mediante un smbolo ? y sirve para indicar una posicin en la sentencia donde se colocar un valor proporcionado por la aplicacin cuando se invoque SQLExecute(). Este valor se puede obtener a partir de una variable de aplicacin. Se utiliza SQLBindParameter() para enlazar el rea de almacenamiento de la aplicacin con el marcador de parmetro. Se deben enlazar todos los parmetros antes de invocar SQLExecute(). Despus de procesar los resultados de la llamada a SQLExecute(), la aplicacin puede ejecutar de nuevo la sentencia con los mismos u otros valores de parmetros. Las sentencias ejecutadas por SQLExecDirect() no se pueden ejecutar de nuevo invocando SQLExecute(); se debe primero invocar SQLPrepare(). Si se genera un conjunto de resultados, SQLFetch() recupera la siguiente fila de datos en variables enlazadas. Tambin se pueden recuperar datos llamando a SQLGetData() para cualquier columna que no est enlazada. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE v SQL_NO_DATA_FOUND Se devuelve SQL_NO_DATA_FOUND si la sentencia de SQL es un UPDATE de bsqueda o un DELETE de bsqueda y no hay ninguna fila que cumpla la condicin de bsqueda. Diagnsticos Los SQLSTATE correspondientes a SQLExecute() incluyen todos los de SQLExecDirect() (consulte la Tabla 82 en la pgina 238), excepto HY009 y HY090, y tambin incluyen los SQLSTATE de la Tabla 84 en la pgina 240.

Consulta

239

Tabla 84. SQLSTATE de SQLExecute SQLSTATE HY010 Descripcin Error de secuencia de funcin. Explicacin El descriptor de contexto de sentencia (StatementHandle) especificado no est en estado preparado. Se llama a SQLExecute() sin antes llamar a SQLPrepare(). El nombre de usuario o la contrasea utilizados para conectar con la fuente de datos no son correctos. El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin.

08004

El servidor de aplicaciones ha rechazado la conexin. Error en el enlace de comunicaciones.

08S01

39001

Una funcin definida Una funcin definida por el usuario ha por el usuario ha devuelto un SQLSTATE que no es vlido. devuelto un SQLSTATE no vlido. Retrotraccin de transaccin. La transaccin a la que perteneca esta sentencia de SQL se ha retrotrado debido a un punto muerto o a que se ha excedido el tiempo de espera. El usuario no est definido en la base de datos de control del Centro de administracin de dispositivos porttiles.

40001

59101

Usuario no definido.

59102

Contrasea no correcta. La contrasea del usuario no coincide con la contrasea definida en el Centro de administracin de dispositivos porttiles. Grupo no definido. Aplicacin no definida. El grupo no est definido en el Centro de administracin de dispositivos porttiles. La aplicacin no est definida en el Centro de administracin de dispositivos porttiles.

59103 59104 59105

Suscripcin no definida. La suscripcin con AgentAdapter no est definida en el Centro de administracin de dispositivos porttiles. Suscripcin no completada. Error de conversin XML. Se ha producido un error general de AgentAdapter. Ha fallado la carga de la biblioteca. La suscripcin no dispone de toda la informacin necesaria para invocar un procedimiento almacenado remoto. AgentAdapter ha fallado al convertir los datos de entrada del usuario en un documento XML. Se ha producido un error general de AgentAdapter. No se encuentran en el sistema algunas de las bibliotecas necesarias.

59106

59120 59121

59122 HY501

Nombre no vlido de la El nombre de fuente de datos especificado no fuente de datos. es vlido.

Restricciones Ninguna.

240

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

SQLFetchRecuperar la fila siguiente


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0

SQLFetch() avanza el cursor hasta la siguiente fila del conjunto de resultados y recupera las columnas enlazadas. Las columnas pueden estar asignadas al almacenamiento de la aplicacin. Cuando se llama a SQLFetch(), se realiza la transferencia de datos apropiada, junto con la conversin de datos que se haya indicado al enlazar la columna. Las columnas tambin se pueden obtener individualmente despus de la bsqueda, invocando SQLGetData(). SQLFetch() slo se puede invocar despus de generar un conjunto de resultados (utilizando el mismo descriptor de sentencia) mediante la ejecucin de una consulta. Sintaxis
SQLRETURN SQLFetch (SQLHSTMT StatementHandle); /* hstmt */

Argumentos de la funcin
Tabla 85. Argumentos de SQLFetch Tipo de datos SQLHSTMT Argumento StatementHandle Uso entrada Descripcin Descriptor de contexto de sentencia.

Uso SQLFetch() slo se puede invocar despus de generar un conjunto de resultados para el mismo descriptor de sentencia. Antes de invocar SQLFetch() por primera vez, el cursor se sita en el inicio del conjunto de resultados. El nmero de variables de aplicacin enlazadas mediante SQLBindCol() no debe superar el nmero de columnas del conjunto de resultados, de lo contrario SQLFetch() falla. Si no se ha invocado SQLBindCol() para enlazar ninguna columna, SQLFetch() no devuelve ningn dato a la aplicacin, sino que simplemente avanza el cursor. En este caso, se podra invocar SQLGetData() para obtener todas las columnas individualmente. Los datos de las columnas no enlazadas se descartan cuando SQLFetch() avanza el cursor hasta la fila siguiente. Las columnas pueden estar asignadas al almacenamiento de la aplicacin. Se utiliza SQLBindCol() para enlazar el almacenamiento de la aplicacin a la columna. Durante la recuperacin, se transfieren datos desde la base de datos a la aplicacin. Tambin se define la longitud de los datos disponibles para devolver. Si el almacenamiento intermedio de enlace no es lo suficiente grande para albergar los datos devueltos por SQLFetch(), se truncan los datos. Si se truncan datos de tipo carcter, se devuelve SQL_SUCCESS_WITH_INFO, y se genera un estado SQL que informa del truncamiento. El argumento diferido de salida pcbValue de SQLBindCol() contiene la longitud real de los datos de columna recuperados del
Consulta

241

servidor. La aplicacin debe comparar la longitud real de la salida con la longitud del almacenamiento intermedio de entrada (argumentos pcbValue y cbValueMax de SQLBindCol()) para determinar qu columnas de caracteres se truncaron. El truncamiento de tipos de datos numricos se notifica en forma de aviso si el truncamiento afecta a dgitos situados a la derecha de la coma decimal. Si el truncamiento se produce a la izquierda de la coma decimal, se devuelve un error (consulte la seccin sobre diagnsticos). Una vez recuperadas todas las filas del conjunto de resultados, o cuando no sean necesarias las filas restantes, invoque SQLFreeStmt() para cerrar el cursor y rechazar los datos restantes y los recursos asociados. DB2 Everyplace recupera una fila como mximo cada vez, en lugar de utilizar un conjunto de filas. DB2 Everyplace no da soporte a los descriptores de sentencias. SQLFetch() determina si la aplicacin ha especificado almacenamientos intermedios separados de longitudes y de indicadores. En este caso, si los datos no son nulos, SQLFetch() establece el almacenamiento intermedio de indicadores en 0 y devuelve la longitud en el almacenamiento intermedio de longitudes. Si los datos son nulos, SQLFetch() establece el almacenamiento intermedio de indicadores en SQL_NULL_DATA y no modifica el almacenamiento intermedio de longitudes. Posicionamiento del cursor Cuando se crea el conjunto de resultados, el cursor est situado antes del comienzo del conjunto de resultados. SQLFetch() recupera la fila siguiente. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE v SQL_NO_DATA_FOUND Se devuelve SQL_NO_DATA_FOUND si no hay ninguna fila en el conjunto de resultados o si invocaciones anteriores de SQLFetch() han recuperado todas las filas del conjunto de resultados. Si se han recuperado todas las filas, el cursor est situado despus del final del conjunto de resultados. Diagnsticos
Tabla 86. SQLSTATE de SQLFetch SQLSTATE Descripcin 01004 Datos truncados. Explicacin Los datos devueltos para una o ms columnas estn truncados. Los valores de tipo serie o los valores numricos se truncan por la derecha. (Se devuelve SQL_SUCCESS_WITH_INFO si no se ha producido ningn error). Los datos no se pudieron convertir de forma adecuada al tipo de datos especificado por fCType en SQLBindCol().

07006

Conversin no vlida.

242

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 86. SQLSTATE de SQLFetch (continuacin) SQLSTATE Descripcin 22002 Explicacin

Se ha especificado un El valor de puntero especificado para el argumento almacenamiento pcbValue en SQLBindCol() es un puntero nulo y el intermedio de indicador o valor de la columna correspondiente es nulo. No salida no vlido. existe ninguna manera de notificar SQL_NULL_DATA. Error inesperado del sistema. Error de asignacin de memoria. Error de secuencia de funcin. Error inesperado de gestin de la memoria. Error no recuperable del sistema. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Se llama a la funcin antes de llamar a SQLPrepare() o SQLExecDirect() para el descriptor de contexto de sentencia (StatementHandle). DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin.

58004 HY001 HY010

HY013

Restricciones Ninguna.

SQLFetchScrollRecuperar conjunto de filas y devolver datos para todas las columnas enlazadas
Finalidad
Especificacin: DB2 CLI 5.0 ODBC 3.0

SQLFetchScroll() recupera el conjunto especificado de filas de datos del conjunto de resultados y devuelve datos para todas las columnas enlazadas. Los conjuntos de filas se pueden especificar en una posicin absoluta o relativa. Sintaxis
SQLRETURN SQLFetchScroll ( SQLHSTMT SQLSMALLINT SQLINTEGER StatementHandle, FetchOrientation, FetchOffset);

Argumentos de la funcin
Tabla 87. Argumentos de SQLFetchScroll Tipo de datos SQLHSTMT SQLSMALLINT Argumento StatementHandle FetchOrientation Uso entrada entrada Descripcin Descriptor de contexto de sentencia Tipo de recuperacin: v SQL_FETCH_NEXT v SQL_FETCH_PRIOR v SQL_FETCH_FIRST v SQL_FETCH_LAST v SQL_FETCH_ABSOLUTE v SQL_FETCH_RELATIVE

Consulta

243

Tabla 87. Argumentos de SQLFetchScroll (continuacin) Tipo de datos SQLINTEGER Argumento FetchOffset Uso entrada Descripcin Nmero de la fila para recuperar. La interpretacin de este argumento depende del valor del argumento FetchOrientation.

Uso SQLFetchScroll() devuelve un conjunto de filas especificado del conjunto de resultados. Los conjuntos de filas se pueden especificar mediante una posicin absoluta o relativa. SQLFetchScroll() se puede invocar slo mientras exista un conjunto de resultados, es decir, despus de que una llamada genere un conjunto de resultados y antes de que se cierre el cursor para ese conjunto de resultados. Si existe alguna columna enlazada, la funcin devuelve los datos de esas columnas. Si la aplicacin ha especificado un puntero que apunta a una matriz de estado de filas o a un almacenamiento intermedio en el que devolver el nmero de filas recuperadas, SQLFetchScroll() devuelve tambin esta informacin. Las llamadas a SQLFetchScroll() se pueden intercalar con llamadas a SQLFetch(). Posicionamiento del cursor Cuando se crea el conjunto de resultados, el cursor est situado antes del comienzo del conjunto de resultados. SQLFetchScroll() sita el cursor de bloques de acuerdo con los valores de los argumentos FetchOrientation y FetchOffset, tal y como se muestra en la lista siguiente. Las normas exactas para determinar el inicio del nuevo conjunto de filas se muestran en el apartado siguiente. FetchOrientation Significado SQL_FETCH_NEXT Devolver el conjunto de filas siguiente. Esto equivale a invocar SQLFetch(). SQLFetchScroll() no tiene en cuenta el valor de FetchOffset. SQL_FETCH_PRIOR Devolver el conjunto de filas anterior. SQLFetchScroll() no tiene en cuenta el valor de FetchOffset. SQL_FETCH_RELATIVE Devolver el conjunto de filas FetchOffset a partir del inicio del conjunto de filas actual. SQL_FETCH_ABSOLUTE Devolver el conjunto de filas que comienza en la fila FetchOffset. SQL_FETCH_FIRST Devolver el primer conjunto de filas del conjunto de resultados. SQLFetchScroll() no tiene en cuenta el valor de FetchOffset. SQL_FETCH_LAST Devolver el ltimo conjunto de filas completo del conjunto de resultados. SQLFetchScroll() no tiene en cuenta el valor de FetchOffset. El atributo de sentencia de SQL_ATTR_ROW_ARRAY_SIZE especifica el nmero de filas del conjunto de filas. Si el conjunto de filas que se recupera mediante SQLFetchScroll() se solapa con el final del conjunto de resultados, SQLFetchScroll() devuelve un conjunto de filas parcial. Es decir, si S + R - 1 es superior a L, siendo S la fila inicial del conjunto de filas que se recupera, R es el tamao del conjunto

244

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

de filas y L es la ltima fila del conjunto de resultados, entonces slo son vlidas las primeras L - S + 1 filas del conjunto de filas. Las filas restantes estn vacas y su estado es SQL_ROW_NOROW. Una vez que SQLFetchScroll() vuelve, el cursor del conjunto de filas se sita en la primera fila del conjunto de resultados. Reglas del posicionamiento del cursor Las secciones siguientes describen las reglas exactas para cada valor de FetchOrientation. Estas reglas utilizan la notacin siguiente: Antes del inicio El cursor de bloques est situado antes del inicio del conjunto de resultados. Si la primera fila del nuevo conjunto de filas est delante del inicio del conjunto de resultados, SQLFetchScroll() devuelve SQL_NO_DATA. Despus del final El cursor de bloques est situado despus del final del conjunto de resultados. Si la primera fila del nuevo conjunto de filas est detrs del final del conjunto de resultados, SQLFetchScroll() devuelve SQL_NO_DATA. CurrRowsetStart Es el nmero de la primera fila del conjunto de filas actual. LastResultRow Es el nmero de la ltima fila del conjunto de resultados. RowsetSize Es el tamao del conjunto de filas. FetchOffset Es el valor del argumento FetchOffset. Reglas para SQL_FETCH_NEXT
Tabla 88. Reglas para SQL_FETCH_NEXT: Condicin Antes del inicio CurrRowsetStart + RowsetSize <= LastResultRow CurrRowsetStart + RowsetSize > LastResultRow Despus del final Primera fila del nuevo conjunto de filas 1 CurrRowsetStart + RowsetSize Despus del final Despus del final

Reglas para SQL_FETCH_PRIOR


Tabla 89. Reglas para SQL_FETCH_PRIOR: Condicin Antes del inicio CurrRowsetStart = 1 1 < CurrRowsetStart <= RowsetSize CurrRowsetStart > RowsetSize Primera fila del nuevo conjunto de filas Antes del inicio Antes del inicio 1a CurrRowsetStart - RowsetSize

Consulta

245

Tabla 89. Reglas para SQL_FETCH_PRIOR: (continuacin) Condicin Despus del final Y LastResultRow < RowsetSize Despus del final Y LastResultRow >= RowsetSize Primera fila del nuevo conjunto de filas 1a LastResult - RowRowsetSize + 1

SQLFetchScroll() devuelve SQLSTATE 01S06 (Intento de recuperacin antes de que el conjunto de resultados devolviera el primer conjunto de filas) y SQL_SUCCESS_WITH_INFO.

Reglas para SQL_FETCH_RELATIVE


Tabla 90. Reglas para SQL_FETCH_RELATIVE: Condicin (Antes del inicio Y FetchOffset > 0) O BIEN (Despus del final Y FetchOffset < 0) Antes del inicio Y FetchOffset <= 0 CurrRowsetStart = 1 AND FetchOffset < 0 CurrRowsetStart > 1 AND CurrRowsetStart + FetchOffset < 1 AND |FetchOffset| > RowsetSize CurrRowsetStart > 1 Y CurrRowsetStart + FetchOffset < 1 Y |FetchOffset| <= RowsetSize 1 <= CurrRowsetStart + FetchOffset <= LastResultRow CurrRowsetStart + FetchOffset > LastResultRow Despus del final Y FetchOffset >= 0 Primera fila del nuevo conjunto de filas --a Antes del inicio Antes del inicio Antes del inicio 1b CurrRowsetStart + FetchOffset Despus del final Despus del final

SQLFetchScroll() devuelve el mismo conjunto de filas que si se la llamara con FetchOrientation establecido en SQL_FETCH_ABSOLUTE. Para obtener ms informacin, consulte la seccin SQL_FETCH_ABSOLUTE. SQLFetchScroll() devuelve SQLSTATE 01S06 (Intento de recuperacin antes de que el conjunto de resultados devolviera el primer conjunto de filas) y SQL_SUCCESS_WITH_INFO.

Reglas para SQL_FETCH_ABSOLUTE


Tabla 91. Reglas para SQL_FETCH_ABSOLUTE: Condicin FetchOffset < 0 Y |FetchOffset| <= LastResultRow FetchOffset < 0 Y |FetchOffset| > LastResultRow Y |FetchOffset| > RowsetSize FetchOffset < 0 Y |FetchOffset| > LastResultRow Y |FetchOffset| <= RowsetSize FetchOffset = 0 1 <= FetchOffset <= LastResultRow FetchOffset > LastResultRow Primera fila del nuevo conjunto de filas LastResultRow + FetchOffset + 1 Antes del inicio 1a Antes del inicio FetchOffset Despus del final

246

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

SQLFetchScroll() devuelve SQLSTATE 01S06 (Intento de recuperacin antes de que el conjunto de resultados devolviera el primer conjunto de filas) y SQL_SUCCESS_WITH_INFO.

Reglas para SQL_FETCH_FIRST:


Tabla 92. Reglas para SQL_FETCH_FIRST: Condicin Cualquiera Primera fila del nuevo conjunto de filas 1

Reglas para SQL_FETCH_LAST


Tabla 93. Reglas para SQL_FETCH_LAST: Condicin RowsetSize <= LastResultRow RowsetSize > LastResultRow Primera fila del nuevo conjunto de filas LastResultRow - RowsetSize + 1 1

Devolucin de datos de columnas enlazadas SQLFetchScroll() devuelve datos de columnas enlazadas de la misma manera que SQLFetch(). Para obtener ms informacin, consulte la seccin SQLFetchRecuperar la fila siguiente en la pgina 241. Si no existe ninguna columna enlazada, SQLFetchScroll() no devuelve datos, pero sita el cursor de bloques en la posicin especificada. En este caso, y al igual que ocurre con SQLFetch(), puede utilizar SQLGetData() para recuperar la informacin. Direcciones de almacenamientos intermedios SQLFetchScroll() utiliza el mismo mtodo que SQLFetch() para determinar la direccin de los almacenamientos intermedios de datos y de longitudes/indicadores. Para obtener ms informacin, consulte el apartado SQLBindColEnlazar una columna a una variable de aplicacin en la pgina 218. Matriz de estado de filas La matriz de estado de filas se utiliza para devolver el estado de cada una de las filas del conjunto de filas. La direccin de esta matriz se especifica con el atributo de sentencia de SQL_ATTR_ROW_STATUS_PTR. La matriz es asignada por la aplicacin y debe tener tantos elementos como especifique el atributo de sentencia de SQL_ATTR_ROW_ARRAY_SIZE. Sus valores son establecidos por SQLFetch() y SQLFetchScroll(). Si el valor del atributo de sentencia de SQL_ATTR_ROW_STATUS_PTR es un puntero nulo, estas funciones no devuelven el estado de las filas. El contenido del almacenamiento intermedio de la matriz de estado de filas es indefinido si SQLFetch() o SQLFetchScroll() no devuelve SQL_SUCCESS ni SQL_SUCCESS_WITH_INFO. La matriz de estado de filas devuelve los valores siguientes.
Consulta

247

Valor de la matriz de estado de filas Descripcin SQL_ROW_SUCCESS La fila se recupera satisfactoriamente. SQL_ROW_SUCCESS_WITH_INFO La fila se recupera satisfactoriamente. No obstante, se devuelve un mensaje de aviso referente a la fila. SQL_ROW_ERROR Se produjo un error durante la recuperacin de la fila. SQL_ROW_NOROW El conjunto de filas se solap con el final del conjunto de resultados y no se devolvi ninguna fila que corresponda a este elemento de la matriz de estado de filas. Almacenamiento intermedio de filas recuperadas El almacenamiento intermedio de filas recuperadas se utiliza para devolver el nmero de filas recuperadas, incluidas aqullas para las que no se devolvi ningn dato debido a un error producido al recuperar las filas. Es el nmero de filas para las que el valor en la matriz de estado de filas no es SQL_ROW_NOROW. La direccin de este almacenamiento intermedio se especifica con el atributo de sentencia de SQL_ATTR_ROWS_FETCHED_PTR. El almacenamiento intermedio es asignado por la aplicacin. Sus valores son establecidos por SQLFetch() y SQLFetchScroll(). Si el valor del atributo de sentencia de SQL_ATTR_ROWS_FETCHED_PTR es un puntero nulo, estas funciones no devuelven el nmero de filas recuperadas. Para determinar el nmero de la fila actual en el conjunto de resultados, una aplicacin puede invocar SQLGetStmtAttr() con el atributo SQL_ATTR_ROW_NUMBER. El contenido del almacenamiento intermedio de filas recuperadas es indefinido si SQLFetch() o SQLFetchScroll() no devuelve SQL_SUCCESS ni SQL_SUCCESS_WITH_INFO, excepto cuando se devuelve SQL_NO_DATA, en cuyo caso el valor contenido en el almacenamiento intermedio de filas recuperadas se establece en 0. Cdigos de retorno v v v v v SQL_SUCCESS SQL_SUCCESS_WITH_INFO SQL_NO_DATA SQL_ERROR SQL_INVALID_HANDLE

Diagnsticos
Tabla 94. SQLSTATE de SQLFetchScroll SQLSTATE Descripcin 01000 Aviso Explicacin Mensaje informativo. (La funcin devuelve SQL_SUCCESS_WITH_INFO).

248

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 94. SQLSTATE de SQLFetchScroll (continuacin) SQLSTATE Descripcin 01004 Datos truncados. Explicacin Los datos devueltos para una o ms columnas estn truncados. Los valores de tipo serie o los valores numricos se truncan por la derecha. (Se devuelve SQL_SUCCESS_WITH_INFO si no se ha producido ningn error). El conjunto de filas solicitado se solap con el inicio del conjunto de resultados cuando la posicin actual estaba ms all de la primera fila, y FetchOrientation era SQL_PRIOR o bien FetchOrientation era SQL_RELATIVE con un desplazamiento (FetchOffset) negativo cuyo valor absoluto era menor o igual que el valor actual de SQL_ATTR_ROW_ARRAY_SIZE. (La funcin devuelve SQL_SUCCESS_WITH_INFO). Los datos no se pudieron convertir de forma adecuada al tipo de datos especificado por fCType en SQLBindCol().

01S06

Se ha intentado recuperar antes de que el conjunto de resultados devolviera el primer conjunto de filas.

07006

Conversin no vlida.

22002

Se ha especificado un El valor de puntero especificado para el argumento almacenamiento pcbValue en SQLBindCol() es un puntero nulo y el intermedio de indicador o valor de la columna correspondiente es nulo. No salida no vlido. existe ninguna manera de notificar SQL_NULL_DATA. Valor numrico fuera de rango. Estado no vlido del cursor. Error general. La devolucin del valor numrico para una o ms columnas enlazadas hubiera provocado el truncamiento de la parte entera del nmero. StatementHandle est en estado de ejecutado, pero no hay ningn conjunto de resultados asociado al StatementHandle. Se ha producido un error para el que no existe ningn SQLSTATE especfico. El mensaje de error devuelto por SQLGetDiagRec() en el almacenamiento intermedio *MessageText describe el error y su causa. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Se llama a la funcin antes de llamar a SQLPrepare() o SQLExecDirect() para el descriptor de contexto de sentencia (StatementHandle). El valor especificado para el argumento FetchOrientation no es vlido. El valor del atributo de sentencia de SQL_CURSOR_TYPE es SQL_CURSOR_FORWARD_ONLY y el valor del argumento FetchOrientation no es SQL_FETCH_NEXT.

22003

24000

HY000

HY001 HY010

Error de asignacin de memoria. Error de secuencia de funcin. Tipo de recuperacin fuera de rango.

HY106

HY107

Valor de fila fuera de rango.

El valor especificado con el atributo de sentencia de SQL_ATTR_CURSOR_TYPE es SQL_CURSOR_KEYSET_DRIVEN, pero el valor especificado con el atributo de sentencia de SQL_ATTR_KEYSET_SIZE es superior a 0 e inferior al valor especificado con el atributo de sentencia de SQL_ATTR_ROW_ARRAY_SIZE.

Consulta

249

Restricciones Ninguna.

SQLForeignKeysObtener la lista de columnas de clave fornea


Finalidad
Especificacin: DB2 CLI 2.1 ODBC 1.0

SQLForeignKeys() devuelve informacin sobre claves forneas para la tabla especificada. La informacin se devuelve en un conjunto de resultados de SQL, que se puede procesar utilizando las mismas funciones que se utilizan para recuperar un conjunto de resultados generado por una consulta. PKCatalogName, NameLength1, PKSchemaName, NameLength2, FKCatalogName, NameLength4, FKSchemaName and NameLength5 se pasan por alto. Las columnas 1, 2, 5, 6, 12 y 13 del conjunto de resultados devuelto son siempre una serie de longitud cero. Las columnas 10, 11 y 14 del conjunto de resultados devuelto son siempre cero. Sintaxis
SQLRETURN SQLForeignKeys ( SQLHSTMT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT StatementHandle, *FAR PKCatalogName, NameLength1, *FAR PKSchemaName, NameLength2, *FAR PKTableName, NameLength3, *FAR FKCatalogName, NameLength4 *FAR FKSchemaName, NameLength5, *FAR FKTableName, NameLength6); /* /* /* /* /* /* /* /* /* /* /* /* /* hstmt */ szPkCatalogName */ cbPkCatalogName */ szPkSchemaName */ cbPkSchemaName */ szPkTableName */ cbPkTableName */ szFkCatalogName */ cbFkCatalogName */ szFkSchemaName */ cbFkSchemaName */ szFkTableName */ cbFkTableName */

Argumentos de la funcin
Tabla 95. Argumentos de SQLForeignKeys Tipo de datos SQLHSTMT SQLCHAR* SQLSMALLINT SQLCHAR* SQLSMALLINT SQLCHAR* SQLSMALLINT SQLCHAR* SQLSMALLINT Argumento StatementHandle PKCatalogName NameLength1 PKSchemaName NameLength2 PKTableName NameLength3 FKCatalogName NameLength4 Uso entrada entrada entrada entrada entrada entrada entrada entrada entrada Descripcin Descriptor de contexto de sentencia. Calificador de catlogo de la tabla de claves primarias. DB2 Everyplace pasa por alto este campo. Longitud de PKCatalogName. DB2 Everyplace pasa por alto este campo. Calificador de esquema de la tabla de claves primarias. DB2 Everyplace pasa por alto este campo. Longitud de PKSchemaName. DB2 Everyplace pasa por alto este campo. Nombre de la tabla donde reside la clave primaria. Longitud de PKTableName. Calificador de catlogo de la tabla donde reside la clave fornea. DB2 Everyplace pasa por alto este campo. Longitud de FKCatalogName. DB2 Everyplace pasa por alto este campo.

250

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 95. Argumentos de SQLForeignKeys (continuacin) Tipo de datos SQLCHAR* SQLSMALLINT SQLCHAR* SQLSMALLINT Argumento FKSchemaName NameLength5 FKTableName NameLength6 Uso entrada entrada entrada entrada Descripcin Calificador de esquema de la tabla donde reside la clave fornea. DB2 Everyplace pasa por alto este campo. Longitud de FKSchemaName. DB2 Everyplace pasa por alto este campo. Nombre de la tabla donde reside la clave fornea. Longitud de FKTableName.

Uso Si PKTableName contiene un nombre de tabla y FKTableName es una serie de caracteres vaca, SQLForeignKeys() devuelve un conjunto de resultados que contiene la clave primaria de la tabla especificada y todas las claves forneas (en otras tablas) que hacen referencia a la clave primaria. Si FKTableName contiene un nombre de tabla y PKTableName es una serie de caracteres vaca, SQLForeignKeys() devuelve un conjunto de resultados que contiene todas las claves forneas de la tabla especificada y las claves primarias (en otras tablas) a las que hacen referencia. Si tanto PKTableName como FKTableName contienen nombres de tablas, SQLForeignKeys() devolver las claves forneas de la tabla especificada en FKTableName que hacen referencia a la clave primaria de la tabla especificada en PKTableName. El resultado debe ser una sola clave como mximo. Si se solicitan las claves forneas asociadas a una clave primaria, el conjunto de resultados se ordena de acuerdo con FKTABLE_NAME y ORDINAL_POSITION. Si se solicitan las claves primarias asociadas a una clave fornea, el conjunto de resultados se ordena de acuerdo con PKTABLE_NAME y ORDINAL_POSITION. Las columnas VARCHAR del conjunto de resultados de las funciones de catlogo se han declarado con un atributo de longitud mxima 128 para que sea coherente los lmites de SQL92. Aunque en futuros releases de SQL es posible que se aadan nuevas columnas y se modifiquen los nombres de las columnas existentes, la posicin de las columnas actuales no cambiar. El conjunto de resultados contiene las columnas siguientes: Columna 1 PKTABLE_CAT (VARCHAR(128)) Siempre es una serie de longitud cero. Columna 2 PKTABLE_SCHEM (VARCHAR(128)) Siempre es una serie de longitud cero. Columna 3 PKTABLE_NAME (VARCHAR(128) no NULL) Nombre de la tabla donde reside la clave primaria. Columna 4 PKCOLUMN_NAME (VARCHAR(128) no NULL) Nombre de la columna de clave primaria. Columna 5 FKTABLE_CAT (VARCHAR(128)) Siempre es una serie de longitud cero.

Consulta

251

Columna 6 FKTABLE_SCHEM (VARCHAR(128)) Siempre es una serie de longitud cero. Columna 7 FKTABLE_NAME (VARCHAR(128) no NULL) Nombre de la tabla donde reside la clave fornea. Columna 8 FKCOLUMN_NAME (VARCHAR(128) no NULL) Nombre de la columna de clave fornea. Columna 9 ORDINAL_POSITION (SMALLINT no NULL) Posicin ordinal de la columna en la clave, comenzando en 1. Columna 10 UPDATE_RULE (SMALLINT) Esto es siempre cero. Columna 11 DELETE_RULE (SMALLINT) Esto es siempre cero. Columna 12 FK_NAME (VARCHAR(128)) Siempre es una serie de longitud cero. Columna 13 PK_NAME (VARCHAR(128)) Siempre es una serie de longitud cero. Columna 14 DEFERRABILITY (SMALLINT) Esto es siempre cero. Los nombres de columna que DB2 CLI utiliza siguen el estilo de especificacin de X/Open para CLI CAE. El tipo, contenido y orden de las columnas son idnticos a los definidos para el conjunto de resultados SQLForeignKeys() en ODBC. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 96. SQLSTATE de SQLForeign SQLSTATE 24000 40003 08S01 Descripcin Estado no vlido del cursor. Error en el enlace de comunicaciones. Error de asignacin de memoria. Valor no vlido de argumento. Error de secuencia de funcin. No hay ms descriptores de contexto. Explicacin Ya hay un cursor abierto para el descriptor de contexto de sentencia. El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Tanto el argumento PKTableName como el argumento FKTableName eran punteros nulos. Se llama a la funcin mientras se produce una operacin de datos en ejecucin (SQLPrepare() o SQLExecDirect()). DB2 CLI no puede asignar un descriptor de contexto debido a los recursos internos.

HY001 HY009 HY010

HY014

252

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 96. SQLSTATE de SQLForeign (continuacin) SQLSTATE HY090 Descripcin Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. Explicacin El valor de uno de los argumentos de longitud de nombre es inferior a 0, pero no igual a SQL_NTS

Restricciones Ninguna.

SQLFreeConnectLiberar descriptor de conexin


En ODBC versin 3, SQLFreeConnect() se desaprob y se sustituy por SQLFreeHandle(); vea SQLFreeHandle-Liberar recursos de descriptor de contexto para obtener ms informacin. Recomendacin: Aunque esta versin de DB2 CLI sigue dando soporte a SQLFreeConnect(), utilice SQLFreeHandle() en sus programas de DB2 CLI para que se ajusten a las normas ms recientes. Migracin a la nueva funcin Por ejemplo, la sentencia:
SQLFreeConnect(hdbc);

se escribira as utilizando la nueva funcin:


SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeEnvLiberar descriptor de entorno


En ODBC versin 3, SQLFreeEnv() se desaprob y se sustituy por SQLFreeHandle(); vea SQLFreeHandle-Liberar recursos de descriptor de contexto para obtener ms informacin. Recomendacin: Aunque esta versin de DB2 CLI sigue dando soporte a SQLFreeEnv(), utilice SQLFreeHandle() en sus programas de DB2 CLI para que se ajusten a las normas ms recientes. Migracin a la nueva funcin Por ejemplo, la sentencia:
SQLFreeEnv(henv);

se escribira as utilizando la nueva funcin:


SQLFreeHandle(SQL_HANDLE_ENV, henv);

SQLFreeHandle-Liberar recursos de descriptor de contexto


Finalidad
Especificacin: DB2 CLI 5.0 ODBC 3.0 ISO CLI

SQLFreeHandle() libera recursos asociados a un descriptor de entorno, conexin o sentencia especfico.


Consulta

253

Esta funcin es una funcin genrica para liberar recursos. Sustituye a SQLFreeConnect() (para liberar un descriptor de conexin) y a SQLFreeEnv() (para liberar un descriptor de entorno). SQLFreeHandle() tambin sustituye a SQLFreeStmt() (con la opcin SQL_DROP) para liberar un descriptor de sentencia. Sintaxis
SQLRETURN SQLFreeHandle (SQLSMALLINT SQLHANDLE HandleType, Handle);

Argumentos de la funcin
Tabla 97. Argumentos de SQLFreeHandle Tipo de datos SQLSMALLINT Argumento HandleType Uso entrada Descripcin El tipo de descriptor de contexto que debe ser liberado por SQLFreeHandle(). Debe ser uno de los valores siguientes: v SQL_HANDLE_ENV v SQL_HANDLE_DBC v SQL_HANDLE_STMT Si HandleType no es uno de los valores anteriores, SQLFreeHandle() devuelve SQL_INVALID_HANDLE. SQLHANDLE Handle entrada El nombre del descriptor de contexto que se debe liberar.

Uso SQLFreeHandle() se utiliza para liberar descriptores de contexto para entornos, conexiones y sentencias. Una vez liberado, un descriptor de contexto no debe ser utilizado por una aplicacin; DB2 CLI no comprueba la validez de un descriptor de contexto en una llamada a funcin. Liberacin de un descriptor de entorno Antes de llamar a SQLFreeHandle() con un HandleType de SQL_HANDLE_ENV, una aplicacin debe llamar a SQLFreeHandle() con un HandleType de SQL_HANDLE_DBC para todas las conexiones asignadas bajo el entorno. De lo contrario, la llamada a SQLFreeHandle() devuelve SQL_ERROR y el entorno y las conexiones activas que haya siguen siendo vlidos. Liberacin de un descriptor de conexin Antes de invocar SQLFreeHandle() con HandleType establecido en SQL_HANDLE_DBC, la aplicacin debe invocar SQLDisconnect() para la conexin. De lo contrario, la llamada a SQLFreeHandle() devuelve SQL_ERROR y la conexin sigue siendo vlida. Liberacin de un descriptor de sentencia La llamada a SQLFreeHandle() con HandleType establecido en SQL_HANDLE_STMT libera todos los recursos que fueron asignados por una llamada a SQLAllocHandle() con HandleType establecido en SQL_HANDLE_STMT. Cuando una aplicacin invoca SQLFreeHandle() para liberar una sentencia que

254

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

tiene resultados pendientes, stos se eliminan. Si hay resultados pendientes cuando se invoca SQLFreeHandle(), se descartan los conjuntos resultantes. SQLDisconnect() descarta automticamente las sentencias que estn abiertas en la conexin. Cdigos de retorno v SQL_SUCCESS v SQL_ERROR v SQL_INVALID_HANDLE Si SQLFreeHandle() devuelve SQL_ERROR, el descriptor de contexto es vlido todava. Diagnsticos
Tabla 98. SQLSTATE de SQLFreeHandle SQLSTATE Descripcin 01000 08S01 Aviso. Error en el enlace de comunicaciones. Explicacin Mensaje informativo. (La funcin devuelve SQL_SUCCESS_WITH_INFO). El argumento HandleType es SQL_HANDLE_DBC, y el enlace de comunicaciones entre DB2 CLI y la fuente de datos con el que estaba intentando conectar ha fallado antes de que la funcin terminara su proceso. Se ha producido un error para el que no existe ningn SQLSTATE especfico. El mensaje de error devuelto por SQLGetDiagRec() en el almacenamiento intermedio *MessageText describe el error y su causa. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. El argumento HandleType es SQL_HANDLE_ENV y el estado de al menos una conexin es asignado o conectado. Antes de llamar a SQLFreeHandle() con un HandleType de SQL_HANDLE_ENV, se debe llamar para cada conexin a SQLDisconnect() y SQLFreeHandle() con un HandleType de SQL_HANDLE_DBC. El argumento HandleType es SQL_HANDLE_DBC, y se llama a la funcin antes de llamar a SQLDisconnect() para la conexin. El argumento HandleType es SQL_HANDLE_STMT; se llam a SQLExecute() o SQLExecDirect() con el descriptor de contexto de sentencia y la funcin devolvi SQL_NEED_DATA. (DM) Todos los descriptores de contexto auxiliares y otros recursos no se liberaron antes de llamar a SQLFreeHandle(). HY013 Error inesperado de gestin de la memoria. El argumento HandleType es SQL_HANDLE_STMT y no se pudo procesar la llamada a la funcin debido a que no se pudo acceder a los objetos de memoria asociados, posiblemente debido a una falta de memoria.

HY000

Error general.

HY001 HY010

Error de asignacin de memoria. Error de secuencia de funcin.

Consulta

255

Tabla 98. SQLSTATE de SQLFreeHandle (continuacin) SQLSTATE Descripcin HY017 Utilizacin no vlida de un descriptor de contexto de descriptor asignado automticamente. Explicacin El argumento Handle se establece en el descriptor de contexto para un descriptor asignado automticamente o para un descriptor de implementacin.

Restricciones Ninguna.

SQLFreeStmtLiberar (o restaurar) un descriptor de sentencia


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI

SQLFreeStmt() finaliza el proceso para la sentencia referenciada por el descriptor de sentencia. Utilice esta funcin para: v Desasociar (restaurar) parmetros respecto a variables de aplicacin. v Descartar el descriptor de sentencia y liberar los recursos de DB2 CLI asociados al descriptor de sentencia. SQLFreeStmt() se invoca despus de ejecutar una sentencia de SQL y procesar los resultados. Sintaxis
SQLRETURN SQLFreeStmt (SQLHSTMT SQLUSMALLINT StatementHandle, /* hstmt */ Option); /* fOption */

Argumentos de la funcin
Tabla 99. Argumentos de SQLFreeStmt Tipo de datos SQLHSTMT Argumento StatementHandle Uso entrada entrada Descripcin Descriptor de contexto de sentencia. Opcin que especifica la manera de liberar el descriptor de sentencia. La opcin debe tener uno de los valores siguientes: SQL_DROP, SQL_RESET_PARAMS o SQL_CLOSE.

SQLUSMALLINT Option

Uso SQLFreeStmt() se puede invocar con las opciones siguientes: SQL_DROP Se liberan los recursos de DB2 CLI asociados al descriptor de sentencia de entrada y se invalida el descriptor de contexto. Se descartan todos los resultados pendientes. Esta opcin se sustituye por una llamada a SQLFreeHandle() con el HandleType establecido en SQL_HANDLE_STMT.

256

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Recomendacin: Aunque esta versin de DB2 CLI sigue dando esta opcin, utilice SQLFreeHandle() en sus programas de DB2 CLI para que se ajusten a las normas ms recientes. SQL_RESET_PARAMS Libera todos los almacenamientos intermedios de parmetros establecidos por SQLBindParameter() para StatementHandle. Como mtodo alternativo, puede descartar el descriptor de sentencia y asignar uno nuevo. SQL_CLOSE El cursor (si lo hay) asociado con el descriptor de contexto de sentencia (StatementHandle) se cierra y todos los resultados pendientes se descartan. La aplicacin puede volver a abrir el cursor llamando a SQLExecute() con los mismos valores o valores distintos en las variables de la aplicacin (si las hay) vinculadas a StatementHandle. Si no se ha asociado ningn cursor con el descriptor de contexto de sentencia, esta opcin no tendr efecto (no se generar ningn aviso ni ningn error). Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE No se devuelve SQL_SUCCESS_WITH_INFO si Option est establecido en SQL_DROP, pues no habra ningn descriptor de sentencia para utilizar cuando se invoca SQLError(). Diagnsticos
Tabla 100. SQLSTATE de SQLFreeStmt SQLSTATE 40003 08S01 Descripcin Error en el enlace de comunicaciones. Error inesperado del sistema. Explicacin El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. Error no recuperable del sistema.

58004 HY001 HY092

Error de asignacin de DB2 CLI no puede asignar la memoria memoria. necesaria para ejecutar o finalizar la funcin. Tipo de opcin fuera de rango. El valor especificado para el argumento Option no es SQL_DROP ni SQL_RESET_PARAMS.

Restricciones Ninguna.

SQLGetCursorNameObtener nombre de cursor


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI

Consulta

257

SQLGetCursorName() devuelve el nombre de cursor que est asociado al descriptor de sentencia de entrada. Si se establece explcitamente un nombre de cursor mediante una llamada a SQLSetCursorName(), se devuelve este nombre; en otro caso, se devuelve un nombre generado implcitamente. Sintaxis
SQLRETURN SQLGetCursorName ( SQLHSTMT SQLCHAR *FAR SQLSMALLINT SQLSMALLINT *FAR StatementHandle, CursorName, BufferLength, NameLengthPtr); /* /* /* /* hstmt */ szCursor */ cbCursorMax */ pcbCursor */

Argumentos de la funcin
Tabla 101. Argumentos de SQLGetCursorName Tipo de datos SQLHSTMT SQLCHAR * SQLSMALLINT SQLSMALLINT * Argumento StatementHandle CursorName BufferLength NameLengthPtr Uso entrada salida entrada salida Descripcin Descriptor de contexto de sentencia Nombre del cursor Longitud del almacenamiento intermedio CursorName Nmero de bytes disponibles para devolver para CursorName

Uso SQLGetCursorName() devuelve el nombre de cursor que se estableci explcitamente mediante SQLSetCursorName() o, si no se defini ningn nombre, devuelve el nombre de cursor generado internamente por DB2 CLI. Si se establece explcitamente un nombre de cursor mediante SQLSetCursorName(), se devuelve este nombre hasta que se descarte la sentencia, o hasta que se defina explcitamente otro nombre. Los nombres de cursor generados internamente comienzan siempre con SQLCUR o SQL_CUR. Los nombres de cursor tienen siempre 18 caracteres o menos y siempre son exclusivos dentro de una conexin. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE

258

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Diagnsticos
Tabla 102. SQLSTATE de SQLGetCursorName SQLSTATE 01004 Descripcin Datos truncados. Explicacin El nombre de cursor devuelto en CursorName es ms largo que el valor contenido en BufferLength, y se trunca hasta que su longitud sea de BufferLength - 1 bytes. El argumento NameLengthPtr contiene la longitud del nombre de cursor completo que est disponible para devolver. La funcin devuelve SQL_SUCCESS_WITH_INFO. El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. Error no recuperable del sistema. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Se llama a la funcin mientras se produce una operacin de datos en ejecucin (SQLParamData() o SQLPutData()).

40003 08S01

Error en el enlace de comunicaciones. Error inesperado del sistema. Error de asignacin de memoria. Error de secuencia de funcin.

58004 HY001 HY010

HY013 HY090

Error inesperado de DB2 CLI no puede acceder a la memoria gestin de la memoria. necesaria para ejecutar o finalizar la funcin. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. El valor especificado para el argumento BufferLength era inferior a 0.

Restricciones Ninguna.

SQLGetDataObtener datos de una columna


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI

SQLGetData() recupera datos de una columna individual en la fila actual del conjunto de resultados. Esta funcin es una alternativa al uso de SQLBindCol(), que se utiliza para transferir datos directamente a variables de aplicacin en cada llamada a SQLFetch(). Se debe llamar a SQLFetch() antes de llamar a SQLGetData(). Despus de llamar a SQLGetData() para cada columna que sea necesario, se llama a SQLFetch() para recuperar la fila siguiente. Sintaxis
SQLRETURN SQLGetData ( SQLHSTMT SQLUSMALLINT SQLSMALLINT StatementHandle, ColumnNumber, TargetType, /* hstmt */ /* icol */ /* fCType */
Consulta

259

SQLPOINTER SQLINTEGER SQLINTEGER

TargetValuePtr, /* rgbValue */ BufferLength, /* cbValueMax */ *FAR StrLen_or_IndPtr); /* pcbValue */

Argumentos de la funcin
Tabla 103. Argumentos de SQLGetData Tipo de datos SQLHSTMT Argumento StatementHandle Uso entrada entrada Descripcin Descriptor de contexto de sentencia. Nmero de columna para el que se solicita la obtencin de datos. Las columnas del conjunto de resultados estn numeradas secuencialmente. Los nmeros de columna comienzan en el 1. El tipo de datos C de la columna identificada por ColumnNumber. Se da soporte a los tipos siguientes: v SQL_C_BINARY v SQL_C_BIT v SQL_C_CHAR v SQL_C_DOUBLE v SQL_C_FLOAT v SQL_C_LONG v SQL_C_SHORT v SQL_C_TYPE_DATE v SQL_C_TYPE_TIME v SQL_C_TYPE_TIMESTAMP v SQL_C_TINYINT Si se especifica SQL_C_DEFAULT, los datos se convierten a su tipo de datos C por omisin. SQLPOINTER TargetValuePtr salida Puntero al almacenamiento intermedio donde deben almacenarse los datos de la columna recuperada. El almacenamiento intermedio de salida debe estar alineado por palabras (igual). Muchos procesadores, como Motorola 68000, tienen reglas para la alineacin por palabras, y la aplicacin debe alinear debidamente el almacenamiento intermedio para los datos que no son de tipo carcter. SQLINTEGER BufferLength entrada Tamao mximo del almacenamiento intermedio al que apunta TargetValuePtr. Si TargetType denota una serie binaria o de caracteres, BufferLength debe ser superior a 0 o se devolver un error. En otro caso, este argumento no se tiene en cuenta.

SQLUSMALLINT ColumnNumber

SQLSMALLINT

TargetType

entrada

260

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 103. Argumentos de SQLGetData (continuacin) Tipo de datos SQLINTEGER * Argumento StrLen_or_IndPtr Uso salida Descripcin Puntero al valor que indica el nmero de bytes que DB2 CLI tiene disponibles para devolverlos en el almacenamiento intermedio TargetValuePtr. Si se produce el truncamiento de los datos, contiene el nmero total de bytes necesarios para recuperar la columna entera. Para los tipos de datos binarios y de caracteres, la aplicacin puede elegir, alternativamente, la modalidad de recuperacin gradual a fin de recuperar grandes cantidades de datos por partes. En esta modalidad, el argumento StrLen_or_IndPtr contiene el nmero de bytes que quedan en la columna. El valor es SQL_NULL_DATA si el valor de datos de la columna es nulo. Si este puntero es nulo (NULL) y SQLFetch() obtuvo una columna que contiene datos nulos, esta funcin falla porque no tiene forma de notificar este hecho. Si SQLFetch() recuper una columna que contiene datos binarios, el puntero que apunta a StrLen_or_IndPtr no debe ser nulo (NULL) o la funcin fallar porque no tiene otra forma de notificar a la aplicacin la longitud de los datos recuperados en el almacenamiento intermedio TargetValuePtr.

Uso SQLGetData() se puede utilizar con SQLBindCol() para el mismo conjunto de resultados si se utiliza SQLFetch(). Los pasos generales son: 1. SQLFetch() avanza el cursor hasta la primera fila, recupera la primera fila y transfiere datos para columnas enlazadas. 2. SQLGetData() transfiere datos para la columna especificada. 3. SQLGetData() repite el paso 2 para cada columna necesaria. 4. SQLFetch() avanza el cursor hasta la fila siguiente, recupera la fila siguiente y transfiere datos para columnas enlazadas. 5. Se repiten los pasos 2, 3 y 4 para cada fila del conjunto de resultados, o hasta que el conjunto de resultados ya no sea necesario. Para desechar los datos de la columna antes de terminar el proceso de recuperacin, la aplicacin puede invocar SQLGetData() con ColumnNumber establecido en la posicin de columna deseada. Para desechar datos que no se han recuperado para la fila completa, la aplicacin debe llamar a SQLFetch() para avanzar hasta la fila siguiente; o, si la aplicacin no desea ms datos del conjunto de resultados, llama a SQLFreeStmt().
Consulta

261

El argumento de entrada TargetType determina el tipo de conversin de datos (si la hay) que es necesaria antes de colocar los datos de la columna en el rea de almacenamiento indicada por TargetValuePtr. El valor devuelto en TargetValuePtr termina siempre en nulo, a menos que los datos de columna a recuperar sean binarios. El truncamiento de tipos de datos numricos se notifica en forma de aviso si el truncamiento afecta a dgitos situados a la derecha de la coma decimal. Si el truncamiento se produce a la izquierda de la coma decimal, se devuelve un error. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE v SQL_NO_DATA_FOUND Se devuelve SQL_SUCCESS si SQLGetData() recupera una serie de longitud cero. En este caso, StrLen_or_IndPtr contendr 0 y TargetValuePtr contendr un terminador nulo. Si la llamada anterior a SQLFetch() ha fallado, no llame a SQLGetData() porque el resultado es indefinido Diagnsticos
Tabla 104. SQLSTATE de SQLGetData SQLSTATE 01004 Descripcin Datos truncados. Explicacin Los datos devueltos para la columna especificada (ColumnNumber) estn truncados. Los valores de tipo serie o los valores numricos se truncan por la derecha. Se devuelve SQL_SUCCESS_WITH_INFO. El valor de datos no se puede convertir al tipo de datos C especificado por el argumento TargetType. Se ha llamado anteriormente a la funcin para el mismo valor de ColumnNumber, pero con un valor diferente de TargetType. 22002 Se ha especificado un almacenamiento intermedio de indicador o salida no vlido. Error de asignacin. El valor de puntero especificado para el argumento StrLen_or_IndPtr era un puntero nulo y el valor de la columna es nulo. No existe ninguna manera de notificar SQL_NULL_DATA. Un valor devuelto es incompatible con el tipo de datos indicado por el argumento TargetType. El cursor identificado en la sentencia UPDATE, DELETE, SET o GET no est situado en una fila.

07006

Conversin no vlida.

22005

24504

Estado no vlido del cursor.

262

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 104. SQLSTATE de SQLGetData (continuacin) SQLSTATE 40003 08S01 Descripcin Error en el enlace de comunicaciones. Error inesperado del sistema. Error de asignacin de memoria. Nmero de columna no vlido. Tipo de programa fuera de rango. Error de secuencia de funcin. Explicacin El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. Error no recuperable del sistema. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. La columna especificada es inferior a 0 o superior al nmero de columnas resultantes. TargetType no es un tipo de datos vlido ni SQL_C_DEFAULT. Se llama a la funcin sin antes llamar a SQLFetch().

58004 HY001 HY002 HY003 HY010 HY013 HY090

Error inesperado de DB2 CLI no puede acceder a la memoria gestin de la memoria. necesaria para ejecutar o finalizar la funcin. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. El valor del argumento BufferLength es inferior a 0 y el argumento TargetType es SQL_C_CHAR o SQL_C_BINARY, o bien TargetType es SQL_C_DEFAULT y el tipo por omisin es SQL_C_CHAR, SQL_C_BINARY o SQL_C_DBCHAR. DB2 CLI reconoce el tipo de datos SQL especificado pero no le da soporte. DB2 CLI o la fuente de datos no puede convertir el tipo de datos SQL al tipo TargetType de los datos de la aplicacin.

HYC00

Controlador no apropiado.

Restricciones Ninguna.

SQLGetDiagRecObtener varios valores de campos del registro de diagnsticos


Finalidad
Especificacin: DB2 CLI 5.0 ODBC 3.0

SQLGetDiagRec() devuelve el valor actual del campo SQLSTATE de un registro de diagnstico que contiene informacin sobre errores, avisos y estados. Antes de invocar esta funcin se debe asignar un descriptor de conexin utilizando SQLAllocHandle(). Sintaxis
SQLRETURN SQLGetDiagRec (SQLSMALLINT SQLHANDLE SQLSMALLINT SQLCHAR SQLINTEGER HandleType, Handle, RecNumber, *SQLState, *NativeErrorPtr,

Consulta

263

SQLCHAR SQLSMALLINT SQLSMALLINT

*MessageText, BufferLength, *TextLengthPtr);

Argumentos de la funcin
Tabla 105. Argumentos de SQLGetDiagRec Tipo de datos SQLSMALLINT Argumento HandleType Uso entrada Descripcin Identificador del tipo de descriptor de contexto que describe el tipo de descriptor de contexto para el cual se desea informacin de diagnstico. Puede ser SQL_HANDLE_STMT o SQL_HANDLE_DBC. Descriptor de contexto correspondiente a la estructura de datos de diagnstico; su tipo est indicado por HandleType. Indica el registro de estado en el que la aplicacin busca informacin. Su valor debe ser 1. Puntero que apunta a un almacenamiento intermedio en el que devolver un cdigo SQLSTATE, de cinco caracteres, perteneciente al registro de diagnstico RecNumber. Los primeros dos caracteres indican la clase; los tres siguientes indican la subclase. Puntero que apunta a un almacenamiento intermedio en el que devolver el cdigo de error nativo, que es especfico de la fuente de datos. Puntero que apunta a un almacenamiento intermedio en el que devolver el texto del mensaje de error. Los campos devueltos por SQLGetDiagRec() estn contenidos en una serie de texto. Longitud (en bytes) del almacenamiento intermedio MessageText. Puntero que apunta a un almacenamiento intermedio que contendr el nmero total de bytes (excepto los bytes necesarios para el carcter de terminacin en nulo) para devolver en MessageText. Si el nmero de bytes para devolver es superior a BufferLength, el texto del mensaje de error contenido en MessageText se trunca hasta que su longitud sea BufferLength menos la longitud del carcter de terminacin en nulo.

SQLHANDLE

Handle

entrada

SQLSMALLINT SQLCHAR

RecNumber SQLState

entrada salida

SQLINTEGER

NativeErrorPtr

salida

SQLCHAR

MessageText

salida

SQLINTEGER SQLSMALLINT

BufferLength TextLengthPtr

entrada salida

Uso Habitualmente una aplicacin invoca SQLGetDiagRec() cuando una llamada anterior a una funcin de DB2 CLI devuelve un cdigo de retorno distinto de SQL_SUCCESS. SQLGetDiagRec() devuelve una serie de caracteres que contiene varios campos del registro de la estructura de datos de diagnstico. El funcionamiento de SQLGetDiagRec() se ha ampliado en la Versin 8.1 de DB2 Everyplace. Ahora se pueden devolver los SQLSTATE siguientes: 57011, HY024, HY092, HY000, HY012. Para obtener ms informacin sobre estos SQLSTATE, consulte el Listado de los SQLSTATE en la pgina 475.

264

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

SQLGetDiagRec() recupera slo la informacin de diagnstico ms reciente asociada al descriptor de contexto especificado en el argumento Handle. Si la aplicacin invoca otra funcin, excepto SQLGetDiagRec(), se pierde la informacin de diagnstico obtenida en llamadas anteriores para el mismo descriptor de contexto. Argumento HandleType Cada tipo de descriptor de contexto tiene informacin de diagnstico asociada a l. El argumento HandleType indica el tipo del descriptor de contexto especificado en Handle. DB2 Everyplace da soporte a descriptores de contexto de sentencia y a descriptores de contexto de conexin. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos SQLGetDiagRec() no notifica valores de error por s mismo. Utiliza los valores de retorno siguientes para notificar el resultado de su propia ejecucin: SQL_SUCCESS La funcin devolvi satisfactoriamente informacin de diagnstico. SQL_SUCCESS_WITH_INFO El almacenamiento intermedio MessageText es demasiado pequeo para contener el mensaje de diagnstico solicitado. No se genera ningn registro de diagnstico. Para determinar que se ha producido un truncamiento, la aplicacin debe comparar BufferLength con el nmero real de bytes disponibles, que est escrito en StringLengthPtr. SQL_INVALID_HANDLE El descriptor de contexto indicado por HandleType y Handle no es un descriptor de contexto vlido. SQL_ERROR Se ha producido una de las situaciones siguientes: v RecNumber es negativo o 0. v BufferLength es inferior a cero. SQL_NO_DATA RecNumber es superior al nmero de registros de diagnstico que existan para el descriptor de contexto especificado en Handle. La funcin tambin devuelve SQL_NO_DATA para cualquier valor positivo de RecNumber si no hay ningn registro de diagnstico para Handle. Restricciones Ninguna.

SQLGetInfoObtener informacin general


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI
Consulta

265

SQLGetInfo() devuelve informacin general (que incluye conversiones de datos soportadas) sobre el DBMS al que est conectada la aplicacin. Sintaxis
SQLRETURN SQLGetInfo ( SQLHDBC ConnectionHandle, /* hdbc */ SQLUSMALLINT InfoType, /* fInfoType */ SQLPOINTER InfoValuePtr, /* rgbInfoValue */ SQLSMALLINT BufferLength, /* cbInfoValueMax */ SQLSMALLINT *FAR StringLengthPtr, /* pcbInfoValue */

Argumentos de la funcin
Tabla 106. Argumentos de SQLGetInfo Tipo de datos SQLHDBC Argumento ConnectionHandle Uso entrada salida Descripcin Descriptor de contexto de conexin de base de datos El tipo de informacin deseado. El argumento debe ser uno de los valores de la primera columna de las tablas en Tipos de Datos y Conversin de Datos. Puntero al almacenamiento intermedio donde la funcin almacena la informacin necesaria. Se pueden recuperar 5 tipos de informacin: v Valor entero de 16 bits v Valor entero de 32 bits v Valor binario de 32 bits v Mscara de 32 bits v Serie de caracteres terminada en nulo SQLSMALLINT BufferLength entrada salida Tamao mximo del almacenamiento intermedio al que apunta InfoValuePtr. Puntero a la ubicacin donde esta funcin devuelve el nmero total de bytes disponibles para devolver la informacin deseada. Si la salida de la funcin es una serie de caracteres, este tamao no incluye el carcter de terminacin en nulo. Si el valor contenido en la ubicacin apuntada por StringLengthPtr es superior al tamao del almacenamiento intermedio InfoValuePtr tal como est especificado en BufferLength, los datos de salida se truncarn hasta que su longitud sea BufferLength - 1 bytes, y la funcin devolver SQL_SUCCESS_WITH_INFO.

SQLUSMALLINT InfoType

SQLPOINTER

InfoValuePtr

salida (tambin entrada)

SQLSMALLINT * StrLen_or_IndPtr

266

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Uso Consulte en la seccin Informacin que devuelve SQLGetInfo una lista de los valores posibles de InfoType y una descripcin de la informacin que SQLGetInfo() devuelve para dicho valor. DB2 CLI devuelve un valor para cada InfoType de esta tabla. Si no se aplica el InfoType o no est soportado, el resultado depender del tipo de retorno: v Si el tipo de retorno es una serie de caracteres que contiene Y o N, se devuelve N. v Si el tipo de retorno es una serie de caracteres que contiene un valor que no es simplemente Y o N, se devuelve una serie vaca. v Si el tipo de retorno es un entero de 16 bits, se devuelve 0 (cero). v Si el tipo de retorno es un entero de 32 bits, se devuelve 0 (cero). v Si el tipo de retorno es una mscara de 32 bits, se devuelve 0 (cero). Informacin que devuelve SQLGetInfo SQL_DBMS_NAME (serie) El nombre del producto DBMS al que se est accediendo. Por ejemplo: DB2 Everyplace. SQL_DBMS_VER (serie) La versin del producto DBMS de DB2 Everyplace. La informacin devuelta es una serie con el formato siguiente: DB2 Everyplace Vm.v.r Build aaaa-mm-dd, donde m es la versin mayor, v es la versin menor, r es el release y aaaa-mm-dd es la fecha de creacin expresada en formato ISO. Por ejemplo:
DB2 Everyplace V8.1.2 Build 2003-04-01 es DB2 Everyplace Versin 8.1.2 creado el 1 de Abril de 2003

Nota: Las aplicaciones necesitan un almacenamiento intermedio que pueda contener como mnimo 39 caracteres (BUFSIZE). Por ejemplo:
rc = SQLGetInfo(hdbc, SQL_DBMS_VER, buf, BUFSIZE, &len);

SQL_DEFAULT_TXN_ISOLATION (mscara de 32 bits) Es el nivel de aislamiento de transaccin soportado. Se devuelve una de las mscaras siguientes: v SQL_TXN_SERIALIZABLE = Los datos afectados por una transaccin pendiente no estn disponibles para otras transacciones (la lectura repetible y las lecturas fantasma no son posibles). Es equivalente al nivel de Lectura repetible de IBM. v SQL_TXN_REPEATABLE_READ = Una transaccin puede aadir o eliminar filas que coincidan con la condicin de bsqueda o con una transaccin pendiente (lectura repetible, pero las lecturas fantasma son posibles). Es equivalente al nivel de Estabilidad de lectura de IBM. v SQL_TXN_READ_COMMITTED = La transaccin 2 puede modificar y confirmar la fila leda por la transaccin 1 (la lectura no repetible y las lecturas fantasmas son posibles). Es equivalente a nivel de estabilidad del cursor de IBM. v SQL_TXN_READ_UNCOMMITTED = Todas las transacciones perciben inmediatamente los cambios (son posibles la lectura sucia, la lectura no repetible y las lecturas fantasma). Es equivalente al nivel de Lectura no confirmada de IBM.
Consulta

267

SQL_IDENTIFIER_QUOTE_CHAR (serie) Indica el carcter utilizado para rodear un identificador delimitado. SQL_MAX_BINARY_LITERAL_LEN (entero de 32 bits sin signo) Valor entero de 32 bits sin signo que especifica la longitud mxima de un literal hexadecimal en una sentencia SQL. SQL_MAX_CHAR_LITERAL_LEN (entero de 32 bits sin signo) La longitud mxima de un literal de carcter en una sentencia SQL (en bytes). SQL_MAX_COLUMN_NAME_LEN (entero de 16 bits) La longitud mxima de un nombre de columna (en bytes). SQL_MAX_COLUMNS_IN_GROUP_BY (entero de 16 bits) Indica el nmero mximo de columnas al que da soporte un servidor en una clusula GROUP BY. Cero si no hay lmite. SQL_MAX_COLUMNS_IN_INDEX (entero de 16 bits) Indica el nmero mximo de columnas al que da soporte el servidor en un ndice. Cero si no hay lmite. SQL_MAX_COLUMNS_IN_ORDER_BY (entero de 16 bits) Indica el nmero mximo de columnas al que da soporte el servidor en una clusula ORDER BY. Cero si no hay lmite. SQL_MAX_COLUMNS_IN_SELECT (entero de 16 bits) Indica el nmero mximo de columnas al que da soporte el servidor en una clusula de seleccin. Cero si no hay lmite. SQL_MAX_CONCURRENT_ACTIVITIES (entero de 16 bits) El nmero mximo de entornos activos al que puede dar soporte el controlador de DB2 Everyplace CLI. Si no hay un lmite especificado o el lmite es desconocido, este valor se establece en cero. SQL_MAX_DRIVER_CONNECTIONS (entero de 16 bits) El nmero mximo de conexiones activas soportadas por aplicacin. SQL_MAX_INDEX_SIZE (entero de 32 bits sin signo) Indica el tamao mximo en bytes al que da soporte el servidor para las columnas combinadas en un ndice. Cero si no hay lmite. SQL_MAX_ROW_SIZE (entero de 32 bits sin signo) Especifica la longitud mxima en bytes al que da soporte el servidor en una nica fila de una tabla base. Cero si no hay lmite. SQL_MAX_STATEMENT_LEN (entero de 32 bits sin signo) Indica la longitud mxima de una serie de sentencia SQL en bytes, incluyendo el nmero de espacios en blanco de la sentencia. SQL_MAX_TABLE_NAME_LEN (entero de 16 bits) La longitud mxima de un nombre de tabla (en bytes). SQL_MAX_TABLES_IN_SELECT (entero de 16 bits) Indica el nmero mximo de nombres de tabla que se permiten en una clusula FROM de una especificacin de consulta. SQL_MAX_USER_NAME_LEN (entero de 16 bits) Indica el tamao mximo que se permite para un identificador de usuario (en bytes).

268

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

SQL_SEARCH_PATTERN_ESCAPE (serie) Se utiliza para especificar lo que el controlador soporta como carcter de escape para las funciones de catlogo, como por ejemplo (SQLTables(), SQLColumns()). SQL_TXN_CAPABLE (entero de 16 bits) Indica si las transacciones puede contener DDL o DML o ambos. v SQL_TC_NONE = transacciones no soportadas. v SQL_TC_DML = las transacciones slo pueden contener sentencias DML (SELECT, INSERT, UPDATE, DELETE, etc.) Las sentencias DDL (CREATE TABLE, DROP INDEX, etc.) que se encuentren en una transaccin ocasionarn un error. v SQL_TC_DDL_COMMIT = las transacciones slo pueden contener sentencias DML. Las sentencias DDL que se encuentren en una transaccin harn que la transaccin se confirme. v SQL_TC_DDL_IGNORE = las transacciones slo pueden contener sentencias DML. Las sentencias DDL que se encuentren en una transaccin se ignorarn. v SQL_TC_ALL = las transacciones pueden contener sentencias DDL y DML en cualquier orden. SQL_TXN_ISOLATION_OPTION (mscara de 32 bits) Niveles de aislamiento de transaccin disponibles en el servidor de bases de datos conectado actualmente. Las siguientes mscaras se utilizan junto con el distintivo para determinar qu opciones estn soportadas: v SQL_TXN_SERIALIZABLE = Los datos afectados por una transaccin pendiente no estn disponibles para otras transacciones (la lectura repetible y las lecturas fantasma no son posibles). Es equivalente al nivel de Lectura repetible de IBM. v SQL_TXN_REPEATABLE_READ = Una transaccin puede aadir o eliminar filas que coincidan con la condicin de bsqueda o con una transaccin pendiente (lectura repetible, pero las lecturas fantasma son posibles). Es equivalente al nivel de Estabilidad de lectura de IBM. v SQL_TXN_READ_COMMITTED = La transaccin 2 puede modificar y confirmar la fila leda por la transaccin 1 (la lectura no repetible y las lecturas fantasmas son posibles). Es equivalente a nivel de estabilidad del cursor de IBM. v SQL_TXN_READ_UNCOMMITTED = Todas las transacciones perciben inmediatamente los cambios (son posibles la lectura sucia, la lectura no repetible y las lecturas fantasma). Es equivalente al nivel de Lectura no confirmada de IBM. SQL_USER_NAME (serie) El nombre de usuario utilizado en una base de datos concreta. Este es el identificador especificado en la llamada SQLConnect(). Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE

Consulta

269

Restricciones Ninguna.

SQLGetStmtAttrObtener el valor actual de un atributo de sentencia


Finalidad
Especificacin: DB2 CLI 5.0 ODBC 3.0 ISO CLI

SQLGetStmtAttr() devuelve el valor actual de un atributo de una sentencia. Sintaxis


SQLRETURN SQLGetStmtAttr SQLHSTMT SQLINTEGER SQLPOINTER SQLINTEGER SQLINTEGER ( StatementHandle, Attribute, ValuePtr, BufferLength, *StringLengthPtr);

Argumentos de la funcin
Tabla 107. Argumentos de SQLGetStmtAttr Tipo de datos SQLHSTMT SQLINTEGER SQLPOINTER Argumento StatementHandle Attribute ValuePtr Uso entrada entrada salida Descripcin Descriptor de contexto de sentencia. Atributo que se debe recuperar. Puntero a un almacenamiento intermedio en el que devolver el valor del atributo especificado en Attribute.

270

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 107. Argumentos de SQLGetStmtAttr (continuacin) Tipo de datos SQLINTEGER Argumento BufferLength Uso entrada Descripcin Si Attribute es un atributo definido por ODBC y ValuePtr apunta a una serie de caracteres o almacenamiento intermedio binario, este argumento debe ser igual a la longitud de *ValuePtr. Si Attribute es un atributo definido por ODBC y *ValuePtr es un entero, se ignora BufferLength. Si Attribute es un atributo de la DB2 de DB2, la aplicacin indica la naturaleza del atributo estableciendo el argumento BufferLength. BufferLength puede tener los valores siguientes: v Si *ValuePtr es un puntero a una serie de caracteres, BufferLength es la longitud de la serie o SQL_NTS. v Si *ValuePtr es un puntero a un almacenamiento intermedio binario, la aplicacin coloca el resultado de la macro SQL_LEN_BINARY_ATTR(longitud) en BufferLength. v Si *ValuePtr es un puntero a un valor distinto de una serie de caracteres o serie binaria, BufferLength debe tener el valor SQL_IS_POINTER. v Si *ValuePtr contiene un tipo de datos de longitud fija, BufferLength es SQL_IS_INTEGER o SQL_IS_UINTEGER, segn corresponda. SQLSMALLINT *StringLengthPtr salida Puntero a un almacenamiento intermedio en el que se devolver el nmero total de bytes (excluyendo el carcter de terminacin en nulo) disponibles para devolverlos en *ValuePtr. Si se trata de un puntero nulo, no se devuelve ninguna longitud. Si el valor del atributo es una serie de caracteres, y si el nmero de bytes que se puede devolver es superior o igual a BufferLength, los datos de *ValuePtr se truncarn hasta BufferLength menos la longitud de un carcter de terminacin en nulo, y DB2 CLI los terminar en nulo.

Uso Una llamada a SQLGetStmtAttr() devuelve en *ValuePtr el valor del atributo de sentencia especificado en Attribute. En DB2 Everyplace, este valor es un valor de 32 bits y no se utilizan los argumentos BufferLength ni StringLengthPtr.

Consulta

271

SQLGetStmtAttr() puede recuperar los atributos de sentencia siguientes. Para ver una descripcin de los atributos, consulte SQLSetStmtAttrEstablecer opciones referentes a una sentencia en la pgina 284. v SQL_ATTR_CURSOR_SCROLLABLE (DB2 CLI/ODBC) v SQL_ATTR_CURSOR_SENSITIVITY (DB2 CLI/ODBC) v SQL_ATTR_CURSOR_TYPE (DB2 CLI/ODBC) v SQL_ATTR_ROW_ARRAY_SIZE (DB2 CLI/ODBC) v SQL_ATTR_ROW_BIND_TYPE (DB2 CLI/ODBC) v SQL_ATTR_ROW_NUMBER (DB2 CLI/ODBC) v SQL_ATTR_DELETE_MODE (DB2 Everyplace) v SQL_ATTR_DIRTYBIT_SET_MODE (DB2 Everyplace) v SQL_ATTR_READ_MODE (DB2 Everyplace) v SQL_ATTR_REORG_MODE (DB2 Everyplace) Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 108. SQLSTATE de SQLGetStmtAttr SQLSTATE Descripcin 01000 01004 Aviso. Datos truncados. Explicacin Mensaje informativo. (La funcin devuelve SQL_SUCCESS_WITH_INFO). Los datos devueltos en *ValuePtr se truncan hasta BufferLength menos la longitud de un carcter de terminacin en nulo. La longitud del valor de la serie no truncada se devuelve en StringLengthPtr. (La funcin devuelve SQL_SUCCESS_WITH_INFO). El argumento Attribute es SQL_ATTR_ROW_NUMBER y el cursor no est abierto, o el cursor est posicionado delante del comienzo del conjunto de resultados o detrs del final del mismo. Se ha producido un error para el que no existe ningn SQLSTATE especfico. El mensaje de error devuelto por SQLGetDiagRec() en el almacenamiento intermedio *MessageText describe el error y su causa. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin.

24000

Estado no vlido del cursor.

HY000

Error general.

HY001

Error de asignacin de memoria.

272

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 108. SQLSTATE de SQLGetStmtAttr (continuacin) SQLSTATE Descripcin HY010 Error de secuencia de funcin. Explicacin Se llama a una funcin de ejecucin asncrona para StatementHandle y se sigue ejecutando cuando se llama a esta funcin. Se llama a SQLExecute() o SQLExecDirect() para StatementHandle y se devuelve SQL_NEED_DATA. Se llama a esta funcin antes de que se enven datos para todos los parmetros o columnas de datos en ejecucin. HY013 HY090 Error inesperado de gestin de la memoria. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. Tipo de opcin fuera de rango. Posicin no vlida del cursor. Controlador no apropiado. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. El valor especificado para el argumento BufferLength es inferior a 0.

HY092 HY109

El valor especificado para el argumento Attribute no es vlido para esta versin de DB2 CLI. El argumento Attribute es SQL_ATTR_ROW_NUMBER y la fila se haba suprimido o no se haba podido recuperar. El valor especificado para el argumento Attribute es un atributo vlido de DB2 CLI para la versin de DB2 CLI, pero la fuente de datos no lo soporta.

HYC00

Restricciones Ninguna.

SQLNumResultColsObtener nmero de columnas de resultados


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0

SQLNumResultCols() devuelve el nmero de columnas del conjunto de resultados asociado al descriptor de sentencia de entrada. Se debe invocar SQLPrepare() o SQLExecDirect() antes de invocar esta funcin. Despus de llamar a esta funcin, puede llamar a SQLColAttribute() o una de las funciones de enlace de columnas. Sintaxis
SQLRETURN SQLNumResultCols (SQLHSTMT SQLSMALLINT FAR StatementHandle, /* hstmt */ *ColumnCountPtr); /* pccol */

Argumentos de la funcin
Tabla 109. Argumentos de SQLNumResultCols Tipo de datos SQLHSTMT Argumento StatementHandle Uso entrada Descripcin Descriptor de contexto de sentencia.
Consulta

273

Tabla 109. Argumentos de SQLNumResultCols (continuacin) Tipo de datos SQLSMALLINT * Argumento ColumnCountPtr Uso salida Descripcin Nmero de columnas del conjunto de resultados.

Uso Esta funcin establece en 0 el argumento de salida si la ltima sentencia o funcin ejecutada para el descriptor de sentencia de entrada no gener un conjunto de resultados. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 110. SQLSTATE de SQLNumResultCols SQLSTATE 40003 08S01 Descripcin Error en el enlace de comunicaciones. Error inesperado del sistema. Error de asignacin de memoria. Error de secuencia de funcin. Explicacin El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. Error no recuperable del sistema. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Se llama a la funcin antes de llamar a SQLPrepare() o SQLExecDirect() para el descriptor de contexto de sentencia (StatementHandle).

58004 HY001 HY010

HY013

Error inesperado de DB2 CLI no puede acceder a la memoria gestin de la memoria. necesaria para ejecutar o finalizar la funcin.

Restricciones Ninguna.

SQLPreparePreparar una sentencia


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI

SQLPrepare() asocia una sentencia de SQL con el descriptor de sentencia de entrada y enva la sentencia al DBMS para que se prepare. La aplicacin puede hacer referencia a esta sentencia preparada pasando el descriptor de sentencia a otras funciones. Si previamente se utiliza el descriptor de contexto de sentencia con una sentencia de consulta (o cualquier funcin que devuelva un conjunto de resultados), se debe

274

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

llamar a SQLFreeStmt() antes de llamar a SQLPrepare(). Sintaxis


SQLRETURN SQLPrepare (SQLHSTMT SQLCHAR SQLINTEGER FAR StatementHandle, *StatementText, TextLength); /* hstmt */ /* szSqlStr */ /* cbSqlStr */

Argumentos de la funcin
Tabla 111. Argumentos de SQLPrepare Tipo de datos SQLHSTMT SQLCHAR SQLINTEGER Argumento StatementHandle StatementText TextLength Uso entrada entrada entrada Descripcin Descriptor de contexto de sentencia. Serie de la sentencia de SQL Longitud del contenido del argumento StatementText. Se debe establecer en la longitud exacta de la sentencia de SQL contenida en szSqlstr, o en SQL_NTS si el texto de la sentencia termina en nulo.

Uso Despus de preparar una sentencia utilizando SQLPrepare(), la aplicacin puede solicitar informacin sobre el formato del conjunto de resultados (si la sentencia es una consulta), llamando a una de estas funciones: v SQLNumResultCols() v SQLDescribeCol() La serie de la sentencia de SQL puede contener marcadores de parmetros. Un marcador de parmetro se representa mediante un smbolo ? y se utiliza para indicar una posicin en la sentencia donde se colocar un valor proporcionado por la aplicacin cuando se llame a SQLExecute(). La funcin de enlace de parmetros, SQLBindParameter(), enlaza (asocia) valores de la aplicacin con cada marcador de parmetro e indica si se debe realizar alguna conversin de datos al transferir los datos. Se deben enlazar todos los parmetros antes de invocar SQLExecute(). Si desea obtener ms informacin, consulte el apartado SQLExecuteEjecutar una sentencia en la pgina 238. Consulte la seccin sobre la sentencia PREPARE del manual Consulta de SQL de DB2 Universal Database para obtener informacin sobre reglas referentes a marcadores de parmetros. Despus de procesar los resultados de la llamada a SQLExecute(), la aplicacin puede ejecutar de nuevo la sentencia con valores de parmetros nuevos (o los mismos). Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR
Consulta

275

v SQL_INVALID_HANDLE Diagnsticos
Tabla 112. SQLSTATE de SQLPrepare SQLSTATE Descripcin 42nnn Error de sintaxis. Explicacin Los SQLSTATE 42nnn indican que hay varios problemas de sintaxis o de acceso en la sentencia. Los caracteres nnn representan cualquier SQLSTATE con ese cdigo de clase. Ejemplo: 42nnn representa cualquier SQLSTATE perteneciente a la clase 42. Error no recuperable del sistema. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. StatementText es un puntero nulo. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar un descriptor de contexto debido a los recursos internos. El argumento TextLength es inferior a uno pero no igual a SQL_NTS.

58004 HY001 HY009 HY013 HY014 HY090

Error inesperado del sistema. Error de asignacin de memoria. Valor no vlido de argumento. Error inesperado de gestin de la memoria. No hay ms descriptores de contexto. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio.

Restricciones Ninguna.

SQLPrimaryKeysObtener columnas de clave primaria de una tabla


Finalidad
Especificacin: DB2 CLI 2.1 ODBC 1.0

SQLPrimaryKeys() devuelve una lista de nombres de columna que abarcan la clave primaria de una tabla. La informacin se devuelve en un conjunto de resultados de SQL, que se puede recuperar utilizando las mismas funciones que se utilizan para procesar un conjunto de resultados generado por una consulta. No se tienen en cuenta los parmetros CatalogName, NameLength1, SchemaName y NameLength2. Las columnas 1, 2 y 6 del conjunto de resultados devuelto son siempre una serie de longitud cero. Sintaxis
SQLRETURN SQLPrimaryKeys ( SQLHSTMT StatementHandle, /* hstmt */ SQLCHAR FAR *CatalogName, /* szCatalogName */ SQLSMALLINT NameLength1, /* cbCatalogName */ SQLCHAR FAR *SchemaName, /* szSchemaName */ SQLSMALLINT NameLength2, /* cbSchemaName */ SQLCHAR FAR *TableName, /* szTableName */ SQLSMALLINT NameLength3); /* cbTableName */

276

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Argumentos de la funcin
Tabla 113. Argumentos de SQLPrimaryKeys Tipo de datos SQLHSTMT SQLCHAR* Argumento StatementHandle CatalogName Uso entrada entrada Descripcin Descriptor de contexto de sentencia. Calificador de catlogo de un nombre de tabla que consta de tres partes. DB2 Everyplace pasa por alto este campo. SQLSMALLINT SQLCHAR* SQLSMALLINT SQLCHAR* SQLSMALLINT NameLength1 SchemaName NameLength2 TableName NameLength3 entrada entrada entrada entrada entrada Longitud de CatalogName. DB2 Everyplace pasa por alto este campo. Calificador de esquema del nombre de tabla. DB2 Everyplace pasa por alto este campo. Longitud de SchemaName. DB2 Everyplace pasa por alto este campo. Nombre de tabla. Longitud de TableName.

Uso SQLPrimaryKeys() devuelve las columnas de clave primaria de una tabla individual. No se pueden utilizar patrones de bsqueda para especificar el nombre de tabla. Si la tabla especificada no contiene una clave primaria, se devuelve un conjunto de resultados vaco. Las llamadas a SQLPrimaryKeys() se correlacionan, en muchos casos, formando consultas complejas y caras sobre el catlogo del sistema. Aunque en futuros releases se pueden aadir nuevas columnas y modificarse los nombres de las columnas existentes, la posicin de las columnas actuales no cambia. El conjunto de resultados contiene esta columnas ordenadas por TABLE_NAME y ORDINAL_POSITION Columna 1 TABLE_CAT (VARCHAR(128)) Siempre es una serie de longitud cero. Columna 2 TABLE_SCHEM (VARCHAR(128)) Siempre es una serie de longitud cero. Columna 3 TABLE_NAME (VARCHAR(128) no NULL) Nombre de la tabla especificada. Columna 4 COLUMN_NAME (VARCHAR(128) no NULL) Nombre de la columna de clave primaria. Columna 5 ORDINAL_POSITION (SMALLINT no NULL) Nmero de secuencia de columna en la clave primaria, comenzando en el uno. Columna 6 PK_NAME (VARCHAR(128)) Siempre es una serie de longitud cero.

Consulta

277

Los nombres de columna que DB2 CLI/ODBC utiliza siguen el estilo de especificacin de X/Open para CLI CAE. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 114. SQLSTATE de SQLPrimaryKey SQLSTATE 24000 40003 08S01 Descripcin Estado no vlido del cursor. Error en el enlace de comunicaciones. Error de asignacin de memoria. Error de secuencia de funcin. No hay ms descriptores de contexto. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. Explicacin Ya hay un cursor abierto para el descriptor de contexto de sentencia. El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Se llama a la funcin mientras se produce una operacin de datos en ejecucin (SQLPrepare() o SQLExecDirect()). DB2 CLI no puede asignar un descriptor de contexto debido a los recursos internos. El valor de uno de los argumentos de longitud de nombre es inferior a 0, pero no igual a SQL_NTS.

HY001 HY010

HY014

HY090

Restricciones Utilice las llamadas a SQLPrimaryKeys() con moderacin y guarde los resultados en lugar de repetir llamadas.

SQLRowCountObtener nmero de filas


Finalidad
Especificacin: DB2 CLI 1.1 ODBC 1.0 ISO CLI

SQLRowCount() devuelve el nmero de filas de una tabla que se han visto afectadas por una sentencia UPDATE, INSERT, DELETE o SELECT con cursor desplazable ejecutada sobre la tabla. Se debe invocar SQLExecute() o SQLExecDirect() antes de invocar esta funcin. Sintaxis
SQLRETURN SQLRowCount (SQLHSTMT SQLINTEGER FAR StatementHandle, *RowCountPtr); /* hstmt */ /* pcrow */

278

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Argumentos de la funcin
Tabla 115. Argumentos de SQLRowCount Tipo de datos SQLHSTMT SQLINTEGER Argumento StatementHandle RowCountPtr Uso entrada salida Descripcin Descriptor de contexto de sentencia. Puntero que apunta al lugar donde se almacena el nmero de filas afectadas por la sentencia.

Uso Si la ltima sentencia ejecutada a la que hace referencia el descriptor de contexto de sentencia de entrada no es una sentencia UPDATE, INSERT ni DELETE, o si la sentencia no se ejecut satisfactoriamente, la funcin establece el contenido de RowCountPtr en -1. El contaje no incluye las filas de otras tablas que pueden haber sido afectadas por la sentencia. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 116. SQLSTATE de SQLRowCount SQLSTATE 40003 08S01 58004 HY001 Descripcin Error en el enlace de comunicaciones. Error inesperado del sistema. Error de asignacin de memoria. Explicacin El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. Error no recuperable del sistema. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Es probable que la memoria a nivel de proceso se haya agotado para el proceso de la aplicacin. Consulte la configuracin del sistema operativo para obtener ms informacin sobre las limitaciones de memoria a nivel de proceso. Se llama a la funcin antes de llamar a SQLExecute() o SQLExecDirect() para el descriptor de contexto de sentencia (StatementHandle). DB2 CLI no ha podido acceder a la memoria necesaria para ejecutar o finalizar la funcin.

HY010

Error de secuencia de funcin.

HY013

Error inesperado de gestin de la memoria.

Restricciones Ninguna.

Consulta

279

SQLSetConnectAttrEstablecer opciones referentes a una conexin


Finalidad
Especificacin: DB2 CLI ODBC 1.0 ISO CLI

SQLSetConnectAttr() establece opciones relacionadas con una conexin Sintaxis


SQLRETURN SQLSetConnectAttr (SQLHDBC SQLINTEGER SQLPOINTER SQLINTEGER ConnectionHandle, Attribute, ValuePtr, StringLength);

Argumentos de la funcin
Tabla 117. Argumentos de SQLSetConnectAttr Tipo de datos SQLHDBC SQLINTEGER SQLPOINTER Argumento ConnectionHandle Attribute ValuePtr Uso entrada entrada entrada Descripcin Descriptor de contexto de conexin. Opcin para definir. Si Attribute es un atributo definido por ODBC y ValuePtr apunta a una serie de caracteres o almacenamiento intermedio binario, este argumento debe ser igual a la longitud de ValuePtr. Si Attribute es un atributo definido por ODBC y ValuePtr es un entero, no se tiene en cuenta StringLength. Si Attribute es un atributo de la DB2 de DB2, la aplicacin indica la naturaleza del atributo estableciendo el argumento StringLength. StringLength puede tener los valores siguientes: v Si ValuePtr es un puntero que apunta a una serie de caracteres, StringLength es la longitud de la serie o SQL_NTS. v Si ValuePtr es un puntero que apunta a un almacenamiento intermedio binario, la aplicacin coloca el resultado de la macro SQL_LEN_BINARY_ATTR(length) en StringLength. Esto coloca un valor negativo en StringLength. v Si ValuePtr es un puntero que apunta a un valor distinto de una serie de caracteres o serie binaria, el valor de StringLength debe ser SQL_IS_POINTER. v Si ValuePtr contiene un valor de longitud fija, StringLength es SQL_IS_INTEGER o SQL_IS_UINTEGER, segn corresponda.

280

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 117. Argumentos de SQLSetConnectAttr (continuacin) Tipo de datos SQLINTEGER Argumento StringLength Uso entrada Descripcin Si ValuePtr apunta a una serie de caracteres o almacenamiento intermedio binario, este argumento debe ser igual a la longitud de ValuePtr. Si ValuePtr es un puntero, pero no apunta a una serie de caracteres ni a un almacenamiento intermedio binario, StringLength debe tener el valor SQL_IS_POINTER. Si ValuePtr no es un puntero, el valor de StringLength debe ser SQL_IS_NOT_POINTER.

Uso Los atributos de una conexin permanecen vigentes hasta que son modificados por otra llamada a SQLSetConnectAttr() o hasta que la conexin se descarta mediante una llamada a SQLDisconnect(). SQLSetConnectAttr() acepta informacin sobre atributos en uno de dos formatos diferentes: una serie de caracteres terminada en nulo o un valor entero de 32 bits. El formato del atributo est indicado en la descripcin del atributo. Las series de caracteres a las que apunta el argumento ValuePtr de SQLSetConnectAttr() tienen una longitud igual a StringLength. Atributos de conexin A continuacin se muestran los atributos definidos actualmente. SQL_ATTR_AUTOCOMMIT (DB2 CLI/ODBC) Valor entero de 32 bits que especifica el tipo de modalidad. Los valores soportados son: v SQL_AUTOCOMMIT_ON = Cada sentencia se confirma automticamente. Es el valor por omisin. En la modalidad de confirmacin automtica, todas las actualizaciones hechas por una sentencia pasan automticamente a ser permanentes una vez ejecutada la sentencia. La modalidad de confirmacin automtica es el comportamiento por omisin. Por omisin, no est habilitado el soporte de transacciones, y adems, no se garantiza la atomicidad en el mbito de sentencia. Por ejemplo, la siguiente sentencia UPDATE puede fallar durante el proceso y puede que slo se actualice un subconjunto de filas:
UPDATE T SET A = A + 1

Pueden haber varias razones por las que fallen las operaciones update/delete/insert. Por ejemplo, puede violarse una restriccin de comprobacin durante una actualizacin. Como consecuencia, puede haberse actualizado adecuadamente una parte de la tabla, mientras que el resto no, y los cambios no se pueden retrotraer. v SQL_AUTOCOMMIT_OFF = La aplicacin debe manual y explcitamente comprometer o retrotraer una transaccin. El compromiso o la retrotraccin de una transaccin se lleva a cabo invocando

Consulta

281

SQLEndTran(). Para obtener ms informacin sobre la utilizacin de SQLEndTran(), consulte SQLEndTranSolicitar COMMIT o ROLLBACK en la pgina 235. En la modalidad de confirmacin manual, las transacciones se inician implcitamente con el primer acceso a la base de datos utilizando SQLPrepare() y SQLExecDirect(). En este momento ya ha comenzado una transaccin, aunque haya fallado la llamada. La transaccin termina cuando se utiliza SQLEndTran() para retrotraer (ROLLBACK) o confirmar (COMMIT) la transaccin. En la modalidad de confirmacin manual, las transacciones pueden emitir cualquier sentencia SQL, incluyendo DDL y DML (por ejemplo, las sentencias CREATE TABLE o UPDATE) SQL_ATTR_CONNECTION_DEAD (DB2 CLI/ODBC) Un valor entero de 32 bits READ ONLY que indica si la conexin est o no est an activa. DB2 CLI devolver uno de los valores siguientes: v SQL_CD_FALSE - la conexin sigue estando activa. v SQL_CD_TRUE - la conexin est inactiva. SQL_ATTR_DATABASE_ACCESS (DB2 Everyplace) Valor entero de 32 bits que define la modalidad de acceso a la base de datos. Los valores soportados son: v SQL_DB_EXCLUSIVE - Una fuente de datos DB2 Everyplace slo acepta una conexin a la vez. Es el valor por omisin. v SQL_DB_SHARED - Una fuente de datos DB2 Everyplace acepta varias conexiones de un proceso a la vez. SQL_ATTR_FILENAME_FORMAT (DB2 Everyplace) Un entero de 32 bits especifica si el motor de bases de datos DB2e debe crear nombres de archivo en formato largo o de 8.3. Las aplicaciones slo tienen permitido cambiar el formato de nombres de archivo si no existe ningn archivo de catlogo en la va de acceso conectada cuando se invoca a SQLSetConnectAttr. Se devolver SQL_ERROR con SQLState HY000 si se deniega un cambio del formato de nombres de archivo debido a que previamente existan archivos de catlogo. Por ejemplo, si una aplicacin conecta con una va de acceso en que ya existen archivos de catlogo de DB2 Everyplace , cualquier intento de cambiar el formato de nombres de archivo fallar. Si una aplicacin conecta con una va de acceso en que no existe ningn archivo de catlogo de DB2 Everyplace e intenta cambiar el formato de nombres de archivo despus de la primera sentencia CREATE TABLE, SQLSetConnectAttr tambin devolver SQL_ERROR. Esto es debido a que se crean archivos de catlogo durante la realmente primera sentencia CREATE TABLE, y no est permitido cambiar el formato de nombres de archivo despus de la creacin de archivos de catlogo. El formato de nombres de archivo por omisin depende de la plataforma. Actualmente, SQL_FILENAME_FORMAT_LONG es el valor por omisin para todas las plataformas soportadas. Valores de atributos:
SQL_FILENAME_FORMAT_LONG - los archivos se crearn en formato de nombre de archivo largo. SQL_FILENAME_FORMAT_83- los archivos se crearn en formato de nombre de archivo 8.3.

SQL_ATTR_IO_MODE (DB2 Everyplace) Los vaciados de E/S que actualizan la base de datos se pasan al sistema operativo o se transfieren directamente al soporte de almacenamiento

282

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

despus de una confirmacin (COMMIT) (en modalidad de confirmacin manual) o despus de la finalizacin de la sentencia de SQL (en modalidad de confirmacin automtica). Un atributo cambia este comportamiento slo en Windows y Linux en x86. v SQL_IO_BUFFERED = Los cambios se envan al sistema operativo. Puede recuperar datos si una aplicacin se detiene de modo imprevisto, pero es posible que no pueda recuperar datos si el sistema operativo se detiene. Las aplicaciones que utilicen esta modalidad (la modalidad por omisin) tendrn un rendimiento considerablemente ms rpido. v SQL_IO_WRITETHROUGH = Los cambios se envan directamente al soporte de almacenamiento. Puede recuperar los datos si la aplicacin o el sistema operativo se detienen de modo imprevisto. Esta modalidad aumenta la fiabilidad pero reduce el rendimiento. Utilice esta modalidad cuando la integridad de los datos sea importante o si le preocupan los fallos de hardware o del sistema operativo. SQL_ATTR_LOCK_TIMEOUT (DB2 Everyplace) Valor entero de 32 bits que corresponde al nmero de segundos que se deber esperar a que se libere un bloqueo. El valor por omisin es de 20 segundos. SQL_ATTR_LOGIN_TIMEOUT (DB2 CLI/ODBC) Valor entero de 32 bits que corresponde al nmero de segundos que se deber esperar a que finalice una peticin de inicio de sesin antes de devolver el control a la aplicacin. SQL_ATTR_LOGIN_TXN_ISOLATION (DB2 CLI/ODBC) Mscara de 32 bits que establece el nivel de aislamiento de transaccin para la conexin actual a la que ConnectionHandle hace referencia. DB2 CLI acepta los valores siguientes: v SQL_TXN_READ_UNCOMMITTED - Son posibles las lecturas sucias, las lecturas no repetibles y las lecturas fantasma. v SQL_TXN_READ_COMMITTED - Las lecturas sucias no son posibles. Las lecturas no repetibles y las lecturas fantasma son posibles. Es el valor por omisin. v SQL_TXN_REPEATABLE_READ - Las lecturas sucias y las lecturas que no se pueden repetir no son posibles. Las lecturas fantasma son posibles. v SQL_TXN_SERIALIZABLE - Las transacciones se pueden serializar. Las lecturas sucias, las lecturas no repetibles y las lecturas fantasma no son posibles. v En terminologa de IBM: v v v v SQL_TXN_READ_UNCOMMITTED es Lectura no confirmada SQL_TXN_READ_COMMITTED es Estabilidad de cursor SQL_TXN_REPEATABLE_READ es Estabilidad de lectura SQL_TXN_SERIALIZABLE es Lectura repetible.

Esta opcin no se puede especificar mientras haya un cursor abierto en cualquier descriptor de contexto de sentencia o una transaccin pendiente para esta conexin. En esta situacin, se devuelve un SQL_ERROR sobre la llamada a la funcin (SQLSTATE HY011). Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO
Consulta

283

v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos


Tabla 118. SQLSTATE de SQLSetConnectAttr SQLSTATE HY000 HY001 HY011 Descripcin Error general. Error de asignacin de memoria. Explicacin El formato de nombres de archivo no se puede cambiar. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin.

Operacin no vlida en El atributo del argumento era este momento SQL_ATTR_TXN_ISOLATION y haba una transaccin o un cursor abierto. No hay ms descriptores de contexto. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. DB2 CLI no pudo asignar un descriptor debido a los recursos internos. El valor de uno de los argumentos de longitud de nombre era inferior a 0, pero no era igual a SQL_NTS.

HY014

HY090

Restricciones v Se han aadido transacciones a DB2 Everyplace para permitir una actualizacin e insercin coherentes de varios registros asociados en varias tablas. Los cambios se escriben en las tablas de datos una vez que la aplicacin confirme la transaccin. Vase tambin SQL_ATTR_IO_MODE, que define si las actualizaciones de la base de datos se pasan al sistema operativo o se transfieren directamente al soporte de almacenamiento. v Si la aplicacin se detiene prematuramente sin confirmar la transaccin actual, las actualizaciones contenidas en esa transaccin se retrotraen automticamente. v Una vez que la funcin SQLEndTran vuelve, la transaccin se confirma o se retrotrae. v Cuando una aplicacin conecta con una base de datos y sta termina prematuramente (durante una transaccin activa), la transaccin se recupera. La base de datos recupera transacciones utilizando la lgica siguiente: Si la transaccin no ha finalizado, la base de datos no se actualiza. Si la transaccin ha finalizado, la base de datos s que se actualiza con la informacin proporcionada por la transaccin. Si la recuperacin se interrumpe, se realiza la accin apropiada en la prxima conexin.

SQLSetStmtAttrEstablecer opciones referentes a una sentencia


Finalidad
Especificacin: DB2 CLI 2.1 ODBC 1.0 ISO CLI

SQLSetStmtAttr() define atributos relacionados con una sentencia.

284

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Sintaxis
SQLRETURN SQLSetStmtAttr (SQLHSTMT SQLINTEGER SQLPOINTER SQLINTEGER StatementHandle, Attribute, ValuePtr, StringLength);

Argumentos de la funcin
Tabla 119. Argumentos de SQLSetStmtAttr Tipo de datos SQLHSTMT SQLINTEGER SQLPOINTER Argumento StatementHandle Attribute ValuePtr Uso entrada entrada entrada Descripcin Descriptor de contexto de sentencia. Opcin para definir. Si Attribute es un atributo definido por ODBC y ValuePtr apunta a una serie de caracteres o almacenamiento intermedio binario, este argumento debe ser igual a la longitud de *ValuePtr. Si Attribute es un atributo definido por ODBC y ValuePtr es un entero, no se tiene en cuenta StringLength. Si Attribute es un atributo de la DB2 de DB2, la aplicacin indica la naturaleza del atributo estableciendo el argumento StringLength. StringLength puede tener los valores siguientes: v Si ValuePtr es un puntero que apunta a una serie de caracteres, StringLength es la longitud de la serie o SQL_NTS. v Si ValuePtr es un puntero que apunta a un almacenamiento intermedio binario, la aplicacin coloca el resultado de la macro SQL_LEN_BINARY_ATTR(length) en StringLength. Esto coloca un valor negativo en StringLength. v Si ValuePtr es un puntero que apunta a un valor distinto de una serie de caracteres o serie binaria, el valor de StringLength debe ser SQL_IS_POINTER. v Si ValuePtr contiene un valor de longitud fija, StringLength es SQL_IS_INTEGER o SQL_IS_UINTEGER. SQLINTEGER StringLength entrada Si ValuePtr apunta a una serie de caracteres o almacenamiento intermedio binario, este argumento debe ser igual a la longitud de ValuePtr. Si ValuePtr es un puntero pero no apunta a una serie de caracteres o almacenamiento intermedio binario, StringLength debe tener el valor SQL_IS_POINTER. Si ValuePtr no es un puntero, StringLength debe ser SQL_IS_NOT_POINTER.

Consulta

285

Uso Los atributos de una sentencia permanecen vigentes hasta que son modificados por otra llamada a SQLSetStmtAttr() o hasta que la sentencia se descarta mediante una llamada a SQLFreeHandle(). Invocar SQLFreeStmt() con las opciones SQL_CLOSE, SQL_UNBIND o SQL_RESET_PARAMS no restaura los atributos de una sentencia. Algunos atributos de sentencia dan soporte a la sustitucin de un valor similar si la fuente de datos no da soporte al valor especificado en ValuePtr. En tales casos, DB2 CLI devuelve SQL_SUCCESS_WITH_INFO y SQLSTATE 01S02 (Valor de opcin cambiado). Por ejemplo, si Attribute es SQL_ATTR_CONCURRENCY, ValuePtr es SQL_CONCUR_ROWVER, y la fuente de datos no da soporte a este valor, DB2 sustituye SQL_CONCUR_VALUES y devuelve SQL_SUCCESS_WITH_INFO. Para determinar el valor sustituido, la aplicacin invoca SQLGetStmtAttr(). El formato de la informacin establecida con ValuePtr depende del valor especificado para Attribute. SQLSetStmtAttr() acepta informacin sobre atributos en uno de dos formatos diferentes: una serie de caracteres terminada en nulo o un valor entero de 32 bits. El formato del atributo est indicado en la descripcin del atributo. Este formato es aplicable a la informacin devuelta para cada atributo en SQLGetStmtAttr(). Las series de caracteres a las que apunta el argumento ValuePtr de SQLSetStmtAttr() tienen una longitud igual a StringLength. El bit de modificacin DB2 Everyplace utiliza el bit de modificacin para hacer un seguimiento de los cambios efectuados en un registro. El comportamiento del bit de modificacin est determinado por los atributos de sentencia SQL_ATTR_DELETE_MODE, SQL_ATTR_READ_MODE y SQL_ATTR_DIRTYBIT_SET_MODE. La tabla siguiente muestra los estados del bit de modificacin despus de que se realicen ciertas operaciones de base de datos en un registro. La tabla asume que el parmetro SQL_ATTR_DIRTYBIT_SET_MODE se establece en SQL_DIRTYBIT_SET_BY_SYSTEM con el bit de modificacin mantenido por el sistema.
Tabla 120. Estados de bit de modificacin de DB2 Everyplace Acciones en un registro Estado limpio (0) y a continuacin INSERTAR Estado limpio (0) y a continuacin SUPRIMIR Estado limpio (0) y a continuacin ACTUALIZAR SUPRIMIR y a continuacin INSERTAR SUPRIMIR y a continuacin SUPRIMIR SUPRIMIR y a continuacin ACTUALIZAR INSERTAR y a continuacin INSERTAR INSERTAR y a continuacin SUPRIMIR INSERTAR y a continuacin ACTUALIZAR ACTUALIZAR y a continuacin INSERTAR ACTUALIZAR y a continuacin SUPRIMIR ACTUALIZAR y a continuacin ACTUALIZAR Estado del bit de modificacin INSERT DELETE UPDATE UPDATE No aplicable No aplicable No aplicable Eliminacin fsica de registro INSERT No aplicable DELETE UPDATE

286

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

El valor del bit de modificacin se puede obtener realizando una consulta a la columna $dirty de una tabla. Por ejemplo, la sentencia siguiente devuelve el bit de modificacin y la columna NAME de la tabla PHONEBOOK:
SELECT $dirty, NAME from PHONEBOOK

El bit de modificacin puede tener los valores siguientes.


Tabla 121. Valores del bit de modificacin de DB2 Everyplace Descripcin Registro no cambiado (LIMPIO) Registro suprimido (SUPRIMIR) Registro insertado (INSERTAR) Registro actualizado (ACTUALIZAR) Valor del bit de modificacin 0 1 2 3

Atributos de sentencia A continuacin se muestran los atributos definidos actualmente. SQL_ATTR_CURSOR_SCROLLABLE (DB2 CLI) Entero de 32 bits que especifica el nivel de soporte que la aplicacin requiere. El establecimiento de este atributo afecta a llamadas posteriores a SQLExecDirect() y SQLExecute(). Los valores soportados son: v SQL_NONSCROLLABLE No se requieren cursores desplazables en el descriptor de contexto de sentencia. Si la aplicacin llama a SQLFetchScroll() en este descriptor de contexto, el nico valor vlido para FetchOrientation() es SQL_FETCH_NEXT. Es el valor por omisin. v SQL_SCROLLABLE Se requieren cursores desplazables en el descriptor de contexto de sentencia. Cuando se llama a SQLFetchScroll(), la aplicacin puede especificar cualquier valor vlido para FetchOrientation, por lo que el cursor se puede posicionar en modalidades distintas de la secuencial. SQL_ATTR_CURSOR_SENSITIVITY (DB2 CLI) Valor entero de 32 bits que especifica si un cursor es sensible a la actividad de grabacin de otro cursor. Los valores soportados son: v SQL_UNSPECIFIED La actividad de grabacin de otros cursores tiene un impacto indefinido sobre el cursor actual. Es el valor por omisin. v SQL_INSENSITIVE La actividad de grabacin de otros cursores no tiene ningn impacto sobre el cursor actual. Nota: Utilice este valor de atributo con moderacin porque puede afectar al rendimiento. SQL_ATTR_CURSOR_TYPE (DB2 CLI) Valor entero de 32 bits que especifica el tipo de cursor. Los valores soportados son: v SQL_CURSOR_FORWARD_ONLY = El cursor slo se desplaza hacia adelante. Es el valor por omisin. v SQL_CURSOR_STATIC = Los datos del conjunto de resultados son estticos.
Consulta

287

Esta opcin no se puede especificar para un cursor abierto. SQL_ATTR_ROW_ARRAY_SIZE (DB2 CLI) Valor entero de 32 bits que especifica el nmero de filas del conjunto de filas. Es el nmero de filas devueltas por cada llamada a SQLFetch() o SQLFetchScroll(). El valor por omisin es 1. Si el tamao de conjunto de filas especificado excede el tamao mximo de conjunto de filas soportado por la fuente de datos, DB2 CLI sustituye ese valor y devuelve SQLSTATE 01S02 (Valor de opcin cambiado). Esta opcin se puede especificar para un cursor abierto. SQL_ATTR_ROW_BIND_TYPE (DB2 CLI) Valor entero de 32 bits que define la orientacin del enlace que se debe utilizar cuando se invoca SQLFetch() o SQLFetchScroll() para la sentencia asociada. El enlace basado en columnas se selecciona proporcionando la constante definida SQL_BIND_BY_COLUMN en ValuePtr. La longitud especificada en ValuePtr debe incluir espacio para todas las columnas enlazadas y el espacio de relleno necesario de la estructura o almacenamiento intermedio para asegurar que, cuando la direccin de una columna enlazada se incremente con la longitud especificada, el resultado apuntar al comienzo de la misma columna en la fila siguiente. Cuando se utiliza el operador sizeof con estructuras o uniones en C de ANSI, este comportamiento est asegurado. El enlace basado en columnas es la orientacin predefinida del enlace para SQLFetchScroll(). SQL_ATTR_ROW_NUMBER (DB2 CLI) Valor entero de 32 bits que es el nmero de la fila actual en el conjunto de resultados entero. Si no se puede determinar el nmero de la fila actual o si no existe ninguna fila actual, DB2 CLI devuelve 0. Este atributo se puede recuperar mediante una llamada a SQLGetStmtAttr(), pero no se puede establecer mediante una llamada a SQLSetStmtAttr(). SQL_ATTR_ROW_STATUS_PTR (DB2 CLI) Valor entero de 16 bits, sin signo, que apunta a una matriz de valores UWORD que contiene valores de estado de filas despus de una llamada a SQLFetch() o SQLFetchScroll(). La matriz tiene tantos elementos como filas hay en el conjunto de filas. Este atributo de sentencia se puede definir como puntero nulo, en cuyo caso DB2 CLI no devuelve valores de estado para filas. Este atributo se puede definir en cualquier momento, pero el nuevo valor no se utiliza hasta la siguiente llamada a SQLFetch() o SQLFetchScroll(). SQL_ATTR_ROWS_FETCHED_PTR (DB2 CLI) Valor entero de 32 bits, sin signo, que apunta a un almacenamiento intermedio en el que devolver el nmero de filas recuperadas despus de una llamada a SQLFetch() o SQLFetchScroll(). SQL_ATTR_DELETE_MODE (DB2 Everyplace) Los valores soportados son: v SQL_DELETE_MARK_ONLY Este es el valor por omisin del sistema. Cuando se ejecute una sentencia de SQL de supresin, los registros slo estn sealados como delete (suprimir). Su contenido sigue pudindose leer en el caso de que se establezca SQL_READ_INCLUDE_MARKED_DELETE. v SQL_DELETE_PHYSICAL_REMOVE Una sentencia de supresin de SQL elimina fsicamente los registros que satisfacen la condicin de la clusula WHERE, sin tener en cuenta su bit de modificacin.

288

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Por ejemplo, utilice la sintaxis siguiente para eliminar fsicamente algunos registros pasando por alto el estado de los bits de modificacin:
SQLSetStmtAttr (stmt, SQL_ATTR_DELETE_MODE, SQL_DELETE_PHYSICAL_REMOVE, 0)

A continuacin, ejecute la sentencia de SQL siguiente para suprimir todos los registros de la tabla T donde X no sea igual a 0:
DELETE T WHERE X<>0

SQL_ATTR_DIRTYBIT_SET_MODE (DB2 Everyplace) Valor entero de 32 bits que especifica el tipo de cursor. Los valores soportados son: v SQL_DIRTYBIT_SET_BY_SYSTEM Este es el valor por omisin del sistema. Todo registro que se inserte, actualice o suprima tendr un bit de modificacin establecido, respectivamente, en INSERT, UPDATE o DELETE. No se permite ninguna operacin UPDATE sobre la columna $dirty cuando est establecido SQL_DIRTYBIT_SET_BY_SYSTEM. v SQL_DIRTYBIT_SET_BY_APPLICATION La aplicacin es responsable de establecer el bit de modificacin al insertar, actualizar o eliminar registros. La semntica de cada una de las operaciones es la siguiente: UPDATE El sistema establece el bit de modificacin exactamente como lo ha especificado la aplicacin. Por ejemplo, si una aplicacin ejecuta la sentencia siguiente, todos los registros de la tabla se restablecen en 0 (CLEAN):
UPDATE T SET $dirty=0 WHERE $dirty>0

INSERT El bit de modificacin del registro que recin insertado se establece en CLEAN. DELETE Si se establece SQL_DELETE_PHYSICAL_REMOVE, una operacin DELETE elimina fsicamente registros de la base de datos. De lo contrario, los valores de la columna $dirty se establecen en DELETE y los registros permanecen en la base de datos. Por ejemplo, para limpiar el bit de modificacin de un registro utilice la sentencia siguiente:
SQLSetStmtAttr (stmt, SQL_ATTR_DIRTYBIT_SET_MODE, SQL_DIRTYBIT_SET_BY_APPLICATION, 0)

A continuacin ejecute la sentencia de SQL siguiente:


UPDATE T SET $DIRTY=0 WHERE $DIRTY>0

En general, las aplicaciones pueden establecer SQL_DIRTYBIT_SET_BY_APPLICATION cuando los bits de modificacin no se necesitan para el seguimiento de las actualizaciones de bases de datos por parte de usuarios finales. SQL_ATTR_READ_MODE (DB2 Everyplace) Valor entero de 32 bits que especifica el tipo de cursor. Los valores soportados son:
Consulta

289

v SQL_READ_EXCLUDE_MARKED_DELETE Este es el valor por omisin del sistema. Todos los registros con bit de modificacin establecidos en delete (suprimir) se ocultan de SQL. v SQL_READ_INCLUDE_MARKED_DELETE Una vez establecidos, los registros con el bit de modificacin establecido en DELETE (suprimir) se pueden ver desde sentencias SELECT de SQL. Las aplicaciones pueden distinguir los registros suprimidos de otros registros buscando un registro en el bit de modificacin. Por ejemplo, utilice la sentencia siguiente para leer todos los registros que tengan el bit de modificacin establecido, incluyendo aquellos que tengan un bit de modificacin marcado como DELETE:
SQLSetStmtAttr (stmt, SQL_ATTR_READ_MODE, SQL_READ_INCLUDE_MARKED_DELETE, 0)

A continuacin ejecute la sentencia de SQL siguiente para recuperar todos los registros:
SELECT * FROM T WHERE $dirty<>0

SQL_ATTR_REORG_MODE (DB2 Everyplace) Valor entero de 32 bits que especifica si se realiza una reorganizacin automtica de la base de datos en tablas creadas por el usuario y si se permiten sentencias explcitas REORG de SQL. Los valores soportados son: v SQL_REORG_ENABLED - Es el valor por omisin del sistema. La base de datos puede reorganizarla DB2 Everyplace o puede reorganizarla explcitamente el usuario mediante una sentencia REORG de SQL. v SQL_REORG_DISABLED - Las sentencias REORG de SQL estn restringidas y la reorganizacin automtica de tablas creadas por el usuario est inhabilitada. Esta opcin no se puede especificar para un cursor abierto. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 122. SQLSTATE de SQLSetStmtAttr SQLSTATE 24000 HY001 HY010 Descripcin Estado no vlido del cursor. Error de asignacin de memoria. Error de secuencia de funcin. Explicacin Ya hay un cursor abierto para el descriptor de contexto de sentencia. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Se llama a la funcin mientras se produce una operacin de datos en ejecucin (SQLPrepare() o SQLExecDirect()). Se llam a la funcin mientras estaba en curso una operacin BEGIN COMPOUND y END COMPOUND de SQL.

290

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 122. SQLSTATE de SQLSetStmtAttr (continuacin) SQLSTATE HY014 Descripcin No hay ms descriptores de contexto. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. Explicacin DB2 CLI no puede asignar un descriptor de contexto debido a los recursos internos. El valor de uno de los argumentos de longitud de nombre es inferior a 0, pero no igual a SQL_NTS.

HY090

Restricciones Ninguna.

SQLGetConnectAttrObtener el valor actual de un atributo de conexin


Finalidad
Especificacin: DB2 CLI 5.0 ODBC 3.0 ISO CLI

SQLGetConnectAttr() devuelve el valor actual de un atributo de conexin. Sintaxis


SQLRETURN SQLGetConnectAttr(SQLHDBC SQLINTEGER SQLPOINTER SQLINTEGER SQLINTEGER ConnectionHandle, Attribute, ValuePtr, BufferLength, *StringLengthPtr);

Argumentos de la funcin
Tabla 123. Argumentos de SQLGetConnectAttr Tipo de datos SQLHDBC SQLINTEGER SQLPOINTER Argumento ConnectionHandle Attribute ValuePtr Uso entrada entrada salida Descripcin Descriptor de contexto de conexin. Atributo que se debe recuperar. Puntero a la memoria en la que devolver el valor actual del atributo especificado por Attribute. v Si ValuePtr apunta a una serie de caracteres, este argumento debe ser igual a la longitud de *ValuePtr. v Si ValuePtr es un puntero, pero no apunta a una serie, BufferLength debe tener el valor SQL_IS_POINTER. v Si el valor de *ValuePtr es una serie de Unicode, el argumento de BufferLength debe ser un nmero par.

SQLINTEGER

BufferLength

entrada

Consulta

291

Tabla 123. Argumentos de SQLGetConnectAttr (continuacin) Tipo de datos SQLINTEGER * Argumento StringLengthPtr Uso salida Descripcin Puntero a un almacenamiento intermedio en el que se devolver el nmero total de bytes (excluyendo el carcter de terminacin en nulo) disponibles para devolverlos en *ValuePtr. v Si ValuePtr es un puntero nulo, no se devuelve ninguna longitud. v Si el valor del atributo es una serie de caracteres, y si el nmero de bytes disponibles para devolverlos es superior a BufferLength menos la longitud de un carcter de terminacin en nulo, los datos de *ValuePtr se truncan en BufferLength menos la longitud del carcter de terminacin en nulo y DB2 CLI termina en nulo.

Uso Una llamada a SQLGetConnectAttr() devuelve en *ValuePtr el valor del atributo de conexin especificado en Attribute. En DB2 Everyplace, este valor es un valor de 32 bits y no se utilizan los argumentos BufferLength ni StringLengthPtr. SQLGetConnectAttr() puede recuperar los atributos de conexin siguientes. Para ver una descripcin de los atributos, consulte SQLSetConnectAttrEstablecer opciones referentes a una conexin en la pgina 280. v SQL_ATTR_AUTOCOMMIT (DB2 CLI/ODBC) v SQL_ATTR_CONNECTION_DEAD (DB2 CLI/ODBC) v SQL_ATTR_DATABASE_ACCESS (DB2 Everyplace) v SQL_ATTR_LOGIN_TIMEOUT (DB2 CLI/ODBC) v SQL_ATTR_FILENAME_FORMAT (DB2 Everyplace) v SQL_ATTR_IO_MODE (DB2 Everyplace) v SQL_ATTR_LOCK_TIMEOUT (DB2 Everyplace) v SQL_ATTR_TXN_ISOLATION (DB2 CLI/ODBC) Segn el atributo, es posible que una aplicacin no necesite establecer una conexin antes de llamar a SQLGetConnectAttr(). Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_NO_DATA v SQL_ERROR v SQL_INVALID_HANDLE

292

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Diagnsticos
Tabla 124. SQLSTATE de SQLGetConnectAttr SQLSTATE 01000 01004 Descripcin Aviso. Datos truncados. Explicacin Mensaje informativo. (La funcin devuelve SQL_SUCCESS_WITH_INFO). Los datos devueltos en *ValuePtr se truncan hasta BufferLength menos la longitud de un carcter de terminacin en nulo. La longitud del valor de la serie no truncada se devuelve en *StringLengthPtr. (La funcin devuelve SQL_SUCCESS_WITH_INFO). Se ha especificado un valor de Attribute que necesitaba una conexin abierta. Se ha producido un error para el que no exista ningn SQLSTATE especfico. El mensaje de error devuelto por SQLGetDiagRec() en el almacenamiento intermedio *MessageText describe el error y su causa. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Es probable que la memoria a nivel de proceso se haya agotado para el proceso de la aplicacin. Consulte la configuracin del sistema operativo para obtener ms informacin sobre las limitaciones de memoria a nivel de proceso. El valor especificado para el argumento BufferLength era inferior a 0.

08003 HY000

La conexin est cerrada. Error general.

HY001

Error de asignacin de memoria.

HY090

Longitud no vlida de la serie de caracteres o del almacenamiento intermedio.

HY092 HYC00

Tipo de opcin fuera de El valor especificado para el argumento rango. Attribute no era vlido. Controlador no apropiado. El valor especificado para el argumento Attribute era un atributo de sentencia o conexin vlida para la versin del controlador de DB2 CLI, pero la fuente de datos no lo soporta.

Restricciones Ninguna.

SQLTables - Obtener informacin de tabla


Finalidad
Especificacin: DB2 CLI 2.1 ODBC 1.0

SQLTables() devuelve una lista de nombres de tabla e informacin asociada almacenada en el catlogo del sistema de la fuente de datos conectada. La lista de nombres de tabla se devuelve como un conjunto de resultados, que se puede recuperar utilizando las mismas funciones que se utilizan para procesar un conjunto de resultados generado por una consulta.

Consulta

293

Sintaxis
SQLRETURN SQLTables SQLHSTMT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT StatementHandle, *CatalogName, NameLength1, FAR *SchemaName, NameLength2, FAR *TableName, NameLength3, FAR *TableType, NameLength4); FAR ( /* /* /* /* /* /* /* /* /* hstmt */ szCatalogName */ cbCatalogName */ szSchemaName */ cbSchemaName */ szTableName */ cbTableName */ szTableType */ cbTableType */

Argumentos de la funcin
Tabla 125. Argumentos de SQLTables Tipo de datos SQLHSTMT SQLCHAR Argumento StatementHandle CatalogName Uso Entrada Entrada Descripcin Descriptor de contexto de sentencia. Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados. Catalog es la primera parte de un nombre de tabla de 3 partes. DB2 Everyplace pasa por alto este campo. SQLSMALLINT NameLength1 Entrada Longitud de CatalogName. DB2 Everyplace pasa por alto este campo. SQLCHAR SchemaName Entrada Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados por medio de un nombre de esquema. DB2 Everyplace pasa por alto este campo. SQLSMALLINT NameLength2 Entrada Longitud de SchemaName. DB2 Everyplace pasa por alto este campo. SQLCHAR TableName Entrada Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados por medio de un nombre de tabla. Longitud de TableName. DB2 Everyplace slo da soporte al tipo TABLE. DB2 Everyplace pasa por alto este campo. DB2 Everyplace pasa por alto este campo.

SQLSMALLINT SQLCHAR

NameLength3 TableType

Entrada Entrada

SQLSMALLINT

NameLength4

Entrada

Tenga en cuenta que los argumentos de TableName aceptan patrones de bsqueda.

294

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Uso La informacin de tabla se devuelve en un conjunto de resultados en el que cada tabla se representa por medio de una fila del conjunto de resultados. A veces, una aplicacin llama a SQLTables() con punteros nulos al argumento TableName para que no se efecte ningn intento de restringir el conjunto de resultados devuelto. Para algunas fuentes de datos que contienen una gran cantidad de tablas, este escenario se asocia a un conjunto de resultados extremadamente grande y a tiempos de recuperacin muy grandes. El conjunto de resultados que devuelve SQLTables() contiene las columnas listadas en la Tabla 126 en el orden indicado. Las filas se ordenan por medio de TABLE_NAME. Las llamadas a SQLTables() deben utilizarse con moderacin, ya que en muchos casos se asignan a una consulta compleja y por tanto cara en el catlogo del sistema. Los resultados deben guardarse en vez de repetir las llamadas. Las columnas VARCHAR del conjunto de resultados de las funciones de catlogo se han declarado con un atributo de longitud mxima 128 para que sea coherente los lmites de SQL92. Puesto que los nombres de DB2 son inferiores a 128, la aplicacin puede optar por poner siempre a un lado 128 caracteres (ms el terminador nulo) para el almacenamiento intermedio de salida o, alternativamente llamar a SQLGetInfo() con SQL_MAX_TABLE_NAME_LEN para determinar las longitudes reales de la columna TABLE_NAME a la que da soporte el DBMS conectado.
Tabla 126. Columnas devueltas por SQLTables Nombre de la columna TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) Descripcin Siempre es una serie de longitud cero. Siempre es una serie de longitud cero. El nombre de la tabla. Identifica el tipo proporcionado por el nombre en la columna TABLE_NAME. Siempre tiene el valor de serie TABLE. Contiene la informacin descriptiva sobre la tabla.

REMARKS

VARCHAR(254)

Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos


Tabla 127. SQLSTATE de SQLTables SQLSTATE HY001 Descripcin Error de asignacin de memoria. Explicacin DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin.

Consulta

295

Tabla 127. SQLSTATE de SQLTables (continuacin) SQLSTATE HY014 Descripcin No hay ms descriptores de contexto. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. Explicacin DB2 CLI no pudo asignar un descriptor debido a los recursos internos. El valor de uno de los argumentos de longitud de nombre era inferior a 0, pero no era igual a SQL_NTS. La validez de uno de los argumentos de longitud del nombre superaba el valor mximo al que se da soporte para dicha fuente de datos. El valor soportado mximo puede obtenerse llamando a la funcin SQLGetInfo().

HY090

Restricciones Ninguna.

SQLColumns - Obtener informacin de columna para una tabla


Finalidad
Especificacin: DB2 CLI 2.1 ODBC 1.0

SQLColumns() devuelve una lista de columnas en las tablas especificadas. La informacin se devuelve en un conjunto de resultados de SQL, que se puede recuperar utilizando las mismas funciones que se utilizan para buscar un conjunto de resultados generado por una consulta. Sintaxis
SQLRETURN SQLColumns SQLHSTMT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT SQLCHAR SQLSMALLINT StatementHandle, *CatalogName, NameLength1, FAR *SchemaName, NameLength2, FAR *TableName, NameLength3, FAR *ColumnName, NameLength4); FAR ( /* /* /* /* /* /* /* /* /* hstmt */ szCatalogName */ cbCatalogName */ szSchemaName */ cbSchemaName */ szTableName */ cbTableName */ szColumnName */ cbColumnName */

Argumentos de la funcin
Tabla 128. Argumentos de SQLColumns Tipo de datos SQLHSTMT SQLCHAR Argumento StatementHandle CatalogName Uso Entrada Entrada Descripcin Descriptor de contexto de sentencia. Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados. Catalog es la primera parte de un nombre de tabla de 3 partes. DB2 Everyplace pasa por alto este argumento.

296

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 128. Argumentos de SQLColumns (continuacin) Tipo de datos SQLSMALLINT Argumento NameLength1 Uso Entrada Descripcin Longitud de CatalogName. DB2 Everyplace pasa por alto este argumento. SQLCHAR SchemaName Entrada Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados por medio de un nombre de esquema. DB2 Everyplace pasa por alto este argumento. SQLSMALLINT NameLength2 Entrada Longitud de SchemaName. DB2 Everyplace pasa por alto este argumento. SQLCHAR TableName Entrada Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados por medio de un nombre de tabla. Longitud de TableName. Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados por medio de un nombre de columna. Longitud de ColumnName.

SQLSMALLINT SQLCHAR

NameLength3 ColumnName

Entrada Entrada

SQLSMALLINT

NameLength4

Entrada

Uso Esta funcin se llama para recuperar informacin sobre las columnas de una tabla o de un conjunto de tablas. Es posible que una aplicacin habitual desee llamar a esta funcin despus de una llamada a SQLTables() para determinar las columnas de una tabla. La aplicacin debera utilizar las series de caracteres devueltas en la TABLE_NAME del conjunto de resultados de SQLTables() como entrada para esta funcin. SQLColumns() devuelve un conjunto de resultados estndar, ordenado mediante TABLE_NAME y ORDINAL_POSITION. El apartado Columnas devueltas por SQLColumns en la pgina 298 lista las columnas del conjunto de resultados. Los argumentos TableName y ColumnName aceptan patrones de bsqueda. Esta funcin no devuelve informacin sobre las columnas de un conjunto de resultados. En su lugar debera utilizarse SQLDescribeCol() o SQLColAttribute(). Las llamadas a SQLColumns() deben utilizarse con moderacin, ya que en muchos casos se asignan a una consulta compleja y por tanto cara en el catlogo del sistema. Los resultados deben guardarse en vez de repetir las llamadas. Las columnas VARCHAR del conjunto de resultados de las funciones de catlogo se han declarado con un atributo de longitud mxima 128 para que sea coherente los lmites de SQL92. Dado que los nombres de DB2 son inferiores a 128, la aplicacin puede optar por poner siempre a un lado 128 caracteres (ms el terminador nulo) para el almacenamiento intermedio de salida o, alternativamente llamar a SQLGetInfo() con SQL_MAX_TABLE_NAME_LEN y

Consulta

297

SQL_MAX_COLUMN_NAME_LEN para determinar respectivamente las longitudes reales de las columnas TABLE_NAME y COLUMN_NAME a las que da soporte el DBMS conectado. Aunque en futuros releases se pueden aadir nuevas columnas y modificarse los nombres de las columnas existentes, la posicin de las columnas actuales no cambiar. Columnas devueltas por SQLColumns Columna 1 TABLE_CAT (VARCHAR(128)) Siempre es nula (NULL). Columna 2 TABLE_SCHEM (VARCHAR(128)) Siempre es nula (NULL). Columna 3 TABLE_NAME (VARCHAR(128) no NULL) Nombre de la tabla. Columna 4 COLUMN_NAME (VARCHAR(128) no NULL) Identificador de columna. Nombre de la columna de la tabla especificada, vista, alias o sinnimo. Columna 5 DATA_TYPE (SMALLINT no NULL) Tipo de datos SQL de la columna que se identifica por medio de COLUMN_NAME. Este es uno de los valores de la columna Tipo de datos de SQL simblico de la seccin Tipos de datos por omisin y simblicos de SQL en la pgina 471. Columna 6 TYPE_NAME (VARCHAR(128) no NULL) Serie de caracteres que representa el nombre del tipo de datos que corresponde a DATA_TYPE. Columna 7 COLUMN_SIZE (INTEGER) Si el valor de la columna DATA_TYPE denota un carcter o serie binaria, esta columna contendr la longitud mxima de caracteres para la columna. Para los tipos de datos DATE, TIME o TIMESTAMP, es el nmero total de caracteres necesarios para visualizar el valor cuando se convierte en carcter. Para los tipos de datos numricos, es el nmero total de dgitos que se permite en la columna. Consulte tambin, Atributos de tipos de datos en la pgina 466. Columna 8 BUFFER_LENGTH (INTEGER) El nmero mximo de bytes para que el almacenamiento intermedio C asociado almacene datos de esta columna en el caso de que SQL_C_DEFAULT se haya especificado en las llamadas SQLBindCol(), SQLGetData() y SQLBindParameter(). Esta longitud no incluye ningn terminador nulo. Para los tipos de datos numricos exactos, incluye el decimal y el signo. Consulte tambin, Atributos de tipos de datos en la pgina 466 Columna 9 DECIMAL_DIGITS (SMALLINT) La escala de la columna. NULL se devuelve para los tipos de datos en los que la escala no resulta aplicable. Consulte tambin, Atributos de tipos de datos en la pgina 466 Columna 10 NUM_PREC_RADIX (SMALLINT)

298

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

10 o NULL. Si DATA_TYPE es un tipo de datos numrico exacto, esta columna contiene el valor 10 y COLUMN_SIZE contiene el nmero de dgitos decimales que se permiten para la columna. Para los tipos de datos numricos, el DBMS devuelve un NUM_PREC_RADIX de 10. NULL se devuelve para los tipos de datos en los que el radix no resulta aplicable. Columna 11 NULLABLE (SMALLINT no NULL) SQL_NO_NULLS si la columna no acepta valores nulos (NULL). SQL_NULLABLE si la columna acepta valores nulos (NULL). Columna 12 REMARKS (VARCHAR(254)) Siempre es nula (NULL). Columna 13 COLUMN_DEF (VARCHAR(254)) El valor por omisin de la columna. Si el valor por omisin es un literal numrico, esta columna contendr la representacin de caracteres del literal numrico que no tengan comillas simples encerrndolos. Si el valor por omisin es una serie de caracteres, esta columna es dicha serie encerrada entre comillas simples. Si el valor por omisin es una seudo-literal, como por ejemplo para las columnas DATE, TIME y TIMESTAMP, esta columna contendr la palabra clave de la seudo-literal (por ejemplo CURRENT DATE) sin comillas. Si NULL se ha especificado como valor por omisin, esta columna devuelve la palabra NULL, sin comillas. Si no se ha especificado ningn valor por omisin, esta columna es NULL. Columna 14 SQL_DATA_TYPE (SMALLINT no NULL) Esta columna es igual que la columna DATA_TYPE. Columna 15 SQL_DATETIME_SUB (SMALLINT) Esta columna siempre es nula (NULL). Columna 16 CHAR_OCTET_LENGTH (INTEGER) Contiene la longitud mxima en octetos para una columna de tipo de datos de carcter. Para conjuntos de caracteres de un nico byte, es igual que COLUMN_SIZE. Para todos los dems tipos de datos es NULL. Columna 17 ORDINAL_POSITION (INTEGER no NULL) La posicin ordinal de la columna de la tabla. La primera columna de la tabla es el nmero 1. Columna 18 IS_NULLABLE (VARCHAR(254)) Contiene la serie NO si se sabe que la columna no es anulable; y YES en caso contrario. Este conjunto de resultados resulta idntico a la especificacin de conjunto de resultados Columns() de X/Open CLI, el cual es una versin ampliada del conjunto de resultados SQLColumns() especificado en ODBC V2. El conjunto de resultados SQLColumns() de ODBC incluye cada una de las columnas en la misma posicin. Nota: Este conjunto de resultados resulta idntico a la especificacin de conjunto de resultados Columns() de X/Open CLI, el cual es una versin ampliada del
Consulta

299

conjunto de resultados SQLColumns() especificado en ODBC V2. El conjunto de resultados SQLColumns() de ODBC incluye cada una de las columnas en la misma posicin. Cdigos de retorno v SQL_SUCCESS v SQL_SUCCESS_WITH_INFO v SQL_ERROR v SQL_INVALID_HANDLE Diagnsticos
Tabla 129. SQLSTATE de SQLColumns SQLSTATE 24000 40003 08S01 Descripcin Estado no vlido del cursor. Error en el enlace de comunicaciones. Error de asignacin de memoria. No hay ms descriptores de contexto. Longitud no vlida de la serie de caracteres o del almacenamiento intermedio. Explicacin Ya haba un cursor abierto en el descriptor de contexto de sentencia. El enlace de comunicaciones entre la aplicacin y la fuente de datos se interrumpi antes de finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no pudo asignar un descriptor debido a los recursos internos. El valor de uno de los argumentos de longitud de nombre era inferior a 0, pero no igual a SQL_NTS.

HY001 HY014

HY090

Restricciones Ninguna.

SQLNumParams - Obtener nmero de parmetros en una sentencia SQL


Finalidad
Especificacin: DB2 CLI 2.1 ODBC 1.0

SQLNumParams() devuelve el nmero de marcadores de parmetros de una sentencia de SQL. Sintaxis


SQLRETURN SQLNumParams (SQLHSTMT SQLSMALLINT FAR StatementHandle, *ParameterCountPtr);

Argumentos de la funcin
Tabla 130. Argumentos de SQLNumParams Tipo de datos SQLHSTMT SQLSMALLINT Argumento StatementHandle ParameterCountPtr Uso Entrada Salida Descripcin Descriptor de contexto de sentencia. Nmero de parmetros de la sentencia.

300

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Uso Esta funcin slo puede llamarse despus de que se haya preparado la sentencia asociada con StatementHandle. Si la sentencia no contiene ningn marcador de parmetro, ParameterCountPtr se establece en 0. Una aplicacin puede llamar a esta funcin para determinar el nmero de llamadas SQLBindParameter() necesarias para la sentencia SQL asociada con el descriptor de sentencia. Cdigos de retorno v v v v SQL_SUCCESS SQL_SUCCESS_WITH_INFO SQL_ERROR SQL_INVALID_HANDLE

Diagnsticos
Tabla 131. SQLSTATE de SQLNumParams SQLSTATE HY001 HY010 Descripcin Error de asignacin de memoria. Error de secuencia de funcin. Explicacin DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. Esta funcin se llam antes de que se llamara SQLPrepare() para la StatementHandle especificada.

HY013

Error inesperado de DB2 CLI no ha podido acceder a la memoria gestin de la memoria. necesaria para ejecutar o finalizar la funcin.

Restricciones Ninguna.

Mensajes de SQLState notificados por CLI


Tabla 132. Mensajes de SQLState notificados por CLI SQLSTATE 01000 01000 01002 Nombre de la funcin de CLI SQLAllocHandle SQLFreeHandle SQLDisconnect Descripcin Aviso Aviso Error de desconexin Explicacin Mensaje informativo. (La funcin devuelve SQL_SUCCESS_WITH_INFO). Mensaje informativo. (La funcin devuelve SQL_SUCCESS_WITH_INFO). Se produjo un error durante la desconexin. Sin embargo, la desconexin se realiz satisfactoriamente. (La funcin devuelve SQL_SUCCESS_WITH_INFO). El nombre de columna devuelto en el argumento ColumnName era ms largo que el valor especificado en el argumento BufferLength. El argumento NameLengthPtr contiene la longitud del nombre de columna completo. (La funcin devuelve SQL_SUCCESS_WITH_INFO).

01004

SQLDescribeCol

Datos truncados

Consulta

301

Tabla 132. Mensajes de SQLState notificados por CLI (continuacin) SQLSTATE 01004 Nombre de la funcin de CLI SQLFetch Descripcin Datos truncados Explicacin Los datos devueltos para una o ms columnas se truncaron. Los valores de tipo serie o los valores numricos se truncan por la derecha. (Se devuelve SQL_SUCCESS_WITH_INFO si no se ha producido ningn error). Los datos devueltos para la columna especificada (ColumnNumber) se han truncado. Los valores de tipo serie o los valores numricos se truncan por la derecha. (Se devuelve SQL_SUCCESS_WITH_INFO.) El conjunto de filas solicitado se solap con el inicio del conjunto de resultados cuando la posicin actual estaba ms all de la primera fila y FetchOrientation era SQL_PRIOR, o bien FetchOrientation era SQL_RELATIVE con un desplazamiento FetchOffset negativo cuyo valor absoluto era menor o igual que el valor actual de SQL_ATTR_ROW_ARRAY_SIZE. (La funcin devuelve SQL_SUCCESS_WITH_INFO). La sentencia asociada al descriptor de sentencia (StatementHandle) no devolvi un conjunto de resultados. No haba ninguna columna para describir. (Invoque primero SQLNumResultCols() para determinar si hay alguna fila en el conjunto de resultados). La conversin desde el tipo de datos identificado por el argumento ValueType al tipo de datos identificado por el argumento ParameterType no es una conversin vlida. (Por ejemplo, la conversin desde SQL_C_DATE a SQL_DOUBLE.) El tipo de datos no se ha podido convertir de forma adecuada al tipo de datos especificado por fCType en SQLBindCol(). El tipo de datos no se puede convertir al tipo de datos C especificado por el argumento TargetType. La funcin se invoc anteriormente para el mismo valor de ColumnNumber, pero con un valor diferente de TargetType. El valor especificado para el argumento ColumnNumber excede el nmero mximo de columnas del conjunto de resultados. El valor especificado para ColumnNumber era menor o igual que 0. El valor especificado para el argumento ColumnNumber era superior al nmero de columnas del conjunto de resultados. DB2 CLI no ha podido establecer una conexin con la fuente de datos (servidor).

01004

SQLGetData

Datos truncados

01S06*

SQLFetchScroll

Se ha intentado recuperar antes de que el conjunto de resultados devolviera el primer conjunto de filas La sentencia no ha devuelto ningn conjunto de resultados.

07005

SQLDescribeCol

07006

SQLBindParameter

Conversin no vlida

07006

SQLFetch

Conversin no vlida. Conversin no vlida

07006

SQLGetData

07009

SQLBindCol

ndice descriptor no vlido. ndice descriptor no vlido.

07009

SQLDescribeCol

08001

SQLConnect

No se puede conectar con la fuente de datos

302

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 132. Mensajes de SQLState notificados por CLI (continuacin) SQLSTATE 08002 Nombre de la funcin de CLI SQLConnect Descripcin Conexin en uso. Explicacin El descriptor de conexin (ConnectionHandle) especificado ya se haba utilizado para establecer una conexin con una fuente de datos y la conexin sigue abierta. El argumento HandleType era SQL_HANDLE_STMT, pero la conexin especificada por el argumento InputHandle no se abri. El proceso de conexin debe finalizar satisfactoriamente (y se debe abrir la conexin) para que DB2 CLI asigne un descriptor de contexto de sentencia. La conexin especificada en el argumento ConnectionHandle no se abri. La fuente de datos (servidor) rechaz el establecimiento de la conexin.

08003

SQLAllocHandle

La conexin est cerrada

08003 08004

SQLDisconnect SQLConnect

La conexin est cerrada El servidor de aplicaciones ha rechazado el establecimiento de la conexin

08S01

SQLFreeHandle

Error en el enlace El argumento HandleType era de SQL_HANDLE_DBC y el enlace de comunicaciones comunicaciones entre DB2 CLI y la fuente de datos al que estaba intentando conectarse ha fallado antes de que la funcin terminara su proceso. Se ha especificado un almacenamiento intermedio de indicador o salida no vlido. Se ha especificado un almacenamiento intermedio de indicador o salida no vlido. Valor numrico fuera de rango El valor de puntero especificado para el argumento pcbValue en SQLBindCol() era un puntero nulo y el valor de la columna correspondiente es nulo. No existe ninguna manera de notificar SQL_NULL_DATA. El valor de puntero especificado para el argumento StrLen_or_IndPtr era un puntero nulo y el valor de la columna es nulo. No existe ninguna manera de notificar SQL_NULL_DATA.

22002

SQLFetch

22002

SQLGetData

22003

SQLExecDirect

Un valor numrico asignado a una columna de tipo numrico provoc el truncamiento de la parte entera del nmero, durante el proceso de asignacin o al calcular un resultado intermedio. Un valor devuelto era incompatible con el tipo de datos indicado por el argumento TargetType. Una funcin definida por el usuario ha devuelto un SQLSTATE no vlido.

22005 39001 *

SQLGetData SQLExecute

Error de asignacin Una funcin definida por el usuario ha devuelto un SQLSTATE no vlido

40003 08S01

SQLBindCol

Error en el enlace El enlace de comunicaciones entre la aplicacin de y la fuente de datos se interrumpi antes de comunicaciones finalizar la funcin.

Consulta

303

Tabla 132. Mensajes de SQLState notificados por CLI (continuacin) SQLSTATE 40003 08S01 Nombre de la funcin de CLI SQLBindParameter Descripcin Explicacin

Error en el enlace El enlace de comunicaciones entre la aplicacin de y la fuente de datos se interrumpi antes de comunicaciones finalizar la funcin. Error en el enlace El enlace de comunicaciones entre la aplicacin de y la fuente de datos se interrumpi antes de comunicaciones finalizar la funcin. Error en el enlace El enlace de comunicaciones entre la aplicacin de y la fuente de datos se interrumpi antes de comunicaciones finalizar la funcin. Error en el enlace El enlace de comunicaciones entre la aplicacin de y la fuente de datos se interrumpi antes de comunicaciones finalizar la funcin. Error en el enlace El enlace de comunicaciones entre la aplicacin de y la fuente de datos se interrumpi antes de comunicaciones finalizar la funcin. Error en el enlace El enlace de comunicaciones entre la aplicacin de y la fuente de datos se interrumpi antes de comunicaciones finalizar la funcin. Error de sintaxis Los SQLSTATE 42nnn indican que hay varios problemas de sintaxis o de acceso en la sentencia. Los caracteres nnn representan cualquier SQLSTATE con ese cdigo de clase. Ejemplo: 42nnn representa cualquier SQLSTATE perteneciente a la clase 42. Los SQLSTATE 42xxx denotan la existencia de diversos problemas de sintaxis o de acceso en la sentencia. xxx representa cualquier SQLSTATE con ese cdigo de clase. Ejemplo: 42xxx representa cualquier SQLSTATE perteneciente a la clase 42. Los SQLSTATE 42xxx denotan la existencia de diversos problemas de sintaxis o de acceso en la sentencia. xxx representa cualquier SQLSTATE con ese cdigo de clase. Ejemplo: 42xxx representa cualquier SQLSTATE perteneciente a la clase 42. Error no recuperable del sistema. Error no recuperable del sistema. Error no recuperable del sistema. Error no recuperable del sistema. Error no recuperable del sistema. Error no recuperable del sistema. Error no recuperable del sistema.

40003 08S01

SQLDescribeCol

40003 08S01

SQLFreeStmt

40003 08S01

SQLGetData

40003 08S01

SQLNumResultCols

40003 08S01

SQLRowCount

42nnn*

SQLPrepare

42xxx

SQLExecDirect

Error de sintaxis o violacin de regla de acceso

42xxx

SQLNumResultCols

Error de sintaxis

58004 58004 58004 58004 58004 58004 58004

SQLBindCol SQLBindParameter SQLConnect SQLDescribeCol SQLDisconnect SQLExecDirect SQLFetch

Error inesperado del sistema Error inesperado del sistema Error inesperado del sistema Error inesperado del sistema Error inesperado del sistema Error inesperado del sistema Error inesperado del sistema

304

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 132. Mensajes de SQLState notificados por CLI (continuacin) SQLSTATE 58004 58004 58004 58004 58004 59101* Nombre de la funcin de CLI SQLFreeStmt SQLGetData SQLPrepare SQLNumResultCols SQLRowCount SQLExecute Descripcin Error inesperado del sistema Error inesperado del sistema Error inesperado del sistema Error inesperado del sistema Error inesperado del sistema Usuario no definido Contrasea incorrecta Grupo no definido Aplicacin no definida Suscripcin no definida Suscripcin no completada Error de conversin XML Error general de AgentAdapter Ha fallado la carga de la biblioteca Error general Explicacin Error no recuperable del sistema. Error no recuperable del sistema. Error no recuperable del sistema. Error no recuperable del sistema. Error no recuperable del sistema. El usuario no est definido en la base de datos de control del Centro de administracin de dispositivos porttiles. La contrasea del usuario no coincide con la contrasea definida en el Centro de administracin de dispositivos porttiles. El grupo no est definido en el Centro de administracin de dispositivos porttiles. La aplicacin no est definida en el Centro de administracin de dispositivos porttiles. La suscripcin con AgentAdapter no est definida en el Centro de administracin de dispositivos porttiles. La suscripcin no dispone de toda la informacin necesaria para invocar un procedimiento almacenado remoto. AgentAdapter ha fallado al convertir los datos de entrada del usuario en un documento XML. Se ha producido un error general de AgentAdapter. No se pueden encontrar en el sistema algunas de las bibliotecas necesarias. Se ha producido un error para el que no existe ningn SQLSTATE especfico. El mensaje de error devuelto por SQLGetDiagRec() en el almacenamiento intermedio *MessageText describe el error y su causa. Se ha producido un error para el que no existe ningn SQLSTATE especfico. El mensaje de error devuelto por SQLGetDiagRec() en el almacenamiento intermedio *MessageText describe el error y su causa. DB2 CLI no puede asignar memoria para el descriptor de contexto especificado. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin.

59102*

SQLExecute

59103* 59104* 59105*

SQLExecute SQLExecute SQLExecute

59106*

SQLExecute

59120* 59121* 59122*

SQLExecute SQLExecute SQLExecute

HY000

SQLAllocHandle

HY000

SQLFreeHandle

Error general

HY001

SQLAllocHandle

Error de asignacin de memoria Error de asignacin de memoria

HY001

SQLBindCol

Consulta

305

Tabla 132. Mensajes de SQLState notificados por CLI (continuacin) SQLSTATE HY001 Nombre de la funcin de CLI SQLBindParameter Descripcin Error de asignacin de memoria Error de asignacin de memoria Error de asignacin de memoria Error de asignacin de memoria Error de asignacin de memoria Error de asignacin de memoria Error de asignacin de memoria Error de asignacin de memoria Error de asignacin de memoria Error de asignacin de memoria Error de asignacin de memoria Error de asignacin de memoria Nmero de columna no vlido Explicacin DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la funcin. El valor especificado para el argumento ColumnNumber es inferior a 0. El valor especificado para el argumento ColumnNumber superaba el nmero mximo de columnas soportadas por la fuente de datos. El valor especificado para el argumento ColumnNumber es inferior a 1. El valor especificado para el argumento ColumnNumber es superior al nmero de columnas del conjunto de resultados. La columna especificada es inferior a 0 o superior al nmero de columnas resultantes.

HY001

SQLConnect

HY001

SQLDescribeCol

HY001

SQLDisconnect

HY001

SQLExecDirect

HY001

SQLFetch

HY001

SQLFreeHandle

HY001

SQLFreeStmt

HY001

SQLGetData

HY001

SQLPrepare

HY001

SQLNumResultCols

HY001

SQLRowCount

HY002

SQLBindCol

HY002

SQLDescribeCol

Nmero de columna no vlido

HY002

SQLGetData

Nmero de columna no vlido

HY003

SQLBindCol

Tipo de programa TargetType no es un tipo de datos vlido ni fuera de rango SQL_C_DEFAULT.

306

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 132. Mensajes de SQLState notificados por CLI (continuacin) SQLSTATE HY003 Nombre de la funcin de CLI SQLBindParameter Descripcin Explicacin

Tipo de programa El valor especificado por el argumento fuera de rango ParameterNumber no es un tipo de datos vlido ni SQL_C_DEFAULT. Tipo de programa TargetType no es un tipo de datos vlido ni fuera de rango SQL_C_DEFAULT. Tipo de datos SQL fuera de rango Valor de argumento no vlido Valor de argumento no vlido Valor de argumento no vlido Error de secuencia de funcin Error de secuencia de funcin Error de secuencia de funcin Error de secuencia de funcin El valor especificado para el argumento ParameterType no es un tipo vlido de datos SQL. El argumento ParameterValuePtr es un puntero nulo y el argumento StrLen_or_IndPtr es un puntero nulo e InputOutputType no es SQL_PARAM_OUTPUT. StatementText es un puntero nulo.

HY003 HY004

SQLGetData SQLBindParameter

HY009

SQLBindParameter

HY009

SQLExecDirect

HY009

SQLNumResultCols

StatementText es un puntero nulo.

HY010

SQLDescribeCol

Se llama a la funcin antes de llamar a SQLPrepare() o SQLExecDirect() para el descriptor de contexto de sentencia (StatementHandle). El descriptor de contexto de sentencia (StatementHandle) especificado no est en estado preparado. Se llama a SQLExecute() sin antes llamar a SQLPrepare(). Se llama a la funcin antes de llamar a SQLPrepare() o SQLExecDirect() para el descriptor de contexto de sentencia (StatementHandle). El argumento HandleType es SQL_HANDLE_ENV y el estado de al menos una conexin es asignado o conectado. Antes de llamar a SQLFreeHandle() con un HandleType de SQL_HANDLE_ENV, se debe llamar para cada conexin a SQLDisconnect() y SQLFreeHandle() con un HandleType de SQL_HANDLE_DBC. El argumento HandleType es SQL_HANDLE_DBC, y se llama a la funcin antes de llamar a SQLDisconnect() para la conexin. El argumento HandleType es SQL_HANDLE_STMT; se llam a SQLExecute() o SQLExecDirect() con el descriptor de contexto de sentencia y la funcin devolvi SQL_NEED_DATA. (DM) Todos los descriptores de contexto auxiliares y otros recursos no se liberaron antes de llamar a SQLFreeHandle(). Se llama a la funcin sin antes llamar a SQLFetch().

HY010

SQLExecute

HY010

SQLFetch

HY010

SQLFreeHandle

HY010

SQLGetData

Error de secuencia de funcin

Consulta

307

Tabla 132. Mensajes de SQLState notificados por CLI (continuacin) SQLSTATE HY010 Nombre de la funcin de CLI SQLNumResultCols Descripcin Error de secuencia de funcin Error de secuencia de funcin Operacin no vlida en este momento Error inesperado de gestin de la memoria Explicacin Se llama a la funcin antes de llamar a SQLPrepare() o SQLExecDirect() para el descriptor de contexto de sentencia (StatementHandle). Se llama a la funcin antes de llamar a SQLExecute() o SQLExecDirect() para el descriptor de contexto de sentencia (StatementHandle). El atributo del argumento era SQL_ATTR_TXN_ISOLATION y haba una transaccin o un cursor abierto. El argumento HandleType es SQL_HANDLE_DBC, o SQL_HANDLE_STMT; y no se pudo procesar la llamada a la funcin debido a que no se pudo acceder a los objetos de memoria subyacentes, posiblemente debido a una condicin de falta de memoria. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. El argumento HandleType es SQL_HANDLE_STMT y no se puede procesar la llamada a la funcin debido a que no se puede acceder a los objetos de memoria asociados, posiblemente debido a condiciones de falta de memoria. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin.

HY010

SQLRowCount

HY 011

SQLSetConnectAttr

HY013

SQLAllocHandle

HY013

SQLBindCol

Error inesperado de gestin de la memoria Error inesperado de gestin de la memoria Error inesperado de gestin de la memoria Error inesperado de gestin de la memoria Error inesperado de gestin de la memoria Error inesperado de gestin de la memoria Error inesperado de gestin de la memoria Error inesperado de gestin de la memoria

HY013

SQLBindParameter

HY013

SQLConnect

HY013

SQLDescribeCol

HY013

SQLDisconnect

HY013

SQLExecDirect

HY013

SQLFetch

HY013

SQLFreeHandle

HY013

SQLGetData

Error inesperado de gestin de la memoria Error inesperado de gestin de la memoria

HY013

SQLNumResultCols

308

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 132. Mensajes de SQLState notificados por CLI (continuacin) SQLSTATE HY013 Nombre de la funcin de CLI SQLNumResultCols Descripcin Error inesperado de gestin de la memoria Error inesperado de gestin de la memoria No hay ms descriptores de contexto No hay ms descriptores de contexto No hay ms descriptores de contexto Utilizacin no vlida de un descriptor de contexto de descriptor asignado automticamente Valor de atributo no vlido Longitud no vlida de la serie de caracteres o del almacenamiento intermedio Longitud no vlida de la serie de caracteres o del almacenamiento intermedio Longitud no vlida de la serie de caracteres o del almacenamiento intermedio Longitud no vlida de la serie de caracteres o del almacenamiento intermedio Explicacin DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. DB2 CLI no puede acceder a la memoria necesaria para ejecutar o finalizar la funcin. Se ha llegado al lmite en el nmero de descriptores de contexto que se pueden asignar para el tipo de descriptor de contexto indicado por el argumento HandleType. DB2 CLI no puede asignar un descriptor de contexto debido a los recursos internos. DB2 CLI no puede asignar un descriptor de contexto debido a los recursos internos. El argumento Handle se establece en el descriptor de contexto para un descriptor asignado automticamente o para un descriptor de implementacin.

HY013

SQLRowCount

HY014

SQLAllocHandle

HY014

SQLExecDirect

HY014

SQLNumResultCols

HY017

SQLFreeHandle

HY024 HY090

SQLSetStmtAttr SQLBindCol

Dado el valor de Attribute especificado, se ha especificado un valor no vlido en ValuePtr. El valor especificado para el argumento BufferLength es inferior a 1 y el argumento TargetType es SQL_C_CHAR, SQL_C_BINARY o SQL_C_DEFAULT.

HY090

SQLBindParameter

El valor especificado para el argumento BufferLength era inferior a 0.

HY090

SQLDescribeCol

La longitud especificada en el argumento BufferLength es inferior a 1.

HY090

SQLExecDirect

El argumento TextLength es inferior a 1, pero no es igual a SQL_NTS.

Consulta

309

Tabla 132. Mensajes de SQLState notificados por CLI (continuacin) SQLSTATE HY090 Nombre de la funcin de CLI SQLGetData Descripcin Longitud no vlida de la serie de caracteres o del almacenamiento intermedio Longitud no vlida de la serie de caracteres o del almacenamiento intermedio Tipo de opcin fuera de rango Explicacin El valor del argumento BufferLength es inferior a 0 y el argumento TargetType es SQL_C_CHAR o SQL_C_BINARY, o bien TargetType es SQL_C_DEFAULT y el tipo por omisin es SQL_C_CHAR, SQL_C_BINARY o SQL_C_DBCHAR. El argumento TextLength es inferior a 1 pero no igual a SQL_NTS.

HY090

SQLNumResultCols

HY092

SQLAllocHandle

El argumento HandleType no es: SQL_HANDLE_ENV SQL_HANDLE_DBC SQL_HANDLE_STMT

HY092 HY093

SQLFreeStmt SQLBindParameter

Tipo de opcin fuera de rango Nmero de parmetros no vlido Valor de escala no vlido

El valor especificado para el argumento Option no es SQL_DROP ni SQL_RESET_PARAMS. El valor especificado para el argumento ValueType es inferior a 1 o superior al nmero mximo de parmetros soportados por el servidor. El valor especificado para ParameterType es SQL_DECIMAL o SQL_NUMERIC y el valor especificado para DecimalDigits es inferior a 0 o superior al valor del argumento ParamDef (precisin). El valor especificado para ParameterType es SQL_DECIMAL o SQL_NUMERIC y el valor especificado para ParamDef es inferior a 1. InputOutputType no es SQL_PARAM_INPUT.

HY094

SQLBindParameter

HY104

SQLBindParameter

Valor de precisin no vlido Tipo de parmetro no vlido

HY105

SQLBindParameter

HY106

SQLFetchScroll

Tipo de captacin El valor especificado para el argumento fuera de rango. FetchOrientation no es vlido. El valor del atributo de sentencia de SQL_CURSOR_TYPE es SQL_CURSOR_FORWARD_ONLY y el valor del argumento FetchOrientation no es SQL_FETCH_NEXT. Valor de fila fuera de rango El valor especificado con el atributo de sentencia de SQL_ATTR_CURSOR_TYPE es SQL_CURSOR_KEYSET_DRIVEN, pero el valor especificado con el atributo de sentencia de SQL_ATTR_KEYSET_SIZE es superior a 0 e inferior al valor especificado con el atributo de sentencia de SQL_ATTR_ROW_ARRAY_SIZE. El nombre de fuente de datos (DataSource) especificado no es vlido.

HY107

SQLFetchScroll

HY501

SQLConnect

Nombre de fuente de datos (DataSource) no vlido.

310

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 132. Mensajes de SQLState notificados por CLI (continuacin) SQLSTATE HYC00 Nombre de la funcin de CLI SQLBindCol Descripcin Controlador no apropiado Controlador no apropiado Explicacin DB2 CLI reconoce el tipo de datos especificado en el argumento TargetType pero no le da soporte. DB2 CLI o la fuente de datos no dan soporte a la conversin especificada por la combinacin del valor especificado para el argumento ValueType y el valor especificado para el argumento ParameterType. El valor especificado para el argumento ParameterType no est soportado por DB2 CLI o por la fuente de datos. DB2 CLI no reconoce el tipo de datos SQL de la columna ColumnNumber. DB2 CLI reconoce el tipo de datos SQL especificado pero no le da soporte. DB2 CLI o la fuente de datos no puede convertir el tipo de datos SQL al tipo TargetType de los datos de la aplicacin. El tiempo de espera ha transcurrido antes de que la aplicacin pudiera conectar con la fuente de datos. El perodo de tiempo de espera se puede establecer mediante el atributo SQL_ATTR_LOGIN_TIMEOUT de SQLSetConnectAttr(). Se devuelve este error cuando hay otra aplicacin que est utilizando la base de datos.

HYC00

SQLBindParameter

HYC00 HYC00

SQLDescribeCol SQLGetData

Controlador no apropiado Controlador no apropiado

HYT00

SQLConnect

Ha transcurrido el tiempo de espera de conexin

IBM Sync Client


Sistemas operativos soportados por la API de Java Sync
Las API de Java Sync estn disponibles en los sistemas operativos siguientes: v Windows (Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows 2003) v Symbian OS v Windows CE (con procesadores MIPS y ARM) v Palm OS v Linux v QNX Neutrino

API de IBM Java Sync


Puede crear aplicaciones Java utilizando Java Database Connectivity (JDBC) y la interfaz IBM Sync Java a fin de integrar la base de datos porttil DB2 Everyplace y las funciones de Sync Server. Para obtener informacin detallada sobre las interfaces, clases y excepciones que se suministran con las API de IBM Java Sync soportadas por DB2 Everyplace, consulte la documentacin Javadoc que se encuentra en el directorio %DSYINSTDIR%\Clients\javadoc.

Consulta

311

Comparaciones entre la API C de IBM Sync Client Versin 8.1 y Versin 7.2
Este apartado resume los principales cambios efectuados en la API C de IBM Sync Client Versin 8.1: v Ahora se dispone de tres descriptores de contexto: servicio, configuracin y motor. (Si no desea realizar sincronizaciones, no es necesario que abra el descriptor de contexto del motor.) v Las preferencias en la API C de IBM Sync Client Versin 8.1 no son persistentes y algunas de ellas, las que constituyen realmente informacin esencial, se han eliminado. Por ejemplo, el nombre de sistema principal, el puerto, el nombre de usuario y la contrasea de la anterior funcin isyncSetPref son ahora parmetros obligatorios en la funcin iscOpenService para abrir un descriptor de contexto de servicio. v Ahora, la modalidad de sincronizacin es implcita a la aplicacin, y el parmetro de modalidad de sincronizacin ya no es necesario cuando se invoca a una sincronizacin. v La interfaz con la funcin de escucha de sincronizacin se basa ahora en los sucesos. Ahora, las estructuras de sucesos que contienen informacin de sucesos se pasan a la aplicacin. v El estado de sincronizacin de un conjunto de suscripcin (de su ltima sincronizacin) es persistente y se puede consultar ms tarde. v Se ha eliminado la funcin de escucha por omisin. Cuando se necesita una accin por omisin para un suceso, la aplicacin simplemente devuelve el cdigo ISCRTNCB_Default. v Ahora, DB2 Everyplace da soporte al cifrado de datos para proteger la tabla que contiene datos delicados. Cuando desarrolle una aplicacin de cliente sincronizado para sincronizar tablas cifradas, puede implementar (en la funcin de escucha) la consulta del motor de sincronizacin para el nombre de usuario y la contrasea de DB2 Everyplace. v Los registros rechazados (incluyendo aquellos que contienen conflictos u operaciones no permitidas) se pasan ahora a la aplicacin a travs de la funcin de escucha. v Ahora, la aplicacin gestiona el archivo de anotaciones (LOGDB-ISYN). Es decir, que el motor de sincronizacin de Versin 8.1 ya no genera el archivo de anotaciones (LOGDB-ISYN) en un idioma nativo, tal como suceda en la versin 7.2.1. En lugar de esto, y a efectos de servicios, el motor de sincronizacin generar un archivo de rastreo (TRACE-ISYN), que slo est en ingls v El motor de IBM Sync Client almacena todos los archivos (incluidos la configuracin, el archivo de rastreo, los datos y las preferencias (si es pertinente) en un directorio: En sistemas operativos Windows CE: \ (directorio raz) En sistemas operativos EPOC: C:\Systems\Data\ISync\ En sistemas operativos Palm: la memoria principal En otros sistemas operativos: el directorio actual v El funcionamiento de la API de IBM Sync Client Versin 7.2.1 se sigue soportando mediante un reiniciador de API (la biblioteca isync), que manejar la compatibilidad anterior de la API. El reiniciador de API tambin genera el archivo de anotaciones (LOGDB-ISYN) en idiomas nativos, en el mismo directorio que en la Versin 7.2.1, es decir: En sistemas operativos Windows CE: \Archivos de Programa\ISync\ En sistemas operativos EPOC: C:\Systems\Apps\ISync\

312

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

En sistemas operativos Palm: la memoria principal En otros sistemas operativos: el directorio actual Adems, las opciones ISYNCOPTION_SkipConfig e ISYNCOPTION_UseAppSignature no funcionarn con las funciones isyncGo e isyncSetSyncMoe. Nota: No es necesario instalar la biblioteca del reiniciador de API (isync) si se decide utilizar la API de IBM Sync Client Versin 8.1. La Tabla 133 lista las diferencias principales entre las funciones de la API C de IBM Sync Client Versin 8.1 y la de IBM Sync Client Versin 7.2.
Tabla 133. Comparacin de la API C de IBM Sync Client Versin 8.1 con la de la Versin 7.2 Versin 8.1 iscGetVersion iscServiceOpen iscConfigOpeniscEngineOpen Versin 7.2 isyncGetVersion isyncOpen Observaciones No se necesita ningn descriptor de contexto en iscGetVersion. Es necesario abrir tres descriptores de contexto. El sistema principal, el puerto, el nombre de usuario y la contrasea se especifican en iscServiceOpen y no son persistentes. iscServiceClose iscConfigClose iscEngineClose iscEngineSetListener (Ninguna) isyncClose isyncSetListener isyncDefaultListener Es necesario cerrar tres descriptores de contexto. Han cambiado el prototipo de escucha y la interfaz. No existen ms funciones de escucha externas por omisin. Para el manejo de sucesos por omisin, devuelve el cdigo ISCRTNCB_Default. Slo se requieren dos preferencias (rastreo y tiempo de espera). Estas preferencias no son persistentes. Ya no se requiere modalidad de sincronizacin. Slo puede actualizar la configuracin con iscEngineSyncConfig. iscConfigEnableSubsSet iscConfigDisableSubsSet iscConfigResetSubsSet isyncSetSyncMode No hay ms valores de modalidad de sincronizacin generales. Se puede saltar (inhabilitar) la sincronizacin de un conjunto de suscripcin mediante iscConfigDisableSubsSet.

iscEngineSetPref iscEngineGetPref

isyncSetPref isyncGetPref

iscEngineSync iscEngineSyncConfig

isyncGo

Consulta

313

Tabla 133. Comparacin de la API C de IBM Sync Client Versin 8.1 con la de la Versin 7.2 (continuacin) Versin 8.1 iscConfigOpenCursor iscConfigCloseCursor iscConfigGetNextSubsSet iscConfigSubsSetIsEnabled iscConfigSubsSetIsReset iscEngineGetInfo iscConfigPurge iscConfigGetSubsSetStatus Versin 7.2 isyncGetFirstApp isyncGetNextApp Observaciones Abre un cursor antes de repetir conjuntos de suscripcin. Para consultar un conjunto de suscripcin, se necesita un ID de conjunto de suscripcin. API C nuevas en la Versin 8.1.

Conceptos relacionados v La aplicacin Sync Client C/C++ de ejemplo en la pgina 27

Resumen de funciones de la API C de IBM Sync Client


La Tabla 134 lista las funciones de la API C de IBM Sync Client soportadas por DB2 Everyplace e incluye la finalidad de cada una de ellas.
Tabla 134. Lista de funciones de la API C de IBM Sync Client Nombre de la funcin iscGetVersion Finalidad Obtiene el nmero de versin de la API C de Sync Client.

Tabla 135. Lista de funciones de la API de servicios de IBM Nombre de la funcin iscServiceOpen iscServiceOpenEx iscServiceClose Finalidad Abre un nuevo servicio. Abre un nuevo servicio utilizando las propiedades. Cierra un servicio.

Tabla 136. Lista de funciones de la API de configuracin de IBM Nombre de la funcin iscConfigOpen iscConfigClose iscConfigPurge iscConfigOpenCursor iscConfigCloseCursor iscConfigGetNextSubsSet iscConfigEnableSubsSet iscConfigDisableSubsSet Finalidad Abre una conexin con el almacn de configuracin. Cierra una conexin con el almacn de configuracin. Reinicializa la configuracin. Obtiene (descriptor de contexto de) un cursor para repetir conjuntos de suscripcin. Dispone un cursor abierto. Obtiene la descripcin del siguiente conjunto de suscripcin (si lo hay). Habilita un conjunto de suscripcin para su sincronizacin. Inhabilita la sincronizacin de un conjunto de suscripcin.

314

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 136. Lista de funciones de la API de configuracin de IBM (continuacin) Nombre de la funcin iscConfigResetSubsSet iscConfigSubsSetIsEnabled iscConfigSubsSetIsReset iscConfigGetSubsSetStatus Finalidad Devuelve un conjunto de suscripcin a la modalidad de restablecimiento. Consulta si un conjunto de suscripcin est habilitado para la sincronizacin. Consulta si un conjunto de suscripcin est restablecido. Consulta el estado de sincronizacin de la sincronizacin anterior.

Tabla 137. Lista de funciones de la API de IBM Sync Engine Nombre de la funcin iscEngineOpen iscEngineClose iscEngineGetInfo iscEngineSetListener Finalidad Abre un descriptor de contexto para el motor de sincronizacin. Cierra un descriptor de contexto abierto para el motor de sincronizacin. Obtiene informacin general sobre el motor de sincronizacin. Informa a la sincronizacin acerca de la funcin de escucha definida por el usuario que debe utilizar. Tipo de datos para la funcin de escucha definida por el usuario. Establece una preferencia. Recupera el valor de una preferencia. Inicia una sesin de sincronizacin. Sincroniza la configuracin suministrada con el servidor.

iscEngineListenerPF iscEngineSetPref iscEngineGetPref iscEngineSync iscEngineSyncConfig

Tipos de datos de la API C de IBM Sync Client


La Tabla 138 lista los nuevos tipos de datos definidos por la API C de IBM Sync Client. Cuando llame a las funciones de la API C, asegrese de que el tipo de argumento se ajusta al prototipo de las funciones.
Tabla 138. Tipos de datos para la API C de IBM Sync Client Tipo de datos isy_VOID isy_INT isy_UINT isy_INT16 isy_UINT16 isy_INT32 isy_UINT32 isy_ULONG isy_BYTE Descripcin Tipo vaco Entero Entero sin signo Entero de dos bytes Entero sin signo de dos bytes Entero de cuatro bytes Entero sin signo de cuatro bytes Entero largo sin signo Tipo de un byte

Consulta

315

Tabla 138. Tipos de datos para la API C de IBM Sync Client (continuacin) Tipo de datos isy_WORD isy_DWORD isy_TCHAR isy_BOOL HISCSERV HISCCONF HISCENG HISCCSR ISCEVT Descripcin Tipo de una palabra Tipo de dos palabras Tipo carcter Tipo booleano Tipo de datos del descriptor de contexto de servicio Tipo de datos del descriptor de contexto de configuracin Tipo de datos del descriptor de contexto del motor de sincronizacin Tipo de datos de un cursor de repeticin para conjuntos de suscripcin Tipo de datos de un suceso de escucha: typedef struct { isy_INT32 isy_UINT32 isy_INT32 ISCSTATE ISCLISTENARG } ISCEVT; ISCSTATE typedef struct { isy_TCHAR isy_TCHAR isy_UINT32 isy_INT32 } ISCSTATE; ISCLISTENARG code; type; retry; state; *info;

Tipo de datos de estado del suceso: currSubsSet[ISCLEN_SubsSetName]; currSubs[ISCLEN_SubsName]; subsType; syncProg;

Tipo de datos de informacin para la funcin de escucha de sincronizacin, que consta de una lista de argumentos de serie (argc, argv): typedef struct { isy_INT32 argc; isy_TCHAR **argv; } ISCLISTENARG;

ISCLISTENCOLUMN

Tipo de datos de informacin para la funcin de escucha de sincronizacin, que consta de una columna de tabla que contiene la posicin de la columna, la secuencia de la clave primaria, el tipo de columna, el tamao de los datos y los datos reales de la columna: typedef struct { isy_INT32 isy_INT32 isy_INT32 isy_INT32 isy_BYTE } ISCLISTENCOLUMN; pos; pkseq; type; size; *data;

En un archivo de cabecera de DB2 Everyplace, sqlcli.h, se definen varias constantes de tipo de columna para el tipo de columna. Los datos de la columna se representan como una serie de texto terminada en nulo. Esto es as con excepcin del tipo de columna blob, en que los datos reales de la columna (el campo de datos) se representan en forma de serie plana de bytes NO terminada en nulo. Adems, en el campo de tamao se indica su tamao (nmero de bytes).

316

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 138. Tipos de datos para la API C de IBM Sync Client (continuacin) Tipo de datos ISCLISTENCONFLICT Descripcin Tipo de datos de informacin para la funcin de escucha de sincronizacin, que consta de un registro de tabla que contiene el nombre de tabla, la operacin, el nmero de columnas y una matriz de informacin de las columnas (ISCLISTENCOLUMN): typedef struct { isy_TCHAR table[ISCLEN_Table]; isy_INT32 op; isy_INT32 colc; ISCLISTENCOLUMN *colv; } ISCLISTENCONFLICT; El campo op indica la operacin rechazada, que es una de las constantes de operacin siguientes (con valores reales entre parntesis): v ISCCONST_OpDelete (1) v ISCCONST_OpInsert (2) v ISCCONST_OpUpdate (3)

Clave para las descripciones de funciones de la API C de IBM Sync Client


Las descripciones para cada funcin de la API C de Sync Client contienen las secciones siguientes: Finalidad Brinda una breve visin general de lo que realiza la funcin. Sintaxis Contiene el prototipo C genrico. El prototipo genrico se utiliza para todos los entornos, incluido Windows. Argumentos de la funcin Lista los argumentos de cada funcin, junto con el tipo de datos, la descripcin y el tipo de uso (entrada o salida) de cada argumento. Uso Proporciona informacin sobre cmo utilizar la funcin y describe cualquier posible consideracin especial.

Cdigos de retorno Lista todos los posibles cdigos de retorno de la funcin. Restricciones Indica las diferencias o limitaciones existentes al aplicar cada funcin de la API C de Sync Client. Referencias Lista las funciones relacionadas de la API C de Sync Client. Nota: En la API C de IBM Sync Client no existe apartado de Diagnstico.

iscGetVersion()
Finalidad iscGetVersion() obtiene el nmero de versin de la API C de Sync Client. Sintaxis
isy_UINT32 iscGetVersion();
Consulta

317

Argumentos de la funcin Ninguna. Uso iscGetVersion() se utiliza para recuperar el nmero de versin de la API C de Sync Client. El nmero de versin se devuelve como entero sin signo de 32 bits con formato 0xmmnnrrxx, donde mm, nn y rr son la representacin hexadecimal, respectivamente, de los nmeros de versin mayor, menor y modificado. xx son valores reservados. Ejemplo:
isy_UINT32 version; int verMajor, verMinor, verModi; version = iscGetVersion(); verMajor = (int) (version >> 24); verMinor = (int) ((version >> 16) & 0x000000FF); verModi = (int) ((version >> 8) & 0x000000FF);

Cdigos de retorno Nmero de versin de la API C de Sync Client. Restricciones Ninguna.

iscServiceOpen()
Finalidad iscServiceOpen() abre un nuevo descriptor de contexto de servicio. Para utilizar valores distintos a los valores por omisin para propiedades el tiempo de espera, consulte iscServiceOpenEx(). Sintaxis
isy_INT32 iscServiceOpen( isy_CONST isy_TCHAR* host, isy_CONST isy_TCHAR* port, isy_CONST isy_TCHAR* username, isy_CONST isy_TCHAR* password, isy_CONST isy_VOID* reserved, HISCSERV* phServ);

Argumentos de la funcin La Tabla 139 lista los argumentos vlidos utilizados con la funcin iscServiceOpen().
Tabla 139. Argumentos de iscServiceOpen() Tipo de datos Argumento Uso entrada entrada entrada entrada Descripcin Nombre de sistema principal o el IP Nmero de puerto Nombre de usuario para el servicio solicitado Contrasea para el servicio solicitado

isy_CONST isy_TCHAR* host isy_CONST isy_TCHAR* port isy_CONST isy_TCHAR* username isy_CONST isy_TCHAR* password

318

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 139. Argumentos de iscServiceOpen() (continuacin) Tipo de datos Argumento Uso entrada salida Descripcin (Reservado) Descriptor de contexto para un servicio

isy_CONST isy_TCHAR* reserved HISCSERV* phServ

Uso iscServiceOpen() se utiliza para solicitar un nuevo descriptor de contexto para un servicio especfico identificado por el nombre de sistema principal y el nmero de puerto. El nombre de usuario y la contrasea se especifican al solicitar un servicio. Si resulta satisfactoria, se devuelve un descriptor de contexto de servicio (HISCSERV) a travs de *phServ. De lo contrario, *phServ es NULL y se devuelve el cdigo de retorno. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_OutOfMemory : Falta memoria v ISCRTN_ResourceBusy : Recurso bloqueado (por ejemplo, por otra aplicacin) v ISCRTN_NotPermitted : Recurso no accesible (por ejemplo, no legible) v ISCRTN_NotFound : Recurso no encontrado (por ejemplo, va de acceso no encontrada) v ISCRTN_Failed : Otros casos Restricciones Ninguna.

iscServiceClose()
Finalidad iscServiceOpen() abre un descriptor de contexto de servicio abierto. Sintaxis
isy_INT32 iscServiceClose( HISCSERV hServ);

Argumentos de la funcin La Tabla 140 lista el argumento vlido utilizado con la funcin iscServiceClose().
Tabla 140. Argumento de iscServiceClose() Tipo de datos HISCSERV Argumento hServ Uso entrada Descripcin Descriptor de contexto de servicio

Uso Utilice iscServiceClose() para liberar el almacenamiento de un descriptor de contexto previamente abierto.

Consulta

319

Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_Failed : Otros casos Restricciones El hecho de realizar varias llamadas a iscServiceClose() puede ocasionar errores y se debe evitar.

iscServiceOpenEx()
Finalidad iscServiceOpenEx() abre un nuevo descriptor de contexto de servicio basado en una matriz de propiedad. Sintaxis
isy_INT32 iscServiceOpenEx( isy_CONST isy_TCHAR* URL, ISCPROPERTY* property, isy_INT32 propertyNum, HISCSERV* phServ);

Argumentos de la funcin La tabla siguiente lista argumentos para la funcin iscServiceOpenEx().


Tabla 141. Argumento de iscServiceOpenEx() Tipo de datos isy_CONST isy_TCHAR Argumento URL Uso entrada Descripcin Informacin de servidor como serie de URL

320

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 141. Argumento de iscServiceOpenEx() (continuacin) Tipo de datos ISCPROPERTY Argumento property Uso entrada Descripcin Matriz de propiedades del tipo ISCPROPERTY: typedef struct { isy_TCHAR *key; //serie de ID de propiedad isy_TCHAR *value; //serie de valor de propiedad } ISCPROPERTY; Estn disponibles las siguientes propiedades: v isync.user Nombre de usuario de Sync Client v isync.password Contrasea de Sync Client v isync.encoding Codificacin de caracteres de los datos de destino Codificaciones de DB2e para Windows y Palm: US_ASCII - US ASCII ASCII ASCII ISO8859_1 ISO 8859-1, Latin1

SJIS MS-Windows Japons korean Coreano UTF-8 UTF-8 UnicodeLittle - UNICODE Little-Endian GB2312 Chino (continental) Big5 Chino (Taiwn) Cp1250 MS-Windows Europa Oriental Cp1252 MS-Windows Latin-1 (EE.UU., Europa Occidental) Cp1255 MS-Windows Hebreo Cp1256 MS-Windows rabe Windows y Palm tienen como codificacin por omisin Cp1252. Windows unicode, WinCE y Symbian slo deben utilizar UnicodeLittle (valor por omisin). Linux y QNX Neutrino deben utilizar UTF-8 (valor por omisin). v isync.proxy IP y puerto del proxy, por ejemplo 127.0.0.1:6060 v isync.trace Nivel de rastreo de Sync client (default (por omisin) o detailed (detallado)) v isync.timeout Duracin del tiempo de espera en segundos para la comunicacin del mensaje (el valor por omisin es de 60 segundos), el valor 0 indica el mnimo y el valor -1 indica nunca (tiempo de espera) v isync.messagesize Tamao del mensaje (en bytes). Valores por omisin para Palm y WinCE: 64000 Valores por omisin para el resto: 128000. El valor real puede ser inferior segn la memoria libre disponible en el dispositivo.

Consulta

321

Tabla 141. Argumento de iscServiceOpenEx() (continuacin) Tipo de datos ISCPROPERTY (continuacin) Argumento Uso Descripcin v target.db.url ase de datos de destino por omisin para los datos relacionales. Si se omite, la base de datos de destino por omisin estar en el directorio actual. La aplicacin puede invalidar esta base de datos de destino por omisin para cada suscripcin respondiendo a la llamada de retorno ISCEVT_QueSubsTarget. v target.db.username Nombre de usuario de la base de datos de destino por omisin especificada por la propiedad target.db.url. v target.db.password Contrasea de la base de datos de destino por omisin especificada por la propiedad target.db.url. v isync.db.url Base de datos de control del cliente para albergar las estadsticas de sincronizacin y los datos de rastreo. Si se omite, Sync Client utiliza la base de datos de destino por omisin. v isync.db.username Nombre de usuario de la base de datos del cliente especificada por la propiedad isync.db.url. v isync.db.password Contrasea de la base de datos del cliente especificada por la propiedad isync.db.url. v db2e.writethrough: Utilice esta propiedad para habilitar o inhabilitar la funcin de grabacin directa (writethrough) DB2 Everyplace. Cuando establezca yes como valor de esta propiedad, los cambios se enviarn directamente al soporte de almacenamiento. Puede recuperar los datos si la aplicacin o el sistema operativo se detienen de modo imprevisto. Esta modalidad aumenta la fiabilidad pero reduce el rendimiento. DB2 Everyplace no ofrece la recuperacin de soporte. Si se establece no (es el valor por omisin) como valor de esta propiedad, los cambios se enviarn al sistema operativo. Puede recuperar datos si una aplicacin se detiene de modo imprevisto, pero es posible que no pueda recuperar datos si el sistema operativo se detiene. Las aplicaciones que utilizan esta modalidad tienen un rendimiento considerablemente ms rpido. Las propiedades de nombre de usuario y contrasea son obligatorias. isy_INT32 HISCSERV propertyNum phServ entrada salida Nmero de propiedades. Descriptor de contexto para un servicio.

Uso iscServiceOpenEx() se utiliza para solicitar un nuevo descriptor de contexto para un servicio especfico desde un servidor con valores representados como matriz de propiedad. El servidor se identifica por medio de una serie de Uniform Resource Locator (URL), la cual es posible que contenga el protocolo, el nombre de sistema

322

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

principal (o IP) y el nmero de puerto. Si Sync Server est configurado para Secure Socket Layer (SSL), la parte de protocolo del URL debe ser https://, en caso contrario, ser http://. El nmero de puerto puede omitirse y los puertos por omisin para SSL y no SSL son el puerto 443 y el puerto 80, respectivamente. Todos los valores (incluyendo el nombre de usuario y la contrasea) se especifican en la matriz de propiedad. Si resulta satisfactoria, se devuelve un descriptor de contexto de servicio (HISCSERV) a travs de phServ; en caso contrario, phServ es NULL y se devuelve el cdigo de error. Al finalizar, el descriptor de contexto de servicio se cierra con iscServiceClose(). Ejemplo:
int rc = 0; HISCSERV hSyncServ; ISCPROPERTY properties[12] = { {"isync.user", "myUserName"}, {"isync.password", "myPassword"}, {"isync.encoding", "ISO8859_1"}, {"isync.trace", "detailed"}, {"isync.timeout", "120"}, // 2 minutos {"isync.messagesize", "65536"}, // 64K Bytes {"isync.db.url", "CtrlDB"}, // base de datos de control del cliente {"isync.db.username", "dbUserName"}, // nombre de usuario para CtrlDB {"isync.db.password", "dbPassword"}, // contrasea para CtrlDB {"target.db.url", "SyncDB"}, // base de datos de destino por omisin {"target.db.username", "dbUserName"},// nombre de usuario para SyncDB {"target.db.password", "dbPassword"}}// contrasea para SyncDB rc = iscServiceOpenEx("http://localhost.mycom.com:8080", properties, 12, &hSyncServ);

Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_OutOfMemory : Falta memoria v ISCRTN_ResourceInUse : Recurso bloqueado (por ejemplo, por otra aplicacin) v ISCRTN_NotPermitted : Recurso no accesible (por ejemplo, no legible) v ISCRTN_NotFound : Recurso no encontrado (por ejemplo, va de acceso no encontrada) v ISCRTN_Failed : Otros casos

iscConfigOpen()
Finalidad iscConfigOpen() abre una conexin con el almacn de configuracin. Sintaxis
isy_INT32 iscConfigOpen( HISCSERV hServ, isy_TCHAR *path, HISCCONF *phConf);

Argumentos de la funcin La Tabla 142 lista los argumentos vlidos utilizados con la funcin iscConfigOpen().
Tabla 142. Argumentos de iscConfigOpen() Tipo de datos HISCSERV Argumento hServ Uso entrada Descripcin Descriptor de contexto de servicio
Consulta

323

Tabla 142. Argumentos de iscConfigOpen() (continuacin) Tipo de datos isy_TCHAR* HISCCONF* Argumento path phConf Uso entrada salida Descripcin Va de acceso del directorio de trabajo Conexin de configuracin

Uso iscConfigOpen() abre una conexin con el almacn de configuracin que se especifica en la va de acceso indicada para un servicio especfico. Si resulta satisfactoria, se devuelve un descriptor de contexto de configuracin (HISCCONF) a travs de *phServ. De lo contrario, *phServ es NULL y se devuelve el cdigo de retorno. Si se trata de un nuevo servicio (ya sea un nuevo sistema principal o un nuevo puerto), se crea una nueva configuracin vaca para ese servicio. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_OutOfMemory : Falta memoria v ISCRTN_ResourceBusy : Recurso bloqueado (por ejemplo, por otra aplicacin) v ISCRTN_NotPermitted : Recurso no accesible (por ejemplo, no legible) v ISCRTN_NotFound : Recurso no encontrado (por ejemplo, va de acceso no encontrada) v ISCRTN_Failed : Otros casos Restricciones Ninguna.

iscConfigClose()
Finalidad iscConfigClose() cierra una conexin de almacn de configuracin abierta. Sintaxis
isy_INT32 iscConfigClose( HISCCONF hConf);

Argumentos de la funcin La Tabla 143 lista el argumento vlido utilizado con la funcin iscConfigClose().
Tabla 143. Argumento de iscConfigClose() Tipo de datos HISCCONF Argumento hConf Uso entrada Descripcin Conexin de configuracin

Uso iscConfigClose() cierra una conexin de almacn de configuracin previamente abierta.

324

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_Failed : Otros casos Restricciones Ninguna.

iscConfigPurge()
Finalidad iscConfigPurge() vaca toda la informacin de suscripciones del almacn de configuracin. Sintaxis
isy_INT32 iscConfigPurge( HISCCONF hConf);

Argumentos de la funcin La Tabla 144 lista el argumento vlido utilizado con la funcin iscConfigPurge().
Tabla 144. Argumento de iscConfigPurge() Tipo de datos HISCCONF Argumento hConf Uso entrada Descripcin Conexin de configuracin

Uso iscConfigPurge() elimina toda la informacin de suscripciones contenida en el almacn de configuracin. Durante la siguiente sincronizacin, el motor capta de nuevo la configuracin del servidor y realiza una renovacin total de todos los conjuntos de suscripcin. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_Failed : Otros casos Restricciones Ninguna.

iscConfigOpenCursor()
Finalidad iscConfigOpenCursor() obtiene un cursor para procesar de forma repetida todos los conjuntos de suscripcin. Sintaxis
isy_INT32 iscConfigOpenCursor( HISCCONF hConf, HISCCSR *phCursor);

Consulta

325

Argumentos de la funcin La Tabla 145 lista los argumentos vlidos utilizados con la funcin iscConfigOpenCursor().
Tabla 145. Argumentos de iscConfigOpenCursor() Tipo de datos HSYNCCONF HISCCSR* Argumento hConf phCursor Uso entrada salida Descripcin Conexin de configuracin Cursor devuelto para la repeticin de conjuntos de suscripcin

Uso Cuando se necesite un proceso de repeticin sobre todos los conjuntos de suscripcin, utilice iscConfigOpenCursor() para obtener un cursor apropiado. A continuacin, utilice iscConfigGetNextSubsSet() para obtener cada conjunto de suscripcin y la descripcin correspondiente al mismo. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_Failed : Otros casos Restricciones Cuando se llama a iscConfigOpenCursor(), se invalidan todos los cursores que se haban abierto previamente, y se deben cerrar. Cualquier intento de procesar conjuntos de suscripcin con cursores cerrados genera el cdigo de retorno ISCRTN_Failed. Es decir, que no se puede anidar una repeticin de los conjuntos de suscripcin dentro de otra repeticin. De forma parecida, los cursores abiertos se invalidan cuando se sincroniza la configuracin (utilizando iscEngineSync() o iscEngineSyncConfig()).

iscConfigCloseCursor()
Finalidad iscConfigCloseCursor() dispone un cursor abierto. Sintaxis
isy_INT32 iscConfigCloseCursor( HISCCONF hConf, HISCCSR hCursor);

Argumentos de la funcin La Tabla 146 lista los argumentos vlidos utilizados con la funcin iscConfigCloseCursor().
Tabla 146. Argumentos de iscConfigCloseCursor() Tipo de datos HISCCONF HISCCSR Argumento hConf hCursor Uso entrada entrada Descripcin Conexin de configuracin Cursor para repetir conjuntos de suscripcin

326

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Uso Cuando se abra un cursor con iscConfigOpenCursor() pero el cursor no sea necesario, cirrelo con iscConfigCloseCursor(). De no hacerlo, el cursor abierto puede ocasionar prdidas de memoria u otros problemas de coherencia de la configuracin. No intente utilizar el descriptor de contexto cerrado una vez que se haya cerrado el cursor, puesto que podra ocasionar errores inesperados. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_Failed : Otros casos Restricciones Ninguna.

iscConfigGetNextSubsSet()
Finalidad iscConfigGetNextSubsSet() obtiene la descripcin (si la hay) de un cursor y lo mueve al siguiente conjunto de suscripcin. Sintaxis
isy_INT32 iscConfigGetNextSubsSet( HISCCONF hConf, HISCCSR hCursor, isy_TCHAR* id, isy_TCHAR* name);

Argumentos de la funcin La Tabla 147 lista los argumentos vlidos utilizados con la funcin iscConfigGetNextSubsSet().
Tabla 147. Argumentos de iscConfigGetNextSubsSet() Tipo de datos HISCCONF HISCCSR isy_TCHAR* isy_TCHAR* Argumento hConf hCursor id name Uso entrada entrada salida salida Descripcin Conexin de configuracin Cursor para repetir conjuntos de suscripcin ID del conjunto de suscripcin Nombre del conjunto de suscripcin

Uso iscConfigGetNextSubsSet() obtiene el ID de conjunto de suscripcin del servidor, recupera el nombre del conjunto de suscripcin (si lo hay) y mueve el cursor al siguiente conjunto de suscripcin. Ejemplo:
isy_TCHAR isy_TCHAR isy_INT32 HISCCSR isy_INT32 id[ISCLEN_SubsSetID]; name[ISCLEN_SubsSetName]; isReset, isEnabled; hCursor; rc;
Consulta

327

// inicia la iteracin de todos los conjuntos de suscripcin rc = iscConfigOpenCursor(hConf, &hCursor); while (rc == ISCRTN_Succeeded) { rc = iscConfigGetNextSubsSet(hConf, hCursor, id, name); if (rc == ISCRTN_Succeeded) { isReset = iscConfigSubsSetIsReset(hConf, id); isEnabled = iscConfigSubsSetIsEnabled(hConf, id); // proceso del conjunto de suscripcin ... // obtencin de la suscripcin siguiente } // final de proceso } // final de iteracin iscConfigCloseCursor(hConf, hCursor);

Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_Empty : No existen ms conjuntos de suscripcin v ISCRTN_Failed : Otros casos Restricciones Ninguna.

iscConfigEnableSubsSet()
Finalidad iscConfigEnableSubsSet() habilita un conjunto de suscripcin de la configuracin para su sincronizacin. Sintaxis
isy_INT32 iscConfigEnableSubsSet( HISCCONF hConf, isy_TCHAR* id);

Argumentos de la funcin La Tabla 148 lista los argumentos vlidos utilizados con la funcin iscConfigEnableSubsSet().
Tabla 148. Argumentos de iscConfigEnableSubsSet() Tipo de datos HISCCONF isy_TCHAR* Argumento hConf id Uso entrada entrada Descripcin Conexin de configuracin ID del conjunto de suscripcin

Uso Inicialmente, todos los conjuntos de suscripcin estn habilitados para su sincronizacin. Las funciones iscConfigEnableSubsSet() e iscConfigDisableSubsSet() habilitan e inhabilitan la capacidad de sincronizacin de un conjunto de suscripcin, que se especifica mediante el ID indicado. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_NotFound : No se encuentra el conjunto de suscripcin. v ISCRTN_Failed : Otros casos

328

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

iscConfigDisableSubsSet()
Finalidad iscConfigDisableSubsSet() inhabilita la sincronizacin de un conjunto de suscripcin. Sintaxis
isy_INT32 iscConfigDisableSubsSet( HISCCONF hConf, isy_TCHAR* id);

Argumentos de la funcin La Tabla 149 lista los argumentos vlidos utilizados con la funcin iscConfigDisableSubsSet().
Tabla 149. Argumentos de iscConfigDisableSubsSet() Tipo de datos HISCCONF isy_TCHAR* Argumento hConf id Uso entrada entrada Descripcin Conexin de configuracin ID del conjunto de suscripcin

Uso Inicialmente, todos los conjuntos de suscripcin estn habilitados para su sincronizacin. Las funciones iscConfigEnableSubsSet() e iscConfigDisableSubsSet() habilitan e inhabilitan la capacidad de sincronizacin de un conjunto de suscripcin, que se especifica mediante el ID indicado. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_NotFound : No se encuentra el conjunto de suscripcin. v ISCRTN_Failed : Otros casos Restricciones Ninguna.

iscConfigResetSubsSet()
Finalidad iscConfigResetSubsSet() restablece un conjunto de suscripcin de la configuracin a la modalidad de restablecimiento. Sintaxis
isy_INT32 iscConfigResetSubsSet( HISCCONF hConf, isy_TCHAR* id);

Argumentos de la funcin La Tabla 150 en la pgina 330 lista los argumentos vlidos utilizados con la funcin iscConfigResetSubsSet().

Consulta

329

Tabla 150. Argumentos de iscConfigResetSubsSet() Tipo de datos HISCCONF isy_TCHAR* Argumento hConf id Uso entrada entrada Descripcin Conexin de configuracin ID del conjunto de suscripcin

Uso Si un conjunto de suscripcin est en modalidad de restablecimiento al sincronizarlo, el motor de sincronizacin elimina los datos del cliente para dicho conjunto de suscripcin. El motor de sincronizacin, simplemente, capta (o vuelve a captar) los datos del servidor; este proceso se denomina renovacin. Una vez que se sincroniza un conjunto de suscripcin, ste deja de estar en modalidad de restablecimiento. Utilice iscConfigResetSubsSet() para devolver el conjunto de suscripcin especificado a la modalidad de restablecimiento. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_NotFound : No se encuentra el conjunto de suscripcin. v ISCRTN_Failed : Otros casos Restricciones Ninguna.

iscConfigSubsSetIsEnabled()
Finalidad iscConfigSubsSetIsEnabled() consulta si un conjunto de suscripcin est habilitado para su sincronizacin. Sintaxis
isy_INT32 iscConfigSubsSetIsEnabled( HISCCONF hConf, isy_TCHAR* id);

Argumentos de la funcin La Tabla 151 lista los argumentos vlidos utilizados con la funcin iscConfigSubsSetIsEnabled().
Tabla 151. Argumentos de iscConfigSubsSetIsEnabled() Tipo de datos HISCCONF isy_TCHAR* Argumento hConf id Uso entrada entrada Descripcin Conexin de configuracin ID del conjunto de suscripcin

Uso iscConfigSubsSetIsEnabled() se utiliza para realizar una consulta si un conjunto de suscripcin, especificado por el ID indicado, tiene habilitada la sincronizacin. Inicialmente, todos los conjuntos de suscripcin estn habilitados para su sincronizacin.

330

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Cdigos de retorno v ISCRTN_True : El conjunto de suscripcin tiene habilitada la sincronizacin. v ISCRTN_False : El conjunto de suscripcin no tiene habilitada la sincronizacin. v ISCRTN_NotFound : No se encuentra el conjunto de suscripcin. v ISCRTN_Failed : Otros casos Restricciones Ninguna.

iscConfigSubsSetIsReset()
Finalidad iscConfigSubsSetIsReset() realiza una consulta si un conjunto de suscripcin est en modalidad de restablecimiento. Sintaxis
isy_INT32 iscConfigSubsSetIsReset( HISCCONF hConf, isy_TCHAR* id);

Argumentos de la funcin La Tabla 152 lista los argumentos vlidos utilizados con la funcin iscConfigSubsSetIsReset().
Tabla 152. Argumentos de iscConfigSubsSetIsReset() Tipo de datos HISCCONF isy_TCHAR* Argumento hConf id Uso entrada entrada Descripcin Conexin de configuracin ID del conjunto de suscripcin

Uso Inicialmente, todos los conjuntos de suscripcin estn establecidos en modalidad de restablecimiento. Sin embargo, si un conjunto de suscripcin se sincroniza, la modalidad del conjunto de suscripcin cambia. Utilice iscConfigResetSubsSet() para devolver un conjunto de suscripcin, especificado por el ID indicado, a la modalidad de restablecimiento. Cdigos de retorno v ISCRTN_True : El conjunto de suscripcin est en modalidad de restablecimiento. v ISCRTN_False : El conjunto de suscripcin no est en modalidad de restablecimiento. v ISCRTN_NotFound : No se encuentra el conjunto de suscripcin. v ISCRTN_Failed : Otros casos Restricciones Ninguna.

Consulta

331

iscConfigGetSubsSetStatus()
Finalidad iscConfigGetSubsSetStatus() obtiene el estado de sincronizacin de un conjunto de suscripcin. Sintaxis
isy_INT32 iscConfigGetSubsSetStatus( HISCCONF hConf, isy_TCHAR* id);

Argumentos de la funcin La Tabla 153 lista los argumentos vlidos utilizados con la funcin iscConfigGetSubsSetStatus().
Tabla 153. Argumentos de iscConfigGetSubsSetStatus() Tipo de datos HISCCONF isy_TCHAR* Argumento hConf id Uso entrada entrada Descripcin Conexin de configuracin ID del conjunto de suscripcin

Uso Utilice iscConfigGetSubsSetStatus() para consultar el estado de sincronizacin de un conjunto de suscripcin (que tiene el ID suministrado) durante su ltima sincronizacin. Cdigos de retorno v ISCRTN_Succeeded : La sincronizacin del conjunto de suscripcin ha resultado satisfactoria. v ISCRTN_Ready : El conjunto de suscripcin est habilitado. El proceso de sincronizacin ha empezado pero todava no ha sincronizado el conjunto de suscripcin. v ISCRTN_Canceled : La sincronizacin del conjunto de suscripcin se ha cancelado. v ISCRTN_Failed : La sincronizacin del conjunto de suscripcin ha fallado. v ISCRTN_NotFound : No se encuentra el conjunto de suscripcin. Restricciones Ninguna.

iscEngineOpen()
Finalidad iscEngineOpen() abre un descriptor de contexto para el motor de sincronizacin. Sintaxis
isy_INT32 iscEngineOpen( HISCCONF hConf, HISCENG *phEngine);

332

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Argumentos de la funcin La Tabla 154 lista los argumentos vlidos utilizados con la funcin iscEngineOpen().
Tabla 154. Argumentos de iscEngineOpen() Tipo de datos HISCCONF HISCENG* Argumento hConf phEngine Uso entrada salida Descripcin Descriptor de contexto de configuracin Descriptor de contexto para el motor de sincronizacin

Uso Utilice iscEngineOpen() para abrir un descriptor de contexto para el motor de sincronizacin (HISCENG) al sincronizar la configuracin especificada. El descriptor de contexto se devuelve a travs de *phEngine cuando termina satisfactoriamente la sincronizacin. Si la sincronizacin no finaliza satisfactoriamente, el valor de *phEngine es NULL y se devuelve un cdigo de error. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_OutOfMemory : Falta memoria v ISCRTN_ResourceBusy : Recurso bloqueado (por ejemplo, por otra aplicacin) v ISCRTN_NotPermitted : Recurso no accesible (por ejemplo, el recurso no es legible) v ISCRTN_NotFound : Recurso no encontrado (por ejemplo, la va de acceso no se ha encontrado) v ISCRTN_Failed : Otros casos Restricciones Evite realizar muchas llamadas a iscEngineOpen(), puesto que la realizacin de muchas llamadas abre muchos descriptores de contexto para el motor de sincronizacin y puede ocasionar problemas de coherencia.

iscEngineClose()
Finalidad iscEngineClose() cierra un descriptor de contexto abierto para el motor de sincronizacin. Sintaxis
isy_INT32 iscEngineClose( HISCENG hEngine);

Argumentos de la funcin La Tabla 155 en la pgina 334 lista el argumento vlido utilizado con la funcin iscEngineClose().

Consulta

333

Tabla 155. Argumento de iscEngineClose() Tipo de datos HISCENG Argumento hEngine Uso entrada Descripcin Descriptor de contexto para el motor de sincronizacin

Uso Utilice iscEngineClose() para cerrar un descriptor de contexto abierto para el motor de sincronizacin. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_Failed : Otros casos

iscEngineGetInfo()
Finalidad iscEngineGetInfo() obtiene informacin general sobre el motor de sincronizacin. Sintaxis
isy_INT32 iscEngineGetInfo( HISCENG hEngine, isy_TCHAR *info, isy_INT32 infoLen);

Argumentos de la funcin La Tabla 156 lista los argumentos vlidos utilizados con la funcin iscEngineGetInfo().
Tabla 156. Argumentos de iscEngineGetInfo() Tipo de datos HISCENG isy_TCHAR* isy_INT32 Argumento hEngine info infoLen Uso entrada salida entrada Descripcin Descriptor de contexto para el motor de sincronizacin Puntero al almacenamiento intermedio que almacena la informacin de retorno Tamao del almacenamiento intermedio proporcionado

Uso iscEngineGetInfo() proporciona informacin del motor de sincronizacin a efectos de servicio. El contenido y el formato de la informacin pueden cambiar en el futuro. Por consiguiente, las aplicaciones slo deben visualizar o registrar esta informacin. No utilice esta informacin como entrada para el proceso de programas de aplicacin. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_ValTruncated : La longitud real de la informacin es superior a infoLen. v ISCRTN_Failed : Otros casos

334

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Restricciones Ninguna.

iscEngineSetListener()
Finalidad iscEngineSetListener() registra la funcin de escucha definida por el usuario con el motor de sincronizacin. Durante una sesin de sincronizacin, se llama a la funcin de escucha cuando se produce un suceso de sincronizacin (como, por ejemplo, el inicio de la sincronizacin) o un error. Sintaxis
isy_INT32 iscEngineSetListener( HISCENG hEngine, iscEngineListenerPF syncListener, isy_UINT32 syncListenerData);

Argumentos de la funcin La Tabla 157 lista los argumentos vlidos utilizados con la funcin iscEngineSetListener().
Tabla 157. Argumentos de iscEngineSetListener() Tipo de datos HISCENG iscEngineListenerPF isy_UINT32 Argumento hEngine syncListener syncListenerData Uso entrada entrada entrada Descripcin Descriptor de contexto para el motor de sincronizacin Direccin de la funcin de escucha definida por el usuario Datos que la aplicacin desea remitir a la funcin de escucha definida por el usuario

Uso Registrando una funcin de escucha definida por el usuario, la aplicacin tiene una vista en el proceso de sincronizacin. Se notifica a la aplicacin cuando se producen sucesos o errores durante la sincronizacin. La aplicacin puede personalizar mtodos para presentar estos sucesos o errores a los usuarios. Ejemplo:
// Se define la funcin syncListener con el prototipo siguiente: isy_INT32 mySyncListener( isy_UINT32 listenerData, ISCEVT* event, isy_VOID* pExtraInfo); ... // El descriptor de contexto para el motor de sincronizacin se pasa // a la funcin de escucha iscEngineSetListener(hEngine, mySyncListener, (isy_UINT32) hEngine);

Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_Failed : Otros casos

Consulta

335

Restricciones La funcin de escucha definida por el usuario debe seguir el protocolo del motor de sincronizacin o es posible que ste no funcione correctamente.

iscEngineListenerPF
Finalidad iscEngineListenerPF define el prototipo con que debe cumplir la funcin de escucha definida por el usuario registrada en iscEngineSetListener(). Sintaxis
typedef isy_INT32 (*iscEngineListenerPF)( isy_UINT32 listenerData, ISCEVT* event, isy_VOID* pExtraInfo);

Argumentos de la funcin La Tabla 158 lista los argumentos vlidos utilizados con el tipo de funcin iscEngineSetListenerPF.
Tabla 158. Argumentos de iscEngineListenerPF Tipo de datos isy_UINT32 Argumento listenerData Uso entrada Descripcin Los datos establecidos en el argumento syncListenerData por iscEngineSetListener() se devuelven a la funcin de escucha Objeto de suceso Reservado

ISCEVT* isy_VOID*

event pExtraInfo

entrada entrada

Uso Para utilizar una funcin de escucha definida por el usuario para supervisar el progreso de la sincronizacin, antes debe hacer que la funcin cumpla con el tipo de funcin iscEngineSetListenerPF. A continuacin, registre la funcin de escucha mediante la funcin iscEngineSetListener(). Luego, se notificar a la funcin de escucha cuando se produzcan sucesos de sincronizacin. El argumento event es una estructura que contiene informaciones diversas sobre el suceso. La Tabla 159 en la pgina 337 lista todos los campos de la estructura de sucesos y la finalidad de cada campo.

336

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 159. Campos de suceso de iscEngineListenerPF Campo type Descripcin El tipo de suceso puede ser uno de los valores siguientes (los valores reales aparecen entre parntesis): ISCEVTTYPE_Info (1) Informacin relativa al progreso de la sincronizacin. ISCEVTTYPE_Conflict (2) Operaciones conflictivas o rechazadas en el proceso de sincronizacin. ISCEVTTYPE_Query (3) Se necesita cierta informacin para que la sincronizacin pueda continuar. La aplicacin debe proporcionar cierta informacin necesaria (basada en el cdigo de suceso) para que el motor de sincronizacin pueda continuar. ISCEVTTYPE_Retry (4) Se produce una excepcin y se necesita una instruccin de reintento o cancelacin para continuar la sincronizacin. ISCEVTTYPE_Error (5) Se ha producido un error y el motor de sincronizacin no puede continuar sincronizando el conjunto de suscripcin. ISCEVTTYPE_Fatal (6) Se ha producido un error muy grave y el motor de sincronizacin no puede continuar sincronizando conjuntos de suscripcin. state Estado del suceso, que contiene los subcampos siguientes: currSubsSet Nombre del conjunto de suscripcin, si no est vaco. currSubs Nombre de la suscripcin, si no est vaco. subsType Tipo de la suscripcin, si es distinto de 0, ordenado del modo siguiente: v 100999 : Reservado v 10009999 : Tipo de suscripcin registrado v 10000+ : Tipo de suscripcin personalizado Los originadores predefinidos son (los valores reales aparecen entre parntesis): ISCSUBSTYPE_Config (100) : Configuracin ISCSUBSTYPE_File (101) : Suscripcin de archivo ISCSUBSTYPE_DB2e (102) : Suscripcin de tabla de DB2 Everyplace syncProg Progreso de la sincronizacin expresando en forma de porcentaje. retry info Nmero de reintentos del mismo suceso, si es distinto de 0. Informacin opcional especfica del suceso (si no es NULL), que es una matriz de argumentos de serie para los sucesos que no son conflictivos. Para los sucesos conflictivos, el tipo de datos es ISCLISTENCONFLICT.
Consulta

337

El campo event.info contiene cierta informacin opcional especfica del suceso. El cdigo de suceso se utiliza para identificar e interpretar esta informacin. La Tabla 160 lista todos los cdigos de suceso por categora de tipo de suceso.
Tabla 160. Cdigos de suceso de iscEngineListenerPF. Tipo de suceso: ISCEVTTYPE_Info Cdigo de suceso ISCEVT_InfGeneral (1000) ISCEVT_InfSyncStarted (1001) ISCEVT_InfPrepMsg (1002) ISCEVT_InfSendMsg (1003) ISCEVT_InfWaitMsg (1004) ISCEVT_InfApplyMsg (1005) ISCEVT_InfCancelingSync (1006) ISCEVT_InfSubsSetStarted (1007) ISCEVT_InfSyncingSubs (1008) ISCEVT_InfSubsSetFailed (1009) ISCEVT_InfSubsSetCanceled (1010) ISCEVT_InfSubsSetSucceeded (1011) ISCEVT_InfSyncSucceeded (1012) SCEVT_InfSyncFailed (1013) ISCEVT_InfSyncCanceled (1014) ISCEVT_InfSyncProg (1015) ISCEVT_InfNoNewChange (1016) ISCEVT_InfLoginFailed (1017) Inform. suceso (argc) NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL Descripcin Informacin general (para depuracin). Sincronizacin iniciada. Preparando mensaje. Enviando mensaje. En espera de respuesta del servidor. Aplicando mensaje del servidor. Cancelando sincronizacin. Iniciada la sincronizacin de un conjunto de suscripcin. Ha comenzado la sincronizacin de una suscripcin. La sincronizacin de un conjunto de suscripcin ha fallado. Se ha cancelado la sincronizacin de un conjunto de suscripcin. La sincronizacin de un conjunto de suscripcin ha finalizado satisfactoriamente. Sincronizacin satisfactoria. La sincronizacin (de algunos conjuntos de suscripcin) ha fallado. Sincronizacin cancelada (por el usuario). Progreso de la sincronizacin expresando en forma de porcentaje. No hay ningn cambio del servidor nuevo; saltarse las fases de extraccin y confirmacin. La informacin de inicio de sesin especificada supera el proceso de autentificacin.

Tabla 161. Cdigos de suceso de iscEngineListenerPF. Tipo de suceso: ISCEVTTYPE_Conflict Cdigo de suceso ISCEVT_CftReject (2000) Inform. suceso (argc) ISCLISTENCONFLICT Descripcin Se han encontrado conflictos de datos en la sincronizacin. Los datos conflictivos reales se representan en forma de estructura ISCLISTENCONFLICT y su puntero de referencia se devuelve a la aplicacin a travs de event.info.

Tabla 162. Cdigos de suceso de iscEngineListenerPF. Tipo de suceso: ISCEVTTYPE_Retry Cdigo de suceso ISCEVT_TryNetConn (4601) Inform. suceso (argc) NULL Descripcin No se ha podido conectar con el servidor, consulte si debe volver a intentarlo.

338

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 162. Cdigos de suceso de iscEngineListenerPF (continuacin). Tipo de suceso: ISCEVTTYPE_Retry Cdigo de suceso ISCEVT_TrySendRequest (4602) ISCEVT_TryRecvReply (4603) ISCEVT_TryRecvTimeout (4604) Inform. suceso (argc) NULL NULL NULL Descripcin No se han podido enviar peticiones al servidor, consulte si debe volver a intentarlo. No se han podido recibir respuestas del servidor, consulte si debe volver a intentarlo. Se ha excedido el tiempo de espera al recibir respuestas del servidor, consulte si debe volver a intentarlo. El servidor est ocupado, consulte si debe volver a intentarlo.

SCEVT_TryRecvAck (4605)

NULL

Tabla 163. Cdigos de suceso de iscEngineListenerPF. Tipo de suceso: ISCEVTTYPE_Query Cdigo de suceso ISCEVT_QueCancel (5000) Inform. suceso (argc) NULL Descripcin Consultar si el usuario cancela y vuelve (los valores reales aparecen entre parntesis): v ISCRTNCB_ReplyYes (3): Si el usuario cancela v ISCRTNCB_ReplyNo (2) : Si el usuario decide continuar v ISCRTNCB_Default (0) : Valor por omisin (es decir, ISCRTNCB_ReplyNo) ISCEVT_QueCancelUponError NULL (5001) Consultar si el usuario cancela y vuelve (los valores reales aparecen entre parntesis): v ISCRTNCB_ReplyYes (3): Si el usuario cancela v ISCRTNCB_ReplyNo (2) : Si el usuario decide continuar v ISCRTNCB_Default (0) : Valor por omisin (es decir, ISCRTNCB_ReplyNo) ISCEVT_QueLogin (5002) ISCLISTENARG(3) info->argv[0] info->argv[1] info->argv[2] Informacin de inicio de sesin solicitada por un adaptador. La funcin de escucha debe proporcionar la informacin solicitada en event_info y tiene que devolver ISCRTNCB_Done con el valor real (1). Nombre de destino de la fuente de datos Almacenamiento intermedio en blanco para contener el nombre de usuario Almacenamiento intermedio en blanco para contener la contrasea ISCEVT_QueSubsTarget (5003) ISCLISTENARG(1) info->argv[0] Informacin de base de datos solicitada por un adaptador. La funcin de escucha puede proporcionar la informacin solicitada en la informacin del suceso y devolver ISCRTNCB_Done o devolver ISCRTNCB_Default para utilizar el directorio de destino por omisin. Directorio para la suscripcin. Tabla 164. Cdigos de suceso de iscEngineListenerPF. Tipo de suceso: ISCEVTTYPE_Error Cdigo de suceso ISCEVT_ErrOpenAdapter (300) Inform. suceso (argc) NULL Descripcin No se ha podido abrir el adaptador <nombre adaptador>.

Consulta

339

Tabla 164. Cdigos de suceso de iscEngineListenerPF (continuacin). Tipo de suceso: ISCEVTTYPE_Error Cdigo de suceso ISCEVT_ErrLoadAdapter (301) ISCEVT_ErrCloseAdapter (302) ISCEVT_ErrAuthenticateKey (306) ISYNCEVT_ErrClientCryptoFailed (307) Inform. suceso (argc) NULL NULL NULL NULL Descripcin No se ha podido cargar el adaptador <nombre adaptador>. No se ha podido cerrar el adaptador <nombre adaptador>. El servidor no reconoce el formato del mensaje del cliente. Sync Client no ha podido cifrar satisfactoriamente el mensaje de salida o descifrar el mensaje recibido. No se dispone de cifrado. No se ha podido abrir la biblioteca de cifrado. El servidor no ha encontrado la suscripcin. El servidor ha bloqueado la suscripcin. Se ha modificado la definicin de la suscripcin desde la ltima vez que el motor de sincronizacin sincroniz la configuracin. No se han podido asignar recursos de adaptador. No se ha podido conectar con los datos de destino. No se ha podido desconectar de los datos de destino. No se han encontrado datos. Formato de mensaje inesperado. No se han encontrado los datos solicitados. Nombre de destino de la fuente de datos Nombre de los datos Fin de datos inesperado. Los datos son demasiado largos y se han truncado. Nombre de destino de la fuente de datos Nombre de los datos Nombre del elemento de datos (si no est vaco) ISCEVT_ErrSyncDisabled (417) ISCEVT_ErrServerException (418) ISCEVT_ErrReadOnly (420) NULL NULL ISCLISTENARG(2) info->argv[0] info->argv[1] ISCEVT_ErrOperation (421) ISCEVT_ErrUnauthorized (423) NULL NULL Se ha intentado transferir operaciones no permitidas al servidor. No se tiene autorizacin para acceder a los datos de destino. El servidor ha informado de que el usuario no est habilitado. El servidor ha informado de excepciones. Se ha intentado transferir cambios a datos de slo lectura.

ISCEVT_ErrEncryptNotAvail (308) ISCEVT_ErrEncryptLibOpen (309) ISCEVT_ErrSubsNotFound (311) ISCEVT_ErrSubsNotAvail (312) ISCEVT_ErrSubsDefAltered (316)

NULL NULL NULL NULL NULL

ISCEVT_ErrAllocResource (400) ISCEVT_ErrConnectData (401) ISCEVT_ErrDisconnectData (402) ISCEVT_ErrNoData (403) ISCEVT_ErrMessageFormat (412) ISCEVT_ErrNotFound (413)

NULL NULL NULL NULL NULL ISCLISTENARG(2) info->argv[0] info->argv[1]

ISCEVT_ErrEndOfData (414) ISCEVT_ErrDataTooLong (415)

NULL ISCLISTENARG(3) info->argv[0] info->argv[1] info->argv[2]

340

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 164. Cdigos de suceso de iscEngineListenerPF (continuacin). Tipo de suceso: ISCEVTTYPE_Error Cdigo de suceso ISCEVT_ErrNotAvailable (424) Inform. suceso (argc) ISCLISTENARG(2) info->argv[0] info->argv[1] ISCEVT_ErrNotSupported (425) ISCLISTENARG(3) info->argv[0] info->argv[1] info->argv[2] ISCEVT_ErrSubsTargetDir (426) NULL Descripcin Los datos solicitados no estn disponibles. Nombre de destino de la fuente de datos Nombre de los datos No se da soporte a los datos solicitados. Nombre de destino de la fuente de datos Nombre de los datos Nombre del elemento de datos (si no est vaco) La base de datos de destino (va de acceso) proporcionada en el suceso ISCEVT_QueSubsTarget no es vlida, por ejemplo, una va de acceso absoluta. No se ha podido cerrar la biblioteca de la red Falta de memoria. Se han producido otros errores internos. Estado del error (en forma de serie).

ISCRTN_ErrCloseNetLib (608) ISCEVT_ErrOutOfMemory (610) ISCEVT_ErrInternal (698)

NULL NULL ISCLISTENARG(1) info->argv[0]

Tabla 165. Cdigos de suceso de iscEngineListenerPF. Tipo de suceso: ISCEVTTYPE_Fatal Cdigo de suceso ISCEVT_FatSyncCfgAbort (303) ISCEVT_FatAuthenticateFailed (304) ISCEVT_FatIncompVersion (310) ISCEVT_FatInvalidSession (313) ISCEVT_FatSyncGroup (314) ISCEVT_FatRegisterDevice (315) ISCEVT_FatCreateImage (317) ISCEVT_FatNetOpenConn (600) ISCEVT_FatNetConnect(601) ISCEVT_FatNetSend(602) ISCEVT_FatNetReceive(603) ISCEVT_FatNetTimeout(604) ISCEVT_FatOpenNetLib (606) ISCEVT_FatResolveHost (609) ISCEVT_FatServerForbidden (611) Inform. suceso (argc) NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL Descripcin Ha fallado la sincronizacin de la configuracin; se cancela anormalmente la sincronizacin. Ha fallado la autentificacin; se cancela anormalmente la sincronizacin. Versin de cliente de sincronizacin incompatible. Se ha intentado sincronizar desde un cliente de copia de seguridad. El usuario no est asociado con ningn grupo con el privilegio de sincronizacin. No se ha podido registrar el dispositivo para el usuario. Se ha intentado crear una imagen del cliente sin un ID de dispositivo vlido No se ha podido abrir una conexin con el servidor. No se ha podido conectar con el servidor. No se han podido enviar mensajes al servidor. No se han podido recibir mensajes del servidor. Se ha excedido el tiempo de espera al recibir mensajes del servidor. No se ha podido cargar la biblioteca de la Red. No se ha podido resolver el nombre de sistema principal. Est prohibido sincronizar con el servidor.

Consulta

341

Tabla 165. Cdigos de suceso de iscEngineListenerPF (continuacin). Tipo de suceso: ISCEVTTYPE_Fatal Cdigo de suceso ISCEVT_FatServerNotFound (612) ISCEVT_FatServer (613) ISCEVT_FatServerNotAvail (614) ISCEVT_FatProtocolNotSupported (615) ISCEVT_FatServerBusy (616) ISCEVT_FatNetUnknown (699) Inform. suceso (argc) NULL NULL NULL NULL NULL NULL Descripcin No se ha encontrado el servidor Error del servidor. El servidor no est respondiendo. No se da soporte al protocolo especificado en el URL. Sync Server est ocupado. Error desconocido de la red.

Ejemplo:
isy_INT32 mySyncListener( isy_UINT32 listenerData, ISCEVT* event, isy_VOID* pExtraInfo) { char *statusMsg = appEventCodeToMessage(event); int timesRetried; switch (event->type) { case ISCEVTTYPE_Info: appStatusBar(statusMsg); // appStatusBar puede ser cualquier rutina que muestre el statusMsg // (por ejemplo, en una barra de estado) return ISCRTNCB_Done; case ISCEVTTYPE_Retry: timesRetried = event->retry; if (timesRetried >= 3) // Intentar como mximo 3 veces return ISCRTNCB_ReplyNo; else return appRetryCancelBox(statusMsg, 10); // tiempo de espera 10 seg // appRetryCancelBox puede ser cualquier rutina que muestre una ventana // con dos botones: Cancelar y Reintentar. Devuelve // ISCRTNCB_ReplyYes, si el usuario pulsa Reintentar // ISCRTNCB_ReplyNo, si el usuario pulsa Cancelar // Si el usuario no hace una seleccin, devuelve ISCRTNCB_Default. break; // todos los otros tipos de suceso no importan default: return ISCRTNCB_Default; } // switch (event->type) } // mySyncListener

Cdigos de retorno v ISCRTNCB_ReplyYes : El usuario responde S a la consulta. v ISCRTNCB_ReplyNo* : El usuario responde No a la consulta. v ISCRTNCB_Default : No hay respuesta; emprender la accin por omisin. Si el tipo de suceso es ISCEVTTYPE_Retry, la funcin de escucha devuelve uno de los cdigos siguientes: Si el tipo de suceso es ISCEVTTYPE_Query, el significado del cdigo de retorno depende del valor del cdigo del suceso. En otras palabras, la funcin de escucha comprueba el cdigo del suceso y devuelve el valor apropiado. Pero, si el usuario no responde a la consulta, la aplicacin devuelve el cdigo siguiente:

342

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

v ISCRTNCB_Default : No hay respuesta; emprender la accin por omisin. Para los tipos de suceso distintos de ISCEVTTYPE_Retry e ISCEVTTYPE_Query, el motor de sincronizacin ignora el cdigo de retorno. La funcin de escucha simplemente devuelve ISCRTNCB_Done. Nota: Para aquellos sucesos que no son de inters, la funcin de escucha simplemente devuelve ISCRTNCB_Default y permite que el motor de sincronizacin emprenda la accin por omisin. Nota: Un asterisco (*) encima indica la accin por omisin para diversos tipos de suceso. Restricciones La funcin de escucha definida por el usuario debe seguir el protocolo del motor de sincronizacin. En caso contrario, es posible que el motor de sincronizacin no funcione correctamente.

iscEngineSetPref()
Finalidad iscEngineSetPref() establece las preferencias del motor de sincronizacin. Sintaxis
isy_INT32 iscEngineSetPref( HISCENG hEngine, isy_CONST isy_INT32 prefID, isy_CONST isy_TCHAR *prefVal);

Argumentos de la funcin La Tabla 166 lista los argumentos vlidos utilizados con la funcin iscEngineSetPref().
Tabla 166. Argumentos de iscEngineSetPref() Tipo de datos HISCENG isy_CONST isy_INT32 Argumento hEngine prefID Uso Descripcin

entrada Descriptor de contexto para el motor de sincronizacin entrada ID de preferencia, que es uno de los valores siguientes: v ISCPREF_Timeout: Duracin del tiempo de espera para recibir mensajes v ISCPREF_Trace: Rastreo detallado.

Consulta

343

Tabla 166. Argumentos de iscEngineSetPref() (continuacin) Tipo de datos isy_CONST isy_TCHAR* Argumento prefVal Uso Descripcin

entrada Nuevo valor de preferencia que se debe establecer. Existen algunas constantes de preferencia predefinidas. Para la preferencia ISCPREF_Trace: v ISCCONST_TraceON: Activar el rastreo de depuracin detallado v ISCCONST_TraceOFF: Desactivar el rastreo de depuracin detallado Para la preferencia ISCPREF_Timeout: v ISCCONST_TimeoutNever: Nunca se excede del tiempo de espera mientras se espera la respuesta del servidor.

v ISCCONST_TimeoutMinimum: Duracin mnima del tiempo de espera

Uso Utilice iscEngineSetPref() para establecer las preferencias del motor de sincronizacin. Estas preferencias no son persistentes y se deben restablecer cada vez que se abre un nuevo descriptor de contexto para el motor de sincronizacin. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_UnknownID: Desconocido v ISCRTN_ValTooLong: La duracin del prefVal indicado es demasiado larga. v ISCRTN_Failed: Otros errores Restricciones Los valores de preferencia suministrados deben estar dentro de los lmites de preferencia especificados: v ISCPREF_Trace : 1 v ISCPREF_Timeout : 11 Las funciones iscEngineSetPref() y iscEngineGetPref() se han desaprobado. Utilice iscServiceOpenEx con las propiedades respectivas para los valores de rastreo y de tiempo de espera.

iscEngineGetPref()
Finalidad iscEngineGetPref() recupera el valor de preferencia actual.

344

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Sintaxis
isy_INT32 iscEngineGetPref( HISCENG hEngine, isy_CONST isy_INT32 prefID, isy_TCHAR *prefVal, isy_CONST isy_INT32 prefLen);

Argumentos de la funcin La Tabla 167 lista los argumentos vlidos utilizados con la funcin iscEngineGetPref().
Tabla 167. Argumentos de iscEngineGetPref() Tipo de datos HISCENG isy_CONST isy_INT32 Argumento hEngine prefID Uso entrada entrada Descripcin Descriptor de contexto para el motor de sincronizacin ID de preferencia, que es uno de los valores siguientes: v ISCPREF_Timeout: Duracin del tiempo de espera para recibir mensajes v ISCPREF_Trace: Rastreo detallado. isy_TCHAR* prefVal salida Puntero al almacenamiento intermedio para almacenar el valor de preferencia devuelto. Existen algunas constantes de preferencia predefinidas. Para la preferencia ISCPREF_Trace: v ISCCONST_TraceON: Activar el rastreo de depuracin detallado v ISCCONST_TraceOFF: Desactivar el rastreo de depuracin detallado Para la preferencia ISCPREF_Timeout: v ISCCONST_TimeoutNever: Nunca se excede del tiempo de espera mientras se espera la respuesta del servidor.

v ISCCONST_TimeoutMinimum: Duracin mnima del tiempo de espera isy_CONST isy_INT32 prefLen entrada Tamao del almacenamiento intermedio proporcionado (prefVal).

Uso Utilice iscEngineGetPref() para obtener el valor de preferencia (que es un valor por omisin o el valor establecido por iscEngineSetPref()) de un motor de sincronizacin. Cdigos de retorno v ISCRTN_Succeeded : Bien v ISCRTN_UnknownID : Se ha proporcionado un prefID desconocido v ISCRTN_ValTruncated : La longitud real del valor de preferencia es superior a prefLen.
Consulta

345

v SCRTN_Failed : Otros errores Restricciones El almacenamiento intermedio proporcionado debe ser suficientemente grande para almacenar los valores de las diversas preferencias: v ISCPREF_Trace : 1 v ISCPREF_Timeout : 11 v ISCPREF_CodePage: 15 Las funciones iscEngineSetPref() y iscEngineGetPref() se han desaprobado. Utilice iscServiceOpenEx con las propiedades respectivas para los valores de rastreo y de tiempo de espera.

iscEngineSync()
Finalidad iscEngineSync() inicia una sesin de sincronizacin. Sintaxis
isy_INT32 iscEngineSync( HISCENG hEngine);

Argumentos de la funcin La Tabla 168 lista el argumento vlido utilizado con la funcin iscEngineSync().
Tabla 168. Argumento de iscEngineSync() Tipo de datos HISCENG Argumento hEngine Uso entrada Descripcin Descriptor de contexto para el motor de sincronizacin

Uso Utilice iscEngineSync() para iniciar una sesin de sincronizacin que sincronice la configuracin especificada en iscEngineOpen(). Un conjunto de suscripcin est en modalidad de restablecimiento si nunca se ha sincronizado. Cuando el motor de sincronizacin realiza una sincronizacin de dicho conjunto de suscripcin, el cliente de sincronizacin capta los datos de Sync Server; este proceso se denomina renovacin. Una vez que finaliza la renovacin, el motor de sincronizacin sincroniza los datos cambiados cuando se vuelve a sincronizar el conjunto de suscripcin; este proceso se denomina sincronizacin. El motor de sincronizacin siempre sincroniza primero la configuracin. Si falla la sincronizacin de la configuracin, el motor de sincronizacin no sigue procesando los conjuntos de suscripcin posteriores y se detiene la sesin de sincronizacin. Si falla el motor de sincronizacin en un conjunto de suscripcin (pero no en la configuracin), el motor de sincronizacin sigue procesando los conjuntos de suscripcin restantes, si los hay. Cdigos de retorno v ISCRTN_Succeeded : La sincronizacin ha finalizado satisfactoriamente. v ISCRTN_Failed : La sincronizacin ha fallado. v ISCRTN_Canceled : Los usuarios han cancelado la sincronizacin.

346

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

El cdigo de retorno de iscEngineSync() es el conjunto (que sigue a la prioridad listada a continuacin) del estado de sincronizacin de todos los conjuntos de suscripcin que ha sincronizado: ISCRTN_Canceled > ISCRTN_Failed > ISCRTN_Succeeded Restricciones Libere todas las conexiones con todas las bases de datos implicadas antes de invocar la API de IBM Sync Client porque, durante la sincronizacin, el motor de sincronizacin abre una conexin exclusiva con la base de datos de destino. Durante la sincronizacin, los intentos de conexin con la base de datos que el motor de sincronizacin est utilizando fallarn.

iscEngineSyncConfig()
Finalidad iscEngineSyncConfig() inicia una sesin de sincronizacin que nicamente sincroniza la configuracin. Sintaxis
isy_INT32 iscEngineSyncConfig( HISCENG hEngine);

Argumentos de la funcin La Tabla 169 lista el argumento vlido utilizado con la funcin iscEngineSyncConfig().
Tabla 169. Argumento de iscEngineSyncConfig() Tipo de datos HISCENG Argumento hEngine Uso entrada Descripcin Descriptor de contexto para el motor de sincronizacin.

Uso Cuando cambia la configuracin en el servidor, iscEngineSyncConfig() actualiza la configuracin sin volver a sincronizar todos los conjuntos de suscripcin. Cdigos de retorno v ISCRTN_Succeeded : La sincronizacin ha finalizado satisfactoriamente. v ISCRTN_Failed : La sincronizacin ha fallado. v ISCRTN_Canceled : Los usuarios han cancelado la sincronizacin. Restricciones Ninguna.

JDBC
Visin general del soporte de JDBC de DB2 Everyplace
DB2 Everyplace soporta un subconjunto de los mtodos definidos en la especificacin de la API Java Database Connectivity (JDBC) que se proporciona en
Consulta

347

Sun Java Developers Kit. La informacin sobre los mtodos JDBC a los que DB2 Everyplace da soporte se modifica a partir de la documentacin de Java Development Kit Versin 1.4.1 de Sun. DB2 Everyplace tambin da soporte a las interfaces Connection y Statement ampliadas. Consulte los apartados Clase DB2eStatement en la pgina 350 y Clase DB2eConnection en la pgina 350 para obtener ms informacin. El paquete opcional de JDBC para CDC/Foundation Profile (JSR 169) se puede utilizar para ejecutar aplicaciones Java para DB2 Everyplace. No obstante, DB2 Everyplace no soporta todos los mtodos definidos en JSR 169 (por ejemplo, DB2 Everyplace no soporta el tipo CLOB, de modo que no soporta la interfaz Clob).

Lista de controladores JDBC por omisin


DB2 Everyplace incluye entradas por omisin para algunos controladores JDBC que ya estn configurados y listos para utilizar para acceder a fuentes de datos. Si utiliza uno de estos controladores, no es necesario que actualice la base de datos de control de DB2 Everyplace antes de crear una suscripcin JDBC en el Centro de administracin de dispositivos porttiles. Puede ver estos controladores en el Centro de administracin de dispositivos porttiles, en la ventana Crear suscripcin de JDBC o en la lista siguiente. Nota: DB2 Everyplace no incluye los controladores JDBC que se listan a continuacin. Asegrese de configurar el controlador que piense utilizar de acuerdo con la documentacin proporcionada con cada controlador. Los controladores listos para usar son los siguientes: v Para Informix, com.informix.jdbc.IfxDriver=Ifx v Para Oracle, oracle.jdbc.driver.OracleDriver=Oracle v Para SQL Server,com.microsoft.jdbc.sqlserver.SQLServerDriver=SQLServer v v v v v Para Para Para Para Base Sybase, com.sybase.jdbc.SybDriver=Syb Sybase, com.sybase.jdbc2.jdbc.SybDriver=Syb Lotus Domino, lotus.jdbc.domino.DominoDriver=Domino IBM Cloudscape Version 10, com.ibm.db2.jcc.DB2Driver=CS de datos AS/400 remota, com.ibm.as400.access.AS400JDBCDriver=DB2.

For AS\400: 1. Slo recibe soporte com.ibm.as400.access.AS400JDBCDriver. 2. El controlador JDBC de DB2 Connect no recibe soporte

Restricciones comunes para fuentes de datos JDBC


Restricciones comunes v Si la estructura de una tabla de una fuente de datos se modifica mediante una sentencia ALTER TABLE o una sentencia DELETE TABLE y una sentencia CREATE TABLE, lleve a cabo los pasos siguientes: 1. Elimine la tabla de todas las suscripciones. 2. Ejecute la sentencia ALTER TABLE o la sentencia DELETE TABLE y la sentencia CREATE TABLE. 3. Vuelva a aadir la tabla a las suscripciones.

348

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Estos pasos se deben llevar a cabo para garantizar que los activadores de captura de la fuente se puedan seguir utilizando. Por ejemplo, DB2 deja los activadores inutilizables cuando se ejecuta cualquier sentencia ALTER TABLE o DELETE TABLE. Es posible que los usuarios de la base de datos cliente de DB2 Everyplace sufran una degradacin del rendimiento en la modalidad de confirmacin automtica para las sentencias UPDATE, INSERT o DELETE. Como solucin provisional a este problema, se puede utilizar explcitamente la transaccin manual y agrupar varios cambios en una sola operacin de confirmacin. Para ADO.NET en el motor de base de datos: La recuperacin del conjunto de resultados utilizando un procedimiento almacenado remoto tiene una limitacin sobre el tamao del conjunto de resultados. Esta restriccin se eliminar en un futuro release Para los mtodos o propiedades que no estn soportados, se emitir una excepcin System.NotSupportedException. Cuando Sync Client realiza una sincronizacin a varias bases de datos de destino, el cifrado de la base de datos local est soportado cuando ms de una base de datos contiene tablas cifradas. El cliente IBM Cloudscape no soporta todas las caractersticas que el cliente DB2 Everyplace soporta. Por ejemplo, mltiples servidores, la ordenacin de conjuntos de suscripcin/suscripciones/tablas y el cifrado de datos locales no estn soportados. La caracterstica de mbito del filtro soporta referencias a mltiples tablas en la condicin de bsqueda.

v La integridad referencial no est soportada en las suscripciones de tabla de DataPropagator. v Para las suscripciones de tablas de DataPropagator, la duplicacin siempre se debe ejecutar en el servidor de bases de datos de rplica. Esto significa que si la duplicacin se debe realizar durante acciones administrativas, el Centro de administracin de dispositivos porttiles se debe ejecutar en el servidor de bases de datos de rplica. v Una suscripcin DPropR no puede utilizar la misma base de datos de rplica que una suscripcin JDBC. v Los nombres de objetos de base de datos que se tienen que incluir entre comillas dobles no se soportan. v En general, el tamao mximo de una fila de una tabla lo limita la fuente de datos. La adicin de la tabla a una suscripcin a JDBC o DataPropagator restringe an ms el tamao mximo de fila. La restriccin adicional sobre el tamao mximo de fila es de aproximadamente 125 bytes. v DB2 Everyplace Sync Server no sincroniza correctamente horas o indicaciones de la hora en formato de 24 horas debido a diferencias en la representacin del tiempo por parte de Java y de una fuente de datos. La hora 24:00:00, por ejemplo, se convierte en 00:00:00 y hace que los datos guardados en la base de datos porttil difieran de los datos guardados en la base de datos fuente. Siempre debe evitar el uso de una hora en este formato en sus aplicaciones. v Si aade una tabla a una suscripcin, sus nombres de esquemas, nombres de columnas y nombres de tablas fuente y de destino no pueden ser palabras clave, palabras reservadas ni registros especiales en SQL, DB2 o en la base de datos fuente que se utilice.

Consulta

349

Restricciones de integridad referencial Si las tablas fuente tienen restricciones de integridad referencial, observe las siguientes restricciones para evitar anomalas en la sincronizacin y en la duplicacin debidas a violaciones de restricciones de integridad referencial: v No actualice las claves primarias en la base de datos del cliente o en el dispositivo porttil. v No suscriba tablas que tengan relaciones padre-hijo que impliquen ciclos (por ejemplo, autobucles). v Durante la creacin de suscripciones, las tablas se deben aadir en orden de padre a hijo. v Las relaciones de integridad referencial no pueden cruzar los lmites de ninguna suscripcin. v No realice suscripciones a tablas que tengan activadores, a menos que las tablas sean el destino de una suscripcin de carga.

com.ibm.db2e.jdbc
Clase DB2eConnection: La clase DB2eConnection obtiene y establece determinados atributos de Connection. Para utilizar los mtodos de la clase DB2eConnection sobre un objeto Connection, antes se tiene que convertir el objeto Connection en un objeto DB2eConnection. Estos mtodos se implementan mediante llamadas a las funciones CLI/ODBC de SQLGetConnectAttr y SQLSetConnectAttr con los argumentos apropiados. paquete com.ibm.db2e.jdbc clase pblica DB2eConnection implanta Connection La tabla siguiente lista los mtodos de la clase DB2eConnection.
Tabla 170. Mtodos de la clase DB2eConnection Tipo de retorno del mtodo int Mtodo getLockTimeout()Devuelve el nmero de segundos que transcurrirn antes de que se exceda el tiempo de espera de una peticin de bloqueo. isEnabledFilenameFormat83() Devuelve el valor true si el motor de base de datos crea nombres de archivo en formato 8.3. Devuelve el valor false si crea nombres de archivo en formato largo. isEnabledIOWritethrough()Devuelve el valor true si el motor transfiere los cambios al disco inmediatamente. isEnabledSharedDatabaseAccess() Devuelve el valor true si la conexin permite el acceso compartido a tablas.

boolean

boolean boolean

Clase DB2eStatement: La clase DB2eStatement obtiene y establece determinados atributos de Statement. Para utilizar los mtodos de la clase DB2eStatement sobre un objeto Statement, antes se tiene que convertir el objeto Statement en un objeto DB2eStatement. Estos

350

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

mtodos se implementan mediante llamadas a las funciones CLI/ODBC de SQLGetStmtAttr y SQLSetStmtAttr con los argumentos apropiados. Consulte el apartado Resumen de funciones de DB2 CLI en la pgina 208 para obtener ms informacin. paquete com.ibm.db2e.jdbc clase pblica DB2eStatement implanta Statement La Tabla 171 lista los mtodos de la clase DB2eStatement.
Tabla 171. Mtodos de la clase DB2eStatement Tipo de retorno del mtodo void Mtodo enableDeletePhysicalRemove(boolean enable) Habilita o inhabilita la eliminacin fsica de registros, independientemente de los valores de sus bits de modificacin, en una sentencia DELETE SQL. enableDirtyBitSetByApplication(boolean enable) Habilita la modalidad de aplicacin si se cumple la habilitacin (enable es true). De lo contrario, habilita la modalidad de sistema. enableReadIncludeMarkedDelete (boolean enable) Hace que los registros suprimidos lgicamente resulten visibles o invisibles. enableReorg (boolean enable) Habilita o inhabilita la reorganizacin de bases de datos, por parte de DB2 Everyplace o explcitamente por parte del usuario mediante una sentencia REORG SQL. isEnabledDeletePhysicalRemove() Una sentencia de SQL eliminar fsicamente los registros, independientemente de los valores de sus bits de modificacin? O bien los registros slo se marcarn como suprimir (delete)? isEnabledDirtyBitSetByApplication() El sistema de base de datos est en modalidad de aplicacin? O est en modalidad de sistema? isEnabledReadIncludeMarkedDelete() Los registros suprimidos lgicamente resultan visibles desde sentencias de SQL? O estn ocultos para SQL? isEnabledReorg() Puede realizar DB2 Everyplace una reorganizacin de la base de datos o la debe efectuar explcitamente el usuario mediante una sentencia REORG SQL? O las sentencias REORG SQL estn restringidas y est inhabilitada la reorganizacin automtica de tablas de bases de datos creadas por el usuario?

void

void void

boolean

boolean boolean

boolean

En estos ejemplos, st representa un objeto Statement y rs representa un objeto ResultSet. Para eliminar fsicamente algunos registros de la tabla T ignorando el estado de los bits de modificacin:
DB2eStatement db2e_st = (DB2eStatement) st; db2e_st.enableDeletePhysicalRemove(true); st.executeUpdate("DELETE FROM T WHERE X<>0");

Consulta

351

Para leer todos los registros de la tabla T que tengan establecido el bit de modificacin, incluyendo aquellos que lo tienen marcado como DELETE:
DB2eStatement db2e_st = (DB2eStatement) st; db2e_st.enableReadIncludeMarkedDelete(true); rs = st.executeQuery("SELECT * FROM T WHERE $dirty<>0");

Para limpiar el bit de modificacin de un registro de la tabla T:


DB2eStatement db2e_st = (DB2eStatement) st; db2e_st.enableDirtyBitSetByApplication(true); st.executeUpdate("UPDATE T SET $dirty=0 WHERE $dirty>0");

java.sql
Interfaz Blob: La interfaz Blob representa (correlaciona) un BLOB de SQL en el lenguaje de programacin Java. Un BLOB de SQL es un tipo incorporado que almacena un objeto grande binario como valor de columna en una fila de una tabla de base de datos. Un objeto BLOB es vlido mientras dura la transaccin en que se ha creado. Los mtodos de las interfaces ResultSet y PreparedStatement, como por ejemplo getBlob y setBlob, permite que un programador acceda al BLOB de SQL. La interfaz Blob proporciona mtodos para obtener la longitud del valor de un BLOB (objeto grande binario) de SQL y para materializar el valor de un BLOB en el cliente. paquete java.sql interfaz pblica Blob La Tabla 172 lista los mtodos de la interfaz Blob a los que DB2 Everyplace da soporte.
Tabla 172. Mtodos de la interfaz Blob Tipo de valor de retorno del mtodo InputStream byte[] Mtodo getBinaryStream() Recupera el BLOB designado por esta instancia BLOB en forma de corriente. getBytes(long pos, int length) Devuelve, en forma de matriz de bytes, parte del valor del BLOB que este objeto BLOB designa o todo el mencionado valor. length()Devuelve el nmero de bytes del valor de BLOB designado por este objeto BLOB.

long

Interfaz CallableStatement: La interfaz utilizada para ejecutar procedimientos almacenados SQL remotos. El parmetro de resultados debe registrarse como parmetro OUT. Los dems parmetros pueden utilizarse para la entrada, la salida o para ambos. A los parmetros se les hace referencia de modo secuencial, por nmero. El primer parmetro es 1. Consulte el apartado Adaptador de consultas y procedimientos almacenados remotos en la pgina 72 para obtener ms detalles.

352

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

call <nombre-procedimiento> (?,?, ...) Los valores del parmetro IN se establecen utilizando los mtodos de definicin heredados de PreparedStatement. El tipo de todos los parmetros OUT deben registrarse antes de ejecutar el procedimiento almacenado; sus valores se recuperan despus de la ejecucin por medio de los mtodos get que se proporcionan en este punto. El tamao del parmetro de salida se limita a 4K bytes. CallableStatement puede devolver un ResultSet. paquete java.sql interfaz pblica CallableStatement ampla PreparedStatement La Tabla 173 lista los mtodos de la interfaz CallableStatement a los que DB2 Everyplace da soporte.
Tabla 173. Mtodos de la interfaz CallableStatement Tipo de valor de retorno del mtodo Blob byte[] Mtodo getBlob(int i) JDBC 2.0 Obtiene el valor de un parmetro BLOB de JDBC en forma de objeto Blob en el lenguaje de programacin Java. getBytes(int parameterIndex) Obtiene el valor de un parmetro BINARY o VARBINARY de JDBC como matriz de valores byte en el lenguaje de programacin de Java. getDate(int parameterIndex) Obtiene el valor de un parmetro DATE de JDBC en forma de objeto java.sql.Date. getInt(int parameterIndex) Obtiene el valor de un parmetro INTEGER de JDBC en forma de int en el lenguaje de programacin de Java. getObject(int parameterIndex) Obtiene el valor de un parmetro en forma de object en el lenguaje de programacin de Java. getShort(int parameterIndex) Obtiene el valor de un parmetro SMALLINT de JDBC en forma de short en el lenguaje de programacin de Java. getString(int parameterIndex) Recupera el valor de un parmetro CHAR, VARCHAR o LONGVARCHAR de JDBC en forma de String en el lenguaje de programacin de Java. getTime(int parameterIndex) Obtiene el valor de un parmetro TIME de JDBC en forma de objeto java.sql.Time. getTimestamp(int parameterIndex) Obtiene el valor de un parmetro TIMESTAMP de JDBC en forma de objeto java.sql.Timestamp. registerOutParameter(int parameterIndex, int sqlType) Registra el parmetro OUT en la posicin ordinal parameterIndex para el tipo de JDBC sqlType. wasNull() Indica si el ltimo parmetro OUT ledo tena o no el valor NULL de SQL.

Date int

Object short

String

Time Timestamp void

boolean

Interfaz Connection:

Consulta

353

La interfaz Connection establece una conexin (sesin) con una base de datos especfica. En el contexto de una conexin, se ejecutan sentencias de SQL y se devuelven resultados. Una base de datos de Connection puede proporcionar informacin que describe sus tablas, su gramtica de SQL soportada, sus procedimientos almacenados, las posibilidades de esta conexin, etc. Esta informacin se obtiene mediante el mtodo getMetaData. paquete java.sql interfaz pblica Connection La Tabla 174 lista los mtodos de la interfaz Connection a los que DB2 Everyplace da soporte.
Tabla 174. Mtodos de la interfaz Connection Tipo de valor de retorno del mtodo void Mtodo clearWarnings() Borra todos los avisos de los que se ha informado para este objeto Connection. void close() Libera una base de datos de Connection y los recursos de JDBC de modo inmediato en vez de esperar que se liberen de modo automtico. void commit() Hace que los cambios realizados desde la ltima operacin de confirmacin o cancelacin sean permanentes y libera los bloqueos de base de datos mantenidos actualmente por Connection. Statement createStatement() Crea un objeto Statement para enviar sentencias de SQL a la base de datos. Statement createStatement( int resultSetType, int resultSetConcurrency) JDBC 2.0. Crea un objeto Statement que generar objetos ResultSet con el tipo y la simultaneidad indicados. boolean isClosed() Comprueba si una conexin (Connection) est cerrada. boolean getAutoCommit() Recupera la modalidad de confirmacin automtica correspondiente a este objeto Connection. DatabaseMetaData getMetaData() Obtiene los metadatos correspondientes a la base de datos de este objeto Connection. int getTransactionIsolation() Obtiene el nivel de aislamiento de transaccin de este objeto Connection.

354

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 174. Mtodos de la interfaz Connection (continuacin) Tipo de valor de retorno del mtodo SQLWarning Mtodo getWarnings() Devuelve el primer aviso notificado por llamadas a este objeto Connection. CallableStatement prepareCall(String sql) Crea un objeto CallableStatement para llamar a procedimientos almacenados de base de datos. PreparedStatement prepareStatement(String sql) Crea un objeto PreparedStatement para enviar sentencias de SQL parametrizadas a la base de datos. PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) JDBC 2.0. Crea un objeto PreparedStatement que generar objetos ResultSet con el tipo y la simultaneidad indicados. void rollback() Elimina los cambios hechos desde la ltima operacin de confirmacin o cancelacin y libera los bloqueos de base de datos mantenidos actualmente por este objeto Connection. void setAutoCommit(boolean autoCommit) Establece la modalidad de confirmacin automtica de este objeto Connection. void setTransactionIsolation(int level) Intenta cambiar el nivel de aislamiento de transaccin de este objeto Connection.

Interfaz DatabaseMetaData: La interfaz DatabaseMetaData proporciona informacin amplia sobre la base de datos como un todo. Algunos de estos mtodos toman argumentos String para los nombres de catlogo y de esquema. DB2 Everyplace pasa por alto estos argumentos. Algunos de los mtodos aqu contenidos devuelven listas de informacin en forma de objetos ResultSet. Puede utilizar los mtodos ResultSet normales, como por ejemplo getString y getInt, para recuperar los datos de estos ResultSets. Si no se dispone de un formulario de metadatos determinado, estos mtodos emitirn una SQLException. paquete java.sql interfaz pblica DatabaseMetaData La Tabla 175 en la pgina 356 lista los campos de la interfaz DatabaseMetaData a los que DB2 Everyplace da soporte.
Consulta

355

Tabla 175. Campos de DatabaseMetaData Tipo de campo static int Campo columnNoNulls Indica que es posible que la columna no admita valores nulos (NULL). static int columnNullable Indica que la columna permite definitivamente valores nulos (NULL). static int columnNullableUnknown Indica que la anulacin de columnas es desconocida.

La Tabla 176 lista los mtodos de la interfaz DatabaseMetaData a los que DB2 Everyplace da soporte.
Tabla 176. Mtodos de la interfaz DatabaseMetaData Tipo de valor de retorno del mtodo boolean Mtodo allProceduresAreCallable() Puede el usuario actual llamar a todos los procedimientos devueltos por el mtodo getProcedures? boolean allTablesAreSelectable() Puede el usuario actual utilizar todas las tablas devueltas por el mtodo getTables en una sentencia SELECT? boolean dataDefinitionCausesTransactionCommit() Puede una sentencia de definicin de datos de una transaccin forzar la confirmacin de la transaccin? boolean dataDefinitionIgnoredInTransactions() Pasa por alto esta base de datos una sentencia de definicin de datos de una transaccin? boolean deletesAreDetected(int type) Se puede detectar la supresin de una fila visible llamando al mtodo ResultSet.rowDeleted? boolean doesMaxRowSizeIncludeBlobs() Incluye el valor de retorno del mtodo getMaxRowSize los tipos de datos SQL LONGVARCHAR y LONGVARBINARY? String getCatalogSeparator() Obtiene el objeto String que esta base de datos utiliza como separador entre un catlogo y un nombre de tabla. ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) Obtiene una descripcin de las columnas de tabla disponibles en el catlogo especificado. El objeto ResultSet que este mtodo devuelve se basa en la especificacin JDK 1.3 y tiene 18 columnas.

356

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 176. Mtodos de la interfaz DatabaseMetaData (continuacin) Tipo de valor de retorno del mtodo Connection Mtodo getConnection() JDBC 2.0 Obtiene la conexin que ha producido este objeto de metadatos. ResultSet getCrossReference(String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable) Obtiene una descripcin de las columnas de clave fornea de la tabla de claves forneas que hace referencia a las columnas de clave primaria de la tabla de claves primarias (describe cmo una tabla importa la clave de otra). Normalmente, debe devolver un solo par de clave fornea/clave primaria (la mayora de tablas nicamente importan una clave fornea de una tabla una vez.) Estn ordenadas por FKTABLE_NAME y KEY_SEQ. int getDatabaseMajorVersion() JDBC 3.0 Obtiene el nmero de versin mayor de la base de datos. int getDatabaseMinorVersion() JDBC 3.0 Obtiene el nmero de versin menor de la base de datos. String getDatabaseProductName() Obtiene el nombre de este producto de base de datos. String getDatabaseProductVersion() Obtiene la versin de este producto de base de datos. int getDefaultTransactionIsolation() Obtiene el nivel de aislamiento de transaccin por omisin de la base de datos. int getDriverMajorVersion() Obtiene el nmero de versin mayor del controlador JDBC. int getDriverMinorVersion() Obtiene el nmero de versin menor del controlador JDBC. String getDriverName() Obtiene el nombre de este controlador JDBC. String getDriverVersion() Obtiene la versin de este controlador JDBC. String getIdentifierQuoteString() Obtiene la serie utilizada para citar los identificadores de SQL. Devuelve un espacio si no se soporta el entrecomillado de identificadores. ResultSet getImportedKeys(String catalog, String schema, String table) Obtiene una descripcin de las columnas de clave primaria a las que hacen referencia las columnas de clave fornea de una tabla (las claves primarias importadas por una tabla).

Consulta

357

Tabla 176. Mtodos de la interfaz DatabaseMetaData (continuacin) Tipo de valor de retorno del mtodo ResultSet Mtodo getExportedKeys(String catalog, String schema, String table) Obtiene una descripcin de las columnas de clave fornea que hacen referencia a las columnas de clave primaria de una tabla (las claves forneas exportadas por una tabla). int getJDBCMajorVersion() JDBC 3.0 Obtiene el nmero de versin mayor del controlador JDBC. int getJDBCMinorVersion() JDBC 3.0 Obtiene el nmero de versin menor del controlador JDBC. int getMaxBinaryLiteralLength() Obtiene la cantidad mxima de caracteres hexadecimales de un literal binario en lnea. int getMaxCatalogNameLength Obtiene el nmero mximo de caracteres de un nombre de catlogo. int getMaxCharLiteralLength() Obtiene la longitud mxima para un literal de tipo carcter. int getMaxColumnNameLength() Obtiene el lmite de longitud del nombre de una columna. int getMaxColumnsInGroupBy() Obtiene el nmero mximo de columnas en una clusula GROUP BY. int getMaxColumnsInIndex() Obtiene el nmero mximo de columnas permitidas en un ndice. int getMaxColumnsInOrderBy() Obtiene el nmero mximo de columnas en una clusula ORDER BY. int getMaxColumnsInSelect() Obtiene el nmero mximo de columnas en una sentencia SELECT. int getMaxColumnsInTable Obtiene el nmero mximo de columnas que esta base de datos permite en una tabla. int getMaxConnections() Obtiene la cantidad mxima de conexiones de esta base de datos que pueden estar activas a la vez. int getMaxCursorNameLength Obtiene el nmero mximo de caracteres que esta base de datos permite en un nombre de cursor. int getMaxIndexLength() Obtiene la longitud mxima de un ndice (en bytes).

358

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 176. Mtodos de la interfaz DatabaseMetaData (continuacin) Tipo de valor de retorno del mtodo int Mtodo getMaxProcedureNameLength Obtiene el nmero mximo de caracteres que esta base de datos permite en un nombre de procedimiento. int getMaxRowSize() Obtiene la longitud mxima de una sola fila. int getMaxSchemaNameLength Obtiene el nmero mximo de caracteres que esta base de datos permite en un nombre de esquema. int getMaxStatementLength() Obtiene la longitud mxima de una sentencia de SQL. int getMaxStatements() Obtiene la cantidad mxima de sentencias activas que se pueden abrir a la vez en esta base de datos. int getMaxTableNameLength() Obtiene la longitud mxima de un nombre de tabla. int getMaxTablesInSelect() Obtiene el nmero mximo de tablas en una sentencia SELECT. int getMaxUserNameLength() Cul es la longitud mxima de un nombre de usuario? ResultSet getPrimaryKeys(String catalog, String schema, String table) Obtiene una descripcin de las columnas de clave primaria de una tabla. int getResultSetHoldability JDBC 3.0 Cul es la retenibilidad por omisin de este objeto ResultSet? String getSearchStringEscape() Obtiene la serie que se puede utilizar para los caracteres comodn de escape. int getSQLStateType() JDBC 3.0 Devuelve un valor para indicar si el SQLSTATE devuelto por SQLException.getSQLState es X/Open (ahora se conoce como Open Group) SQL CLI o SQL99. ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) Obtiene una descripcin de las tablas disponibles en un catlogo. El objeto ResultSet que este mtodo devuelve se basa en la especificacin JDK 1.3 y tiene 5 columnas. String getURL() Obtiene el URL de esta base de datos.

Consulta

359

Tabla 176. Mtodos de la interfaz DatabaseMetaData (continuacin) Tipo de valor de retorno del mtodo String Mtodo getUserName() Obtiene el nombre de usuario tal como lo conoce la base de datos. boolean insertsAreDetected(int type) Se puede detectar la insercin de una fila visible llamando al mtodo ResultSet.rowInserted? boolean isCatalogAtStart() Aparece un catlogo al principio de un nombre de tabla totalmente calificado? boolean isReadOnly() Esta base de datos est en modalidad de slo lectura? boolean nullPlusNonNullIsNull() Da soporte esta base de datos a concatenaciones entre valores NULL y no NULL siendo NULL? boolean nullsAreSortedAtEnd() Se clasifican los valores NULL al final independientemente del orden de clasificacin? boolean nullsAreSortedAtStart() Se clasifican los valores NULL al principio independientemente del orden de clasificacin? boolean nullsAreSortedHigh() Se clasifican los valores NULL por lo alto? boolean nullsAreSortedLow() Se clasifican los valores NULL por lo bajo? boolean othersDeletesAreVisible(int type) Resultan visibles las supresiones realizadas por otros? boolean othersInsertsAreVisible(int type) Resultan visibles las actualizaciones realizadas por otros? boolean othersUpdatesAreVisible(int type) Resultan visibles las supresiones realizadas por otros? boolean ownDeletesAreVisible(int type) Resultan visibles las supresiones propias de un conjunto de resultados? boolean ownInsertsAreVisible(int type) Resultan visibles las inserciones propias de un conjunto de resultados? boolean ownUpdatesAreVisible(int type) Resultan visibles las actualizaciones propias de un conjunto de resultados?

360

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 176. Mtodos de la interfaz DatabaseMetaData (continuacin) Tipo de valor de retorno del mtodo boolean Mtodo storesLowerCaseIdentifiers() Esta base de datos trata los identificadores de SQL no entrecomillados que utilizan una combinacin de maysculas y minsculas como si no fueran sensibles a las maysculas y minsculas y los almacena en minsculas? boolean storesLowerCaseQuotedIdentifiers() Esta base de datos trata los identificadores de SQL entrecomillados que utilizan una combinacin de maysculas y minsculas como si no fueran sensibles a las maysculas y minsculas y los almacena en minsculas? boolean storesMixedCaseIdentifiers() Esta base de datos trata los identificadores de SQL no entrecomillados que utilizan una combinacin de maysculas y minsculas como si no fueran sensibles a las maysculas y minsculas y los almacena en una combinacin de maysculas y minsculas? boolean storesMixedCaseQuotedIdentifiers() Esta base de datos trata los identificadores de SQL entrecomillados que utilizan una combinacin de maysculas y minsculas como si no fueran sensibles a las maysculas y minsculas y los almacena en una combinacin de maysculas y minsculas? boolean storesUpperCaseIdentifiers() Esta base de datos trata los identificadores de SQL no entrecomillados que utilizan una combinacin de maysculas y minsculas como si no fueran sensibles a las maysculas y minsculas y los almacena en maysculas? boolean storesUpperCaseQuotedIdentifiers() Esta base de datos trata los identificadores de SQL entrecomillados que utilizan una combinacin de maysculas y minsculas como si no fueran sensibles a las maysculas y minsculas y los almacena en maysculas? boolean supportsAlterTableWithAddColumn() Da soporte esta base de datos a ALTER TABLE con adicin de columnas? boolean supportsAlterTableWithDropColumn() Da soporte esta base de datos a ALTER TABLE con descarte de columnas? boolean supportsANSI92EntryLevelSQL() Da soporte esta base de datos a la gramtica de SQL de nivel de entrada ANSI92? boolean supportsANSI92FullSQL() Da soporte esta base de datos a la gramtica de SQL ANSI92 intermedia?

Consulta

361

Tabla 176. Mtodos de la interfaz DatabaseMetaData (continuacin) Tipo de valor de retorno del mtodo boolean Mtodo supportsANSI92IntermediateSQL() Da soporte esta base de datos a la gramtica de SQL ANSI92 completa? boolean supportsBatchUpdates() Da soporte esta base de datos a las actualizaciones de proceso por lotes? boolean supportsCatalogsInDataManipulation() Puede utilizarse un nombre de catlogo en una sentencia de manipulacin de datos? boolean supportsCatalogsInIndexDefinitions() Puede utilizarse un nombre de catlogo en una sentencia de definicin de ndices? boolean supportsCatalogsInPrivilegeDefinitions() Puede utilizarse un nombre de catlogo en una sentencia de definicin de privilegios? boolean supportsCatalogsInProcedureCalls() Puede utilizarse un nombre de catlogo en una sentencia de llamada a un procedimiento? boolean supportsColumnAliasing() Devuelve el valor true si se soporta la creacin de alias de columnas. boolean supportsCatalogsInTableDefinitions() Puede utilizarse un nombre de catlogo en una sentencia de definicin de tablas? boolean supportsConvert( ) Da soporte esta base de datos a la funcin CONVERT? boolean supportsConvert(int fromType, int toType) Da soporte esta base de datos a la funcin CONVERT para dos tipos de SQL especificados? boolean supportsCoreSQLGrammar() Da soporte esta base de datos a la gramtica de SQL bsica para ODBC? boolean supportsCorrelatedSubqueries() Da soporte esta base de datos a las subconsultas correlacionadas? boolean supportsDataDefinitionAndDataManipulationTransactions() Da soporte esta base de datos tanto a las sentencias de definicin de datos como a las de manipulacin de datos en una transaccin?

362

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 176. Mtodos de la interfaz DatabaseMetaData (continuacin) Tipo de valor de retorno del mtodo boolean Mtodo supportsDataManipulationTransactionsOnly() Esta base de datos soporta slo las sentencias de manipulacin de datos en una transaccin? boolean supportsDifferentTableCorrelationNames() Cuando se soportan nombres de correlacin de tablas, deben ser distintos a los nombres de las tablas? boolean supportsExpressionsInOrderBy Da soporte esta base de datos a expresiones en listas ORDER BY? boolean supportsExtendedSQLGrammar() Da soporte esta base de datos a la gramtica de SQL ampliada para ODBC? boolean supportsFullOuterJoins() Devuelve el valor true si las uniones externas anidadas completas estn soportadas. boolean supportsGetGeneratedKeys() JDBC 3.0 Se pueden recuperar claves generadas despus de haber ejecutado una sentencia? boolean supportsGroupBy() Da soporte esta base de datos a la clusula GROUP BY? boolean supportsGroupByBeyondSelect() Permite esta base de datos una clusula GROUP BY que incluya columnas no incluidas en la sentencia SELECT si todas las columnas de la sentencia SELECT estn incluidas en la clusula GROUP BY? boolean supportsGroupByUnrelated() Permite esta base de datos una clusula GROUP BY que incluya una columna que no est en la sentencia SELECT? boolean supportsIntegrityEnhancementFacility() Da soporte esta base de datos a SQL Integrity Enhancement Facility (Recurso de mejora de la integridad de SQL)? boolean supportsLikeEscapeClause() Da soporte esta base de datos a la especificacin de una clusula de escape LIKE? boolean supportsLimitedOuterJoins() Proporciona esta base de datos soporte limitado para las uniones externas? boolean supportsMinimumSQLGrammar() Da soporte esta base de datos a la gramtica de SQL mnima para ODBC?

Consulta

363

Tabla 176. Mtodos de la interfaz DatabaseMetaData (continuacin) Tipo de valor de retorno del mtodo boolean Mtodo supportsMixedCaseIdentifiers() Devuelve el valor true si la base de datos trata los identificadores de SQL no entrecomillados que utilizan una combinacin de maysculas y minsculas como si fueran sensibles a las maysculas y minsculas y los almacena en una combinacin de maysculas y minsculas. boolean supportsMixedCaseQuotedIdentifiers() Devuelve el valor true si la base de datos trata los identificadores de SQL entrecomillados que utilizan una combinacin de maysculas y minsculas como si fueran sensibles a las maysculas y minsculas y los almacena en una combinacin de maysculas y minsculas. boolean supportsMultipleOpenResultSets() JDBC 3.0 Puede un objeto CallableStatement devolver varios objetos ResultSet simultneamente? boolean supportsMultipleResultSets() Da soporte esta base de datos a la obtencin de varios objetos ResultSet de una sola llamada al mtodo execute? boolean supportsMultipleTransactions() Permite esta base de datos que haya varias transacciones abiertas al mismo tiempo en distintas conexiones? boolean supportsNamedParameters() JDBC 3.0 Da soporte esta base de datos a los parmetros con nombre para las sentencias invocables? boolean supportsNonNullableColumns() Devuelve el valor true si se pueden definir columnas como no nulas. boolean supportsOpenCursorsAcrossCommit() Devuelve el valor si la base de datos permite mantener cursores abiertos entre confirmaciones; de lo contrario, devuelve el valor false. boolean supportsOpenCursorsAcrossRollback() Permite esta base de datos mantener cursores abiertos entre retrotracciones? boolean supportsOpenStatementsAcrossCommit() Permite esta base de datos mantener sentencias abiertas entre confirmaciones? boolean supportsOpenStatementsAcrossRollback() Permite esta base de datos mantener sentencias abiertas entre retrotracciones? boolean supportsOrderByUnrelated() Devuelve el valor true si una clusula ORDER BY puede utilizar columnas que no estn en la sentencia SELECT.

364

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 176. Mtodos de la interfaz DatabaseMetaData (continuacin) Tipo de valor de retorno del mtodo boolean Mtodo supportsOuterJoins() Devuelve el valor true si se soporta alguna forma de unin externa. boolean supportsPositionedDelete() Devuelve el valor true si se da soporte a una sentencia DELETE posicionada. boolean supportsPositionedUpdate() Devuelve el valor true si se da soporte a una sentencia UPDATE posicionada. boolean supportsResultSetConcurrency(int type, int concurrency) Da soporte esta base de datos a un tipo de simultaneidad especificado en combinacin con un tipo de conjunto de resultados especificado? boolean supportsResultSetHoldability(int holdability) JDBC 3.0 Da soporte esta base de datos a la retenibilidad del conjunto de resultados especificado? boolean supportsResultSetType(int type) JDBC 2.0 Devuelve el valor true si la base de datos soporta el tipo de conjunto de resultados especificado. boolean supportsSavepoints() JDBC 3.0 Da soporte esta base de datos a los puntos de guardar? boolean supportsSchemasInDataManipulation() Puede utilizarse un nombre de esquema en una sentencia de manipulacin de datos? boolean supportsSchemasInIndexDefinitions() Puede utilizarse un nombre de esquema en una sentencia de definicin de ndices? boolean supportsSchemasInPrivilegeDefinitions() Puede utilizarse un nombre de esquema en la definicin de privilegios? boolean supportsSchemasInProcedureCalls() Puede utilizarse un nombre de esquema en una llamada a un procedimiento? boolean supportsSchemasInTableDefinitions() Devuelve el valor true si el nombre de esquema se puede utilizar en una sentencia de definicin de tablas. boolean supportsSelectForUpdate() Da soporte esta base de datos a las sentencias SELECT FOR UPDATE?

Consulta

365

Tabla 176. Mtodos de la interfaz DatabaseMetaData (continuacin) Tipo de valor de retorno del mtodo boolean Mtodo supportsStatementPooling() JDBC 3.0 Da soporte esta base de datos a la agrupacin de sentencias? boolean supportsStoredProcedures() Da soporte esta base de datos a las llamadas a procedimientos almacenados que utilicen la sintaxis de escape del procedimiento almacenado? boolean supportsSubqueriesInComparisons() Da soporte esta base de datos a las subconsultas en expresiones de comparacin? boolean supportsSubqueriesInExists() Da soporte esta base de datos a las subconsultas en expresiones EXISTS? boolean supportsSubqueriesInIns() Da soporte esta base de datos a las subconsultas en expresiones IN? boolean supportsSubqueriesInQuantifieds() Da soporte esta base de datos a las subconsultas en expresiones cuantificadas? boolean supportsTableCorrelationNames() Da soporte esta base de datos a los nombres de correlacin de tablas? boolean supportsTransactions() Devuelve el valor true si las transacciones estn soportadas. De no ser as, el nivel de aislamiento es TRANSACTION_NONE. boolean supportsTransactionIsolationLevel(int level) Devuelve el valor true si la base de datos soporta el nivel de aislamiento de transaccin especificado en nivel. boolean supportsUnion() Da soporte esta base de datos a SQL UNION? boolean supportsUnionAll() Da soporte esta base de datos a SQL UNION ALL? boolean updatesAreDetected(int type) Se puede detectar la actualizacin de una fila visible llamando al mtodo ResultSet.rowUpdated? boolean usesLocalFilePerTable() Utiliza esta base de datos una fila para cada tabla? boolean usesLocalFiles() Almacena esta base de datos las tablas en un archivo local?

366

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Interfaz Driver: La interfaz Driver es la infraestructura de Java SQL que admite varios controladores de base de datos. Cuando se cargue una clase Driver, debera crearse una instancia de s misma y registrarse con el DriverManager. Esto significa que un usuario puede cargar y registrar el controlador JDBC de DB2 Everyplace llamando a: Class.forName("com.ibm.db2e.jdbc.DB2eDriver") paquete java.sql interfaz pblica Driver La Tabla 177 lista los mtodos de la interfaz Driver a los que DB2 Everyplace da soporte.
Tabla 177. Mtodos de la interfaz Driver Tipo de valor de retorno del mtodo boolean Connection Mtodo acceptsURL(String url) Devuelve el valor true si el controlador considera que puede abrir una conexin con el URL indicado. connect(String url, java.util.Hashtable info) Mtodo sobrecargado de DB2 Everyplace para las configuraciones de bibliotecas de clases que no soportan java.util.Properties. Vase connect(String url, Properties info) para conocer los pares de clave/valor soportados.

Consulta

367

Tabla 177. Mtodos de la interfaz Driver (continuacin) Tipo de valor de retorno del mtodo Connection Mtodo connect(String url, Properties info) Intenta crear una conexin de base de datos con el URL indicado. Se puede utilizar el argumento java.util.Properties para pasar pares arbitrarios de cdigo/valor de serie como argumentos de conexin. DB2 Everyplace soporta los pares siguientes de clave y valor especficos del controlador: v Clave: DB2e_ENCODING Valor: codificacin de caracteres Restriccin: No recibe soporte en Palm OS. v Clave: ENABLE_DELETE_PHYSICAL_REMOVE Valor: TRUE, FALSE Valor por omisin: FALSE v Clave: ENABLE_DIRTY_BIT_SET_BY_APPLICATION Valor: TRUE, FALSE Valor por omisin: FALSE v Clave: ENABLE_FILENAME_FORMAT_83 Valor: TRUE, FALSE Valor por omisin: FALSE v Clave: ENABLE_READ_INCLUDE_MARKED_DELETE Valor: TRUE, FALSE Valor por omisin: FALSE v Clave: ENABLE_REORG Valor: TRUE, FALSE Valor por omisin: TRUE v Clave: ENABLE_SHARED_DATABASE_ACCESS Valor: TRUE, FALSE Valor por omisin: FALSE v Clave: LOCK_TIMEOUT Valor: nmero de segundos que se deber esperar a obtener un bloqueo antes de retrotraer una transaccin. Valor por omisin: 20 v Clave: LOGIN_TIMEOUT Valor: nmero de segundos que se deber esperar a que una peticin de inicio de sesin finalice antes de devolver el control a la aplicacin. Valor por omisin: 0 Restriccin: No recibe soporte en Palm OS. v Clave: password Valor: contrasea del usuario v Clave: user Valor: nombre del usuario int getMajorVersion() Obtiene el nmero de versin mayor del controlador. int getMinorVersion() Obtiene el nmero de versin menor del controlador.

368

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 177. Mtodos de la interfaz Driver (continuacin) Tipo de valor de retorno del mtodo boolean Mtodo jdbcCompliant() Informa sobre si ste es un controlador JDBC COMPLIANT genuino.

Interfaz PreparedStatement: La interfaz PreparedStatement crea un objeto que representa una sentencia de SQL compilada previamente. Se ha compilado previamente una sentencia de SQL y se ha almacenado en un objeto PreparedStatement. Este objeto puede utilizarse para ejecutar de modo eficaz esta sentencia varias veces. Nota: Los mtodos setter para establecer valores de parmetros IN deben especificar tipos que sean compatibles con el tipo de SQL definido del parmetro de entrada. Por ejemplo, si el parmetro IN tiene el tipo de SQL INTEGER, se deber utilizar el mtodo setInt. paquete java.sql interfaz pblica PreparedStatement ampla Statement La Tabla 178 lista los mtodos de la interfaz PreparedStatement a los que DB2 Everyplace da soporte.
Tabla 178. Mtodos de la interfaz PreparedStatement Tipo de valor de retorno del mtodo void Mtodo clearParameters() Borra los valores de parmetro actuales de modo inmediato. boolean execute() Ejecuta cualquier tipo de sentencia de SQL. ResultSet executeQuery() Ejecuta la consulta de SQL en este objeto PreparedStatement y devuelve el conjunto de resultados generado por la consulta. int executeUpdate() Ejecuta la sentencia de SQL INSERT, UPDATE o DELETE en este objeto PreparedStatement. void setBigDecimal (int parameterIndex, BigDecimal x) Establece el parmetro designado en un valor java.lang.BigDecimal. Este mtodo no est disponible en el controlador JDBC de DB2 Everyplace para Palm OS.

Consulta

369

Tabla 178. Mtodos de la interfaz PreparedStatement (continuacin) Tipo de valor de retorno del mtodo void Mtodo setBoolean (int parameterIndex, boolean x) Establece el parmetro designado en un valor boolean de Java. El controlador JDBC de DB2 Everyplace lo convierte a un valor SMALLINT de SQL cuando lo enva a la base de datos. void setBlob(int i, Blob x) JDBC 2.0 Establece un parmetro BLOB. void setBytes(int parameterIndex, byte[ ] x) Establece el parmetro designado en una matriz de bytes de Java. void setDate(int parameterIndex, Date x) Establece el parmetro designado en un valor java.sql.Date. void setDouble(int parameterIndex, double x) Establece el parmetro designado en un valor double de Java. El controlador JDBC de DB2 Everyplace lo convierte a un valor DECIMAL de SQL cuando lo enva a la base de datos. void setFloat(int parameterIndex, float x) Establece el parmetro designado en un valor float de Java. Cuando BigDecimal se convierte a float, si el BigDecimal es demasiado grande para representarlo como float, se convertir a FLOAT.NEGATIVE_INFINITY o FLOAT.POSITIVE_INFINITY segn corresponda. void setInt (int parameterIndex, int x) Establece el parmetro designado en un valor int de Java. void setLong(int parameterIndex, long x) Establece el parmetro designado en un valor long de Java. void setNull (int parameterIndex, int sqlType) Establece el parmetro designado en NULL de SQL. void setObject(int parameterIndex, Object x, int targetSqlType) Establece el valor del parmetro designado con el objeto concreto. Restricciones de DB2 Everyplace: v targetSqlType debe corresponderse con uno de los tipos de datos a los que DB2 Everyplace da soporte. v Se da soporte a las conversiones bsicas y de Serie. Por ejemplo, si targetSqlType es Types.INTEGER, x debera ser un objeto Integer o String. v Si targetSqlType es Types.DECIMAL, x tambin puede ser un objeto Double, Float o Long. v Si targetSqlType es Types.SMALLINT, x tambin puede ser un objeto Boolean. v En Palm OS, si targetSqlType es Types.DECIMAL, x debera ser un objeto String.

370

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 178. Mtodos de la interfaz PreparedStatement (continuacin) Tipo de valor de retorno del mtodo void Mtodo setShort (int parameterIndex, short x) Establece el parmetro designado en un valor short de Java. void setString (int parameterIndex, String x) Establece el parmetro designado en un valor String de Java. void setTime (int parameterIndex, Time x) Establece el parmetro designado en un valor java.sql.Time. void setTimestamp (int parameterIndex, Timestamp x) Establece el parmetro designado en un valor java.sql.Timestamp.

Interfaz ResultSet: La interfaz ResultSet proporciona acceso a una tabla de datos. Un objeto ResultSet normalmente se genera ejecutando una Sentencia. Un objeto ResultSet mantiene un cursor apuntando hacia su fila de datos actual. Inicialmente, el cursor est colocado delante de la primera fila. El mtodo next() mueve el cursor a la fila siguiente. Los mtodos getXXX recuperan valores de columna para la fila actual. Puede recuperar valores utilizando el nmero de ndice de la columna o el nombre de la columna. En general, la utilizacin del ndice de columnas es ms eficaz. Las columnas se numeran a partir de uno. El controlador JDBC convierte los datos subyacentes al tipo Java especificado en el mtodo getter y devuelve un valor Java adecuado. paquete java.sql interfaz pblica ResultSet La Tabla 179 lista los campos de la interfaz ResultSet a los que DB2 Everyplace da soporte.
Tabla 179. Campos de la interfaz ResultSet Tipo de campo static int Campo CONCUR_READ_ONLY Constante que indica la modalidad de simultaneidad para un objeto ResultSet que es posible que NO pueda actualizarse. Nota: DB2 Everyplace no da soporte a CONCUR_UPDATABLE. Si se especifica CONCUR_UPDATABLE para la modalidad de simultaneidad para un objeto ResultSet al crear un objeto Statement, el controlador de JDBC de DB2 Everyplace emite un SQLWarning en el objeto Connection que ha producido el objeto Statement y en su lugar utiliza CONCUR_READ_ONLY. static int TYPE_FORWARD_ONLY Constante que indica el tipo para un objeto ResultSet cuyo cursor slo pueda moverse hacia adelante.

Consulta

371

Tabla 179. Campos de la interfaz ResultSet (continuacin) Tipo de campo static int Campo TYPE_SCROLL_INSENSITIVE Constante que indica el tipo para un objeto ResultSet que pueda desplazarse pero que en general no resulte sensible a los cambios efectuados por otros. Nota: Utilice este tipo de objeto ResultSet con moderacin, puesto que puede afectar al rendimiento. Este tipo utiliza SQL_INSENSITIVE como valor del atributo de sentencia CLI SQL_ATTR_CURSOR_SENSITIVITY. Consulte la documentacin para la funcin de CLI SQLSetStmtAttr para obtener ms detalles. static int TYPE_SCROLL_SENSITIVE Constante que indica el tipo para un objeto ResultSet que pueda desplazarse y que en general resulte sensible a los cambios efectuados por otros. Nota: Este tipo utiliza SQL_UNSPECIFIED como valor del atributo de sentencia CLI SQL_ATTR_CURSOR_SENSITIVITY. Consulte la documentacin para la funcin de CLI SQLSetStmtAttr para obtener ms detalles.

La Tabla 180 lista los mtodos de la interfaz ResultSet a los que DB2 Everyplace da soporte.
Tabla 180. Mtodos de la interfaz ResultSet Tipo de valor de retorno del mtodo boolean Mtodo absolute(int row) JDBC 2.0. Mueve el cursor al nmero de fila indicado del conjunto de resultados. void afterLast() JDBC 2.0. Mueve el cursor al final del conjunto de resultados, justo detrs de la ltima fila. void beforeFirst() JDBC 2.0. Mueve el cursor al principio del conjunto de resultados, justo delante de la primera fila. void clearWarnings() Borra todos los avisos de los que se ha informado para este objeto ResultSet. void close() Libera de inmediato los recursos de JDBC y base de datos de este objeto ResultSet en lugar de esperar a que suceda esto cuando se cierre automticamente. int findColumn(String columnName) Correlaciona el nombre de columna de ResultSet indicado con su ndice de columnas de ResultSet. boolean first() JDBC 2.0. Mueve el cursor a la primera fila del conjunto de resultados.

372

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 180. Mtodos de la interfaz ResultSet (continuacin) Tipo de valor de retorno del mtodo BigDecimal Mtodo getBigDecimal(int columnIndex) JDBC 2.0. Obtiene el valor de una columna de la fila actual en forma de objeto java.math.BigDecimal con precisin completa. El controlador JDBC de DB2 Everyplace para Palm OS no soporta este mtodo. BigDecimal getBigDecimal(int columnIndex, int scale) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de objeto java.math.BigDecimal en el lenguaje de programacin Java. El controlador JDBC de DB2 Everyplace para Palm OS no soporta este mtodo.Desaprobado. BigDecimal getBigDecimal(String columnName) JDBC 2.0. Obtiene el valor de una columna de la fila actual en forma de objeto java.math.BigDecimal con precisin completa. El controlador JDBC de DB2 Everyplace para Palm OS no soporta este mtodo. BigDecimal getBigDecimal(String columnName, int scale) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de objeto java.math.BigDecimal en el lenguaje de programacin Java. El controlador JDBC de DB2 Everyplace para Palm OS no soporta este mtodo. Desaprobado. Blob getBlob(int columnIndex) JDBC 2.0. Obtiene un valor de BLOB de la fila actual de este objeto ResultSet. Blob getBlob(String columnName) JDBC 2.0. Obtiene un valor de BLOB de la fila actual de este objeto ResultSet. boolean getBoolean(int columnIndex) Obtiene el valor de una columna de la fila actual como boolean de Java. El controlador obtiene en primer lugar el valor de columna en forma de tipo de datos short de Java. Si el valor es igual a 1, se devuelve el valor true. De lo contrario, se devuelve el valor false. boolean getBoolean(String columnName) Obtiene el valor de una columna de la fila actual como boolean de Java. El controlador obtiene en primer lugar el valor de columna en forma de tipo de datos short de Java. Si el valor es igual a 1, se devuelve el valor true. De lo contrario, se devuelve el valor false. byte getByte(int columnIndex) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet como byte en el lenguaje de programacin Java. byte getByte(String columnName) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet como byte en el lenguaje de programacin Java. byte[] getBytes(int columnIndex) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet como matriz de bytes en el lenguaje de programacin Java.

Consulta

373

Tabla 180. Mtodos de la interfaz ResultSet (continuacin) Tipo de valor de retorno del mtodo byte[] Mtodo getBytes(String columnName) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet como matriz de bytes en el lenguaje de programacin Java. int Date getConcurrency() JDBC 2.0. Devuelve la modalidad de simultaneidad del conjunto de resultados. getDate(int columnIndex) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de objeto java.sql.Date en el lenguaje de programacin Java. Date getDate(int columnIndex, Calendar cal) Devuelve el valor de la columna designada en la fila actual de este objeto ResultSet en forma de objeto java.sql.Date en el lenguaje de programacin Java. Date getDate(String columnName) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de objeto java.sql.Date en el lenguaje de programacin Java. double getDouble(int columnIndex) Obtiene el valor de una columna de la fila actual como double de Java. double getDouble(String columnName) Obtiene el valor de una columna de la fila actual como double de Java. float getFloat(int columnIndex) Obtiene el valor de una columna de la fila actual como float de Java. float getFloat(String columnName) Obtiene el valor de una columna de la fila actual como float de Java. int getInt(int columnIndex) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de entero en el lenguaje de programacin Java. int getInt(String columnName) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de entero en el lenguaje de programacin Java. getLong(int columnIndex) Obtiene el valor de una columna de la fila actual en forma de tipos datos long de Java. long getLong(String columnName) Obtiene el valor de una columna de la fila actual en forma de tipos datos long de Java.

long

374

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 180. Mtodos de la interfaz ResultSet (continuacin) Tipo de valor de retorno del mtodo ResultSetMetaData Mtodo getMetaData() Recupera el nmero, los tipos y las propiedades de las columnas de este objeto ResultSet. Object getObject(int columnIndex) Obtiene el valor de una columna de la fila actual en forma de objeto Java. Object getObject(String columnName) Obtiene el valor de una columna de la fila actual en forma de objeto Java. int getRow() JDBC 2.0. Recupera el nmero de la fila actual. short getShort(int columnIndex) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de tipo de datos short en el lenguaje de programacin Java. short getShort(String columnName) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de tipo de datos short en el lenguaje de programacin Java. Statement getStatement() JDBC 2.0. Devuelve la sentencia (Statement) que ha producido este objeto ResultSet. String getString(int columnIndex) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet como String en el lenguaje de programacin Java. String getString(String columnName) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet como String en el lenguaje de programacin Java. Time getTime(int columnIndex) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de objeto java.sql.Time en el lenguaje de programacin Java. Time getTime(String columnName) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de objeto java.sql.Time en el lenguaje de programacin Java. Timestamp getTimestamp(String columnName) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de objeto java.sql.Timestamp en el lenguaje de programacin Java.

Consulta

375

Tabla 180. Mtodos de la interfaz ResultSet (continuacin) Tipo de valor de retorno del mtodo Timestamp Mtodo getTimestamp(int columnIndex) Obtiene el valor de la columna designada en la fila actual de este objeto ResultSet en forma de objeto java.sql.Timestamp en el lenguaje de programacin Java. int getType() JDBC 2.0. Devuelve el tipo de este conjunto de resultados. SQLWarning getWarnings() Devuelve el primer aviso informado por llamadas a este objeto ResultSet. boolean isAfterLast() JDBC 2.0. Indica si el cursor se encuentra detrs de la ltima fila del conjunto de resultados. boolean isBeforeFirst() JDBC 2.0. Indica si el cursor se encuentra delante de la primera fila del conjunto de resultados. boolean isFirst() JDBC 2.0. Indica si el cursor se encuentra en la primera fila del conjunto de resultados. boolean isLast() JDBC 2.0. Indica si el cursor se encuentra en la ltima fila del conjunto de resultados. Este mtodo no recibe soporte para conjuntos de resultados de tipo TYPE_FORWARD_ONLY. boolean last() JDBC 2.0. Mueve el cursor a la ltima fila del conjunto de resultados. boolean next() Mueve el cursor una fila hacia abajo a partir de su posicin actual. boolean previous() JDBC 2.0. Mueve el cursor a la fila anterior del conjunto de resultados. boolean relative(int rows) JDBC 2.0. Mueve el cursor un nmero relativo de filas, ya sea positivo o negativo. boolean wasNull() Informa sobre si la ltima columna leda tena un valor NULL de SQL.

Interfaz ResultSetMetaData: La interfaz ResultSetMetaData crea un objeto que se puede utilizar para averiguar los tipos y propiedades de las columnas de un ResultSet. paquete java.sql

376

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

interfaz pblica ResultSetMetaData La Tabla 181 lista los campos de la interfaz ResultSetMetaData a los que DB2 Everyplace da soporte.
Tabla 181. Campos de la interfaz ResultSetMetaData Tipo de campo static int static int static int Campo columnNoNulls Constante que indica que una columna no admite valores nulos (NULL). columnNullable Constante que indica que una columna admite valores nulos (NULL). columnNullableUnknown Constante que indica que se desconoce la posibilidad de anular los valores de una columna.

La Tabla 182 lista los mtodos de la interfaz ResultSetMetaData a los que DB2 Everyplace da soporte.
Tabla 182. Mtodos de la interfaz ResultSetMetaData Tipo de valor de retorno del mtodo Mtodo String int int String String int String int int String getCatalogName(int column) Obtiene un nombre de catlogo de tabla de la columna. DB2 Everyplace siempre devuelve (no aplicable). getColumnCount() Devuelve el nmero de columnas de este objeto ResultSet. getColumnDisplaySize (int column) Indica la anchura mxima normal en caracteres de la columna designada. getColumnLabel(int column) Obtiene el ttulo de columna sugerido para su utilizacin en copias impresas y pantallas. getColumnName (int column) Obtiene el nombre de la columna designada. getColumnType (int column) Obtiene el tipo SQL de la columna designada. getColumnTypeName(int column) Recupera un nombre de tipo especfico de la base de datos de columna. getPrecision (int column) Obtiene el nmero de dgitos decimales de la columna designada. getScale (int column) Obtiene el nmero de dgitos de la columna designada que se encuentran a la derecha de la cola decimal. getSchemaName(int column) Obtiene el nombre de esquema de la tabla de una columna. DB2 Everyplace siempre devuelve (no aplicable). isNullable (int column) Indica la posibilidad de anulacin de valores de la columna designada. isWritable(int column) Indica si es posible que una grabacin en la columna resulte satisfactoria.

int boolean

Interfaz Statement: La interfaz Statement crea un objeto que se utiliza para ejecutar una sentencia de SQL esttico y obtener los resultados producidos por la misma.

Consulta

377

paquete java.sql interfaz pblica Statement La Tabla 183 lista los campos de la interfaz Statement a los que DB2 Everyplace da soporte.
Tabla 183. Campos de la interfaz Statement Tipo de campo static int Campo SUCCESS_NO_INFO Constante que indica que una sentencia de proceso por lotes se ha ejecutado satisfactoriamente, pero que no se dispone de un recuento del nmero de filas que ha afectado.

La Tabla 184 lista los mtodos de la interfaz Statement a los que DB2 Everyplace da soporte.
Tabla 184. Mtodos de la interfaz Statement Tipo de valor de retorno del mtodo void Mtodo addBatch(String sql) JDBC 2.0 Aade un mandato SQL al proceso por lotes actual de mandatos para la sentencia. void clearBatch() JDBC 2.0 Convierte el conjunto de mandatos en el proceso por lotes actual vaco. void close() Libera los recursos JDBC y de base de datos de este objeto Statement de inmediato, en lugar de esperar a que suceda esto cuando se cierre automticamente. boolean execute(String sql) Ejecuta una sentencia de SQL que puede devolver varios resultados. int[] executeBatch() JDBC 2.0 Somete un proceso por lotes de mandatos a la base de datos para su ejecucin. executeQuery(String sql) Ejecuta una sentencia de SQL que devuelve un solo objeto ResultSet. int executeUpdate(String sql) Ejecuta una sentencia INSERT, UPDATE o DELETE de SQL. Connection getConnection() JDBC 2.0. Devuelve el objeto Connection que ha producido este objeto Statement. boolean getMoreResults() Pasa al siguiente resultado de un objeto Statement. DB2 Everyplace siempre devuelve el valor false (no hay ms resultados).

ResultSet

378

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 184. Mtodos de la interfaz Statement (continuacin) Tipo de valor de retorno del mtodo ResultSet Mtodo getResultSet() Devuelve el resultado actual en forma de objeto ResultSet. int getResultSetConcurrency() JDBC 2.0. Recupera la simultaneidad de conjuntos resultantes. int getResultSetType() JDBC 2.0. Determina el tipo del conjunto de resultados. int getUpdateCount() Devuelve el resultado actual como nmero de actualizacin; si el resultado es un ResultSet o no hay ms resultados, se devuelve -1.

javax.sql
Interfaz DataSource: Fbrica de conexiones con la fuente de datos fsica a la que representa este objeto DataSource. El mtodo preferido de obtener una conexin es una sustitucin del recurso de DriverManager, un objeto DataSource. Una instancia de un objeto DataSource puede utilizarse en un programa autnomo para crear objetos Connection. En el ejemplo siguiente, se utiliza una instancia de DB2eDataSource para crear una conexin (Connection) con una base de datos porttil DB2 Everyplace con el url jdbc:db2e:myDataSource:
com.ibm.db2e.jdbc.DB2eDataSource ds = new com.ibm.db2e.jdbc.DB2eDataSource(); ds.setUrl("jdbc:db2e:myDataSource"); Connection con = ds.getConnection();

paquete javax.sql interfaz pblica DataSource La Tabla 185 y la Tabla 186 en la pgina 380 listan las propiedades de la interfaz DataSource a las que DB2 Everyplace da soporte. A las propiedades se puede acceder utilizando los mtodos getter y setter. (Las propiedades de DataSource siguen el convenio especificado para las propiedades de los componentes de JavaBeans en la Especificacin JavaBeans 1.01).
Tabla 185. Propiedades de DataSource estndar a las que DB2 Everyplace da soporte Nombre de propiedad description password user Tipo String String String Descripcin descripcin de esta fuente de datos contrasea de la base de datos nombre de la cuenta del usuario Mtodos de acceso String getDescription() void setDescription(String Description) String getPassword() void setPassword(String password) String getUser() void setUser(String user)

La Tabla 186 en la pgina 380 lista las propiedades soportadas de la interfaz DataSource que son especficas para DB2 Everyplace.
Consulta

379

Tabla 186. Propiedades especficas de DB2 Everyplace para la interfaz DataSource Nombre de propiedad deletePhysicalRemove Tipo boolean Descripcin habilitar/inhabilitar la eliminacin fsica de registros. permitir/no permitir que la aplicacin establezca el bit de modificacin codificacin de caracteres nombres de archivo cortos (formato 8.3) o largos transferir los cambios directamente al soporte de almacenamiento o dejar que el SO se ocupe de ellos. Mtodos de acceso boolean isDeletePhysicalRemove() void setDeletePhysicalRemove(boolean enable) boolean isDirtyBitSetByApplication() void setDirtyBitSetByApplication(boolean enable)

dirtyBitSetByApplication

boolean

encoding filenameFormat83

String boolean

String getEncoding() void setEncoding(String encoding) boolean isFilenameFormat83() void setFilenameFormat83(boolean enable) int getIoMode() void setIoMode(int mode)

ioMode

int

lockTimeout

int

tiempo de espera de int getLockTimeout() bloqueo en segundos void setLockTimeout(int seconds) (valor por omisin = 20) habilitar/inhabilitar la lectura de registros suprimidos de forma lgica habilitar/inhabilitar reorganizacin acceso compartido o exclusivo a la base de datos fuente de datos boolean isReadIncludeMarkedDelete() void setReadIncludeMarkedDelete(boolean enable)

readIncludeMarkedDelete

boolean

reorg

boolean

boolean isReorg() void setReorg(boolean enable)

sharedDatabaseAccess

boolean

boolean isSharedDatabaseAccess() void setSharedDatabaseAccess(boolean enable) String getUrl() void setUrl(String url)

url

String

La Tabla 187 lista los mtodos de la interfaz DataSource a los que DB2 Everyplace da soporte.
Tabla 187. Mtodos de la interfaz DataSource Tipo de valor de retorno del mtodo Connection Mtodo getConnection() Intenta establecer una conexin con la fuente de datos a la que representa este objeto DataSource. Connection getConnection (java.lang.String username, java.lang.String password) Intenta establecer una conexin con la fuente de datos a la que representa este objeto DataSource. int getLoginTimeout() Obtiene el tiempo mximo en segundos que puede esperar esta fuente de datos mientras intenta conectarse a una base de datos.

380

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 187. Mtodos de la interfaz DataSource (continuacin) Tipo de valor de retorno del mtodo java.io.PrintWriter Mtodo getLogWriter() Recupera el transcriptor de anotaciones para este objeto DataSource. void setLoginTimeout(int seconds) Establece el tiempo mximo en segundos que esperar esta fuente de datos mientras intenta conectarse a una base de datos. void setLogWriter(java.io.PrintWriter out) Establece el transcriptor de anotaciones para este objeto DataSource para el objeto java.io.PrintWriter en concreto.

Soporte de idioma nacional (NLS)


Este tema contiene informacin sobre el soporte de idioma nacional (NLS) proporcionado por DB2 Everyplace, incluye informacin sobre los pases, idiomas y pginas de cdigos (juegos de cdigos) a los que se da soporte y sobre cmo configurar y utilizar las caractersticas de NLS de DB2 Everyplace con los dispositivos y aplicaciones. DB2 Everyplace da soporte a los juegos de caracteres de un solo byte, de doble byte y de mltiples bytes y a UNICODE. Se soportan tanto UNICODE como otros cdigos distintos de UNICODE (ANSI) en todos los sistemas operativos Windows.

Soporte NLS por sistema operativo de DB2 Everyplace


La Tabla 188 muestra los sistemas operativos y los correspondientes idiomas para los cuales existe soporte NLS.
Tabla 188. Soporte NLS Idioma Ingls Windows Pgina de cdigos/ UCS-2 Pgina de cdigos/ UCS-2 Pgina de cdigos/ UCS-2 Pgina de cdigos/ UCS-2 Pgina de cdigos/ UCS-2 WinCE UCS-2 Linux Pgina de cdigos/ UTF-8 Pgina de cdigos/ UTF-8 Pgina de cdigos/ UTF-8 Pgina de cdigos/ UTF-8 Pgina de cdigos/ UTF-8 Palm OS Pgina de cdigos Pgina de cdigos Pgina de cdigos Pgina de cdigos Pgina de cdigos Symbian OS UCS-2 Neutrino UTF-8

Francs

UCS-2

UCS-2

UTF-8

Alemn

UCS-2

UCS-2

UTF-8

Italiano

UCS-2

UCS-2

UTF-8

Espaol

UCS-2

UCS-2

UTF-8

Consulta

381

Tabla 188. Soporte NLS (continuacin) Idioma Chino simplificado Windows Pgina de cdigos/ UCS-2 WinCE UCS-2 Linux Pgina de cdigos/ UTF-8 Palm OS Pgina de cdigos v Instalar habilitador Pgina de cdigos v Instalar habilitador Acer S60 tiene Palm OS en chino tradicional incorporado. Pgina de cdigos v Instalar habilitador Pgina de cdigos Pgina de cdigos v Instalar habilitador Checo Pgina de cdigos/ UCS-2 UCS-2 v Instalar habilitador N/D N/D N/D Pgina de cdigos v Instalar habilitador Pgina de cdigos v Instalar habilitador Portugus de Brasil Hngaro Pgina de cdigos/ UCS-2 Pgina de cdigos/ UCS-2 Pgina de cdigos/ UCS-2 UCS-2 N/D Pgina de cdigos Pgina de cdigos Pgina de cdigos N/D N/D N/D N/D UCS-2 N/D N/D UTF-8 N/D UTF-8 N/D UTF-8 Symbian OS N/D Neutrino UTF-8

Chino Pgina de tradicional cdigos/ UCS-2

UCS-2

Pgina de v Instalar cdigos/ habili- UTF-8 tador para Pocket PC

Coreano

Pgina de cdigos/ UCS-2

UCS-2

Pgina de v Instalar cdigos/ habili- UTF-8 tador UCS-2 Pgina de cdigos/ UTF-8 N/D

Japons

Pgina de cdigos/ UCS-2 N/D

Hebreo

N/D

N/D

N/D

rabe

N/D

UCS-2

N/D

N/D

N/D

Polaco

UCS-2

N/D

N/D

N/D

382

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 188. Soporte NLS (continuacin) Idioma Eslovaco Windows Pgina de cdigos/ UCS-2 WinCE UCS-2 Linux N/D Palm OS Pgina de cdigos Symbian OS N/D Neutrino N/D

En los sistemas operativos WinCE y Symbian, slo se soporta UNICODE (UCS-2). En los sistemas operativos Palm OS, QNX Neutrino y Linux, la informacin sobre el entorno nacional se utiliza para determinar la pgina de cdigos correcta. En las plataformas Windows, las aplicaciones UNICODE utilizan UNICODE (la aplicacin utiliza las API UNICODE de DB2 Everyplace) y el resto de aplicaciones utilizan la pgina de cdigos. DB2 Everyplace no proporciona funciones de conversin de pgina de cdigos. Las bases de datos porttiles DB2 Everyplace creadas en un sistema utilizando una pgina de cdigos especfica slo se pueden desplegar en sistemas que utilicen la misma pgina de cdigos. Las tablas que se crearon con una pgina de cdigos especfica se pueden utilizar en todos los dispositivos que dan soporte a esa pgina de cdigos, excepto cuando sea necesario un habilitador de idioma determinado. Las aplicaciones que acceden a una base de datos porttil DB2 Everyplace deben encargarse de interpretar correctamente los datos de tipo carcter. En los sistemas Linux el usuario es el responsable de establecer el valor del entorno local correctamente. (Consulte las pginas man correspondientes a setlocale para obtener una introduccin a los nombres de entornos locales en los sistemas Linux). Por ejemplo, puede exportar la variable de entorno LC_CTYPE a ja_JP.UTF-8 y, a continuacin, llamar a setlocale(LC_CTYPE, "") dentro de la aplicacin. Las series codificadas en UTF-8 se procesan en cualquier entorno local con DB2 Everyplace especificando UTF-8 en el nombre del entorno local. Por ejemplo: de_DE.UTF-8. En Palm OS, tambin se utiliza la presencia de habilitadores de idiomas para determinar la pgina de cdigos. DB2 Everyplace detecta la codificacin utilizada actualmente examinando el entorno local establecido o disponible actualmente.

Habilitadores de idioma de DB2 Everyplace


Para asegurarse de que el dispositivo porttil utilizado puede visualizar correctamente todos los caracteres del idioma que se est utilizando, puede instalar habilitadores de idioma en el dispositivo porttil. La tabla siguiente lista los habilitadores que puede utilizar con DB2 Everyplace.
Tabla 189. Habilitadores de idioma para dispositivos porttiles Idioma rabe Chino simplificado Habilitador y sistema operativo Sakhr Arabic Palm 2.0 CWP v1.0 para Palm

Consulta

383

Tabla 189. Habilitadores de idioma para dispositivos porttiles (continuacin) Idioma Chino tradicional Habilitador y sistema operativo v CJKOS 3.21 para dispositivos de color Palm OS (los registros de clasificacin de la opcin CJK pueden producir resultados inesperados). v Gismosoft Chinese Small_Knife 2.0 slo para Pocket PC v Acer S60 tiene un Palm OS en chino tradicional incorporado Checo v RedGrep GNU-czech0.71 para Palm OS v Sunnysoft InterWrite5.5P Pro para Windows CE Hebreo Coreano Penticon Technologies Ltd. Hebrew Support+3.20c para Palm OS v HANME 2.0 para Palm OS v HANTIP 2.01for Palm OS CessHan para Casio E-115 1.0 sobre Windows CE

Soporte para UNICODE de DB2 Everyplace


En los sistemas operativos que dan soporte a UNICODE (Windows CE, Symbian OS, Windows NT y Windows 2000), DB2 Everyplace acepta las series UNICODE slo como series de Entrada/Salida. Estas series UNICODE se guardan en formato UTF8 dentro del motor de DB2 Everyplace. Un carcter UNICODE puede necesitar de uno a tres bytes de espacio de almacenamiento despus de la conversin a UTF8. Es posible que una serie de caracteres almacenada en un servidor de bases de como, por ejemplo, IBM DB2 Universal Database necesite ms espacio cuando la cadena se descargue y se almacene en una base de datos DB2 Everyplace UNICODE. Notas sobre la interfaz UNICODE de CLI: v Las funciones UNICODE de DB2 Everyplace CLI tienen el carcter W al final. Definiendo la macro UNICODE (que es el valor por omisin del sistema en Windows CE), las funciones normales de la CLI se correlacionarn de manera automtica con las funciones UNICODE correspondientes. Para escribir cdigo porttil, defina la macro UNICODE y deje que el sistema realice las conversiones. v Cuando el soporte UNICODE est habilitado, los tipos de datos SQL_C_CHAR, SQL_C_TCHAR y SQL_C_WCHAR tienen el mismo significado. v Muchas funciones de la CLI tienen una longitud de serie (o almacenamiento intermedio) como parmetro de entrada/salida. Para las funciones en las que el Tipo de argumento es SQLCHAR* (o SQLWCHAR* para la funcin W), la longitud es el nmero de caracteres. Por ejemplo:
SQLRETURN SQLExecDirect (SQLHSTMT SQLCHAR FAR SQLINTEGER hstmt, *szSqlStr, cbSqlStr);

La serie UNICODE L"ABCD" tiene cuatro caracteres.

384

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Para las funciones en las que el Tipo de argumento es SQLPOINTER, la longitud es el nmero de bytes. Por ejemplo:
SQLRETURN SQLGetData (SQLHSTMT SQLUSMALLINT SQLSMALLINT SQLPOINTER SQLINTEGER SQLINTEGER FAR hstmt, icol, fCType, rgbValue, cbValueMax, *pcbValue);

Las longitudes del parmetro de entrada cbValueMax y del parmetro de salida *pcbValue estn en bytes. La serie UNICODE L"ABCD" ocho 8 bytes. v Las funciones de UNICODE tambin pueden hacer que SQL_NTS indique una serie acabada en NULL. Consejos para escribir cdigo porttil: v Utilice SQLTCHAR en vez de SQLCHAR o SQLWCHAR. v Utilice las funciones _tcsXXXX en vez de strXXXX (ANSI) o wcsXXXX (UNICODE). Por ejemplo, utilice _tcslen() en vez de wcslen() o strlen(). v Utilice _TEXT() (o TEXT()) para acomodar series literales. Por ejemplo, _TEXT("ABCD") se puede interpretar como una cadena de caracteres ANSI o UNICODE dependiendo de la definicin de macro. v Utilice sizeof(NombreMatriz)/sizeof(TCHAR) para determinar el tamao de una matriz de caracteres. Para obtener un ejemplo, consulte el cdigo de ejemplo SampleCLP de Windows CE incluido en DB2 Everyplace.

Ejemplo Cdigo de la aplicacin de ejemplo


El apartado siguiente contiene el cdigo en Java y C correspondiente a la aplicacin de ejemplo. El cdigo necesita una serie de conexin para que la funcin SQLConnect() pueda conectarse a la fuente de datos remota. Hay dos formatos para la serie de conexin: http://DirIP:puerto/db2e/servlet/ com.ibm.mobileservices.adapter.agent.AgentServlet?DB=mysample http://DirIP:puerto/db2e/agent?DB=mysample donde DirIP:puerto es la direccin IP y el nmero de puerto del servidor. Por ejemplo: http://192.168.0.11:8080/db2e/servlet/ com.ibm.mobileservices.adapter.agent.AgentServlet?DB=mysample
int main(int argc, char * argv[]) { SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; SQLRETURN rc; SQLCHAR strSQL[] = "CALL db2e.MYPROC(?,?,?,?,?)"; int nInd4, nInd5; int nSaving = 0, nChecking =0 ; int nCmd =0, nAmount=0; SQLCHAR strConnect[254];

Consulta

385

//**************************************************************** //* Comprobar parmetros de entrada //**************************************************************** if ( argc < 4 ){ printf("\nUsage : myClient AccountName Cmd Amount"); printf("\n cmd 1 : query balance"); printf("\n cmd 2 : Transfer from Saving to Checking"); printf("\n cmd 3 : Transfer from Checking to Saving"); return (99); } nCmd = atoi(argv[2]); nAmount = atoi(argv[3]); //**************************************************************** //* Asignar descriptores de contexto //**************************************************************** rc = SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); //checkerror rc = SQLAllocHandle( SQL_HANDLE_DBC, henv, &hdbc); //checkerror if (argc == 5){ strcpy(strConnect,"http://"); strcat(strConnect,argv[4]); strcat(strConnect,"/db2e/servlet/ com.ibm.mobileservices.adapter.agent.AgentServlet?DB=mysample"); }else{ strcpy(strConnect,"http://127.0.0.1:8080/db2e/servlet/ com.ibm.mobileservices.adapter.agent.AgentServlet?DB=mysample"); } //**************************************************************** //* Conectar con la base de datos remota //**************************************************************** rc = SQLConnect(hdbc, strConnect, SQL_NTS, "userex", SQL_NTS, "userex", SQL_NTS ); //checkerror rc = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt); //checkerror //**************************************************************** //* Preparar, enlazar y ejecutar la sentencia //**************************************************************** rc = SQLPrepare(hstmt,strSQL, SQL_NTS); //checkerror rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, (SQLPOINTER)argv[1], 0, NULL ); //checkerror rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, (SQLPOINTER)&nCmd, sizeof(int), NULL); //checkerror

386

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, (SQLPOINTER)&nAmount, sizeof(int), NULL ); //checkerror rc = SQLBindParameter(hstmt, 4, SQL_PARAM_OUTPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, (SQLPOINTER)&nSaving, sizeof(int), &nInd4); //checkerror rc = SQLBindParameter(hstmt, 5, SQL_PARAM_OUTPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, (SQLPOINTER)&nChecking, sizeof(int), &nInd5 ); //checkerror rc = SQLExecute(hstmt); //checkerror //**************************************************************** //* Imprimir el saldo //**************************************************************** printf("\nSaving = %d",nSaving); printf("\nChecking = %d",nChecking); SQLFreeHandle(SQL_HANDLE_STMT, hstmt); SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0;

Cdigo de la aplicacin de ejemplo en Java: El siguiente cdigo Java tiene la misma funcin que el ejemplo de C.
import java.sql.*; class MyClient{ public static void main(String [] args){ if (args.length != 3){ System.out.println("Usage System.out.println(" cmd System.out.println(" cmd System.out.println(" cmd System.exit(-1); } java MyClient AccountName Cmd Amount"); 1 : Query balance."); 2 : Transfer from Saving to Checking."); 3 : Transfer from Checking to Saving.");

String driver = "com.ibm.db2e.jdbc.DB2eDriver"; String url = "jdbc:db2e:http://9.30.40.21:8080/db2e/servlet/ com.ibm.mobileservices.adapter.agent.AgentServlet?DB=mysample"; String sql = "Call db2e.MYPROC(?,?,?,?,?)"; try{
Consulta

387

Class.forName(driver); //**************************************************************** //* Conectar con la base de datos remota //**************************************************************** Connection con = DriverManager.getConnection(url,"userex","userex"); CallableStatement cst = con.prepareCall(sql);

//**************************************************************** //* Register the output parameters //**************************************************************** cst.registerOutParameter (4, Types.INTEGER); cst.registerOutParameter (5, Types.INTEGER); //**************************************************************** //* Establecer parmetros de entrada //**************************************************************** cst.setString (1, args[0]); cst.setString (2, args[1]); cst.setString (3, args[2]); //**************************************************************** //* Llamar al procedimiento almacenado remoto //**************************************************************** cst.execute (); //**************************************************************** //* Recuperar salida //**************************************************************** System.out.println("\nSaving = " + cst.getInt(4)); System.out.println("\nChecking = " + cst.getInt(5)); cst.close(); con.close(); }catch (SQLException sqlEx){ while(sqlEx != null){ System.out.println("SQLERROR: \n" + sqlEx.getErrorCode() + ", SQLState: " + sqlEx.getSQLState() + ", Message: " + sqlEx.getMessage() + ", Vendor: " + sqlEx.getErrorCode() ); sqlEx = sqlEx.getNextException(); } }catch (Exception ex){ ex.printStackTrace(); }

Visin general de las aplicaciones de ejemplo de DB2 Everyplace


DB2 Everyplace incluye aplicaciones de ejemplo para cada plataforma de destino, tal como se describe en las tablas siguientes. Algunos ejemplos slo se incluyen en DB2 Everyplace SDK, que se puede descargar de http://www.ibm.com/software/data/db2/everyplace/sdk.html.
Tabla 190. Aplicaciones de ejemplo de DB2 Everyplace por plataforma de destino Plataforma de destino Palm Tipo Cliente Aplicaciones de ejemplo v DB2eCLP v VNurse v DB2eAppl v DB2 Sync

388

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 190. Aplicaciones de ejemplo de DB2 Everyplace por plataforma de destino (continuacin) Plataforma de destino Palm Tipo MAB Aplicaciones de ejemplo v PersonList v VNApp v VNPlus Symbian 7 Cliente v DB2eCLP v DB2 Sync v PersonList v DB2eJavaCLP Symbian 7 MAB v PersonList v VNApp Windows CE Cliente v DB2eCLP v VNurse v DB2eAppl v DB2eJavaCLP v DB2 Sync Windows CE MAB v PersonList v VNApp v DB2eJavaCLP Windows Cliente v DB2eCLP v DB2eAppl v DB2eJavaCLP v DB2 Sync Console MIDP Cliente v DB2eCLP v VNurse v DB2eJavaCLP Linux (incluido Sharp Zaurus) y Neutrino Cliente v Procesador de lnea de mandatos v DB2 Sync Console v PersonList v DB2eJavaCLP Linux (incluido Sharp Zaurus) y Neutrino MAB v PersonList v VNApp

La tabla siguiente describe la ubicacin de las aplicaciones de ejemplo de DB2 Everyplace y qu edicin de DB2 Everyplace incluye cada ejemplo. Las abreviaciones correspondientes a cada edicin son las siguientes: v DE = Database Edition v EE = Enterprise Edition v EXP = Express Edition
Tabla 191. Aplicaciones de ejemplo de DB2 Everyplace por versin y ubicacin Aplicacin DB2eCLP Descripcin Archivo de programa de utilidad Edicin DE/EE/EXP Directorio %DSYINSTDIR% \Clients\ plataforma \database\idioma\proc\DB2eCLP

Consulta

389

Tabla 191. Aplicaciones de ejemplo de DB2 Everyplace por versin y ubicacin (continuacin) Aplicacin VNurse Descripcin Ejemplo activo Ejemplos de sincronizacin (binarios) activos Edicin DE/EE/EXP EE/EXP Directorio %DSYINSTDIR% \Clients\ plataforma \database\idioma\Samples\VNurse Para Windows:%DSYINSTDIR% \Clients\ win32\ sync\idioma\ [unicode/nounicode}\db2sync_console.exe Para WinCE:%DSYINSTDIR% \Clients\ wince\sync\idioma\versin\proc\db2sync.exe Para Palm OS:%DSYINSTDIR% \Clients\ palmos \sync\idioma\db2sync.prc Para Linux y Neutrino:%DSYINSTDIR% \Clients\ plataforma\sync\proc \db2sync_console Para Symbian OS Versin 7:%DSYINSTDIR% \Clients\ symbian7\sync\idioma\DB2SYNC.APP Para Java:%DSYINSTDIR% \Clients\ clientapisample\Java_API Para ISync.NET:%DSYINSTDIR% \Clients\ clientapisample\NMP JDBCSample v DB2eAppl v DB2eJavaCLP Aplicacin de ejemplo DE/EE/EXP JDBC Para Windows y WinCE:%DSYINSTDIR\Clients\ plataforma\database\jdbc\ Para Symbian OS Versin 7:%DSYINSTDIR%\Clients\ symbian7\database\ idioma \JDBCSample\classes\ Para Palm OS:%DSYINSTDIR%\Clients\ palmos\database\jdbc\cldc\sample\ Para Linux:%DSYINSTDIR%\Clients\ linux\database\jdbc\ PersonList Aplicacin de ejemplo N/D de MAB Aplicacin de ejemplo N/D de MAB Aplicacin de ejemplo N/D de MAB Se proporciona junto con MAB, que se puede descargar de http://www.ibm.com/software/ data/db2/everyplace/ support.html Se proporciona junto con MAB, que se puede descargar de http://www.ibm.com/software/ data/db2/everyplace/ support.html Se proporciona junto con MAB, que se puede descargar de http://www.ibm.com/software/ data/db2/everyplace/ support.html

DB2 Sync C v db2sync_console . exe v db2sync.exe v db2sync.prc v DB2Sync.sis v db2sync_console Java e ISync.NET v ISyncSample v DB2SyncConsole

VNApp

VNPlus

Visiting Nurse
Tablas de la aplicacin de ejemplo Visiting Nurse
Este tema contiene una descripcin de cada una de las tablas de la aplicacin de ejemplo Visiting Nurse. Consulte el apartado Visin general de la aplicacin de ejemplo Visiting Nurse en la pgina 391 si desea ver un ejemplo de una aplicacin Visiting Nurse que utiliza DB2 Everyplace.

390

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

VNSCHEDULE Contiene las citas de la enfermera. Esta tabla contiene informacin como el ID del paciente y la hora de la cita. El esquema de la tabla es el siguiente:
CREATE TABLE VNSchedule (PatientID Char(9) NOT NULL, Time_C Time PRIMARY KEY)

VNPERSON Contiene datos sobre los pacientes. Esta tabla contiene informacin como el nombre, el nmero de la Seguridad Social, la direccin y nmeros de telfono. El nmero de la Seguridad Social se utiliza como clave primaria. El esquema de la tabla es el siguiente:
CREATE TABLE VNPerson (ID Char(9) PRIMARY KEY, Name Varchar(40), Address Varchar(50), City Varchar(30), HomePhone Varchar(20), WorkPhone Varchar(20), MobilePhone Varchar(20))

VNMEDICALRECORD Contiene registros mdicos de los pacientes. Esta tabla contiene datos como la presin sangunea, el pulso y la temperatura. El ID de registro mdico se utiliza como clave primaria. El esquema de la tabla es el siguiente:
CREATE TABLE VNMedicalRecord (RecordID Integer PRIMARY KEY, Date_C Date, Time_C Time, PatientID Char(9) NOT NULL, BloodPressure Char(7), PulseRate Smallint, Temperature Decimal(4,1), Weight Decimal(5,2), Comment Varchar(100))

VNCONTACT Contiene la lista de contactos de urgencia de cada paciente. Esta tabla contiene informacin como el nmero de la Seguridad Social del paciente, el nombre de la persona de contacto para situaciones de urgencia y la relacin de la persona con el paciente. El esquema de la tabla es el siguiente:
CREATE TABLE VNContact (PatientID Char(9) NOT NULL, ContactID Char(9) NOT NULL, Relationship Varchar(20), PRIMARY KEY (PatientID, ContactID))

VNSIGNATURE Contiene datos de firma en binario. Esta tabla est vaca cuando la aplicacin se ejecuta por primera vez. Esta aplicacin se utiliza conjuntamente con la aplicacin Visiting Nurse Plus y DB2 Everyplace Mobile Application Builder. El esquema de la tabla es el siguiente:
CREATE TABLE VNSignature (RecordID Integer not null PRIMARY KEY, NurseName Varchar(40), Signature Blob(2000))

Visin general de la aplicacin de ejemplo Visiting Nurse


La aplicacin Visiting Nurse proporciona un ejemplo de una aplicacin que utiliza DB2 Everyplace. Para Palm OS, la aplicacin se ha desarrollado en C utilizando Metrowerks CodeWarrior para Palm Computing Platform. Para Windows CE, la aplicacin se ha desarrollado en C utilizando Microsoft eMbedded Visual C++ 3. Para Symbian OS v6, la aplicacin se ha desarrollado en C++ utilizando Microsoft Visual C++ Versin 6 y Symbian C++ Software Developers Kit.
Consulta

391

Esta aplicacin de ejemplo se ha diseado para enfermeras que visitan a pacientes en sus domicilios. Sin esta aplicacin de DB2 Everyplace, las enfermeras tendran que tomar notas sobre papel y luego transcribirlas a una base de datos ubicada en una estacin de trabajo de su oficina. Despus de efectuar una sincronizacin inicial con el servidor, las enfermeras que realizan visitas a domicilio pueden: v Acceder a informacin general sobre un paciente como el nombre, la direccin, el nmero de telfono y el estado mdico. v Recopilar datos mdicos de un paciente como la presin sangunea, el pulso, la temperatura y el peso. v Obtener una indicacin automtica de la fecha y la hora en el nuevo registro mdico. v Acceder a una lista de personas con las que ponerse en contacto en caso de una situacin de urgencia. Al final del da, la enfermera puede sincronizar los datos del dispositivo porttil con una base de datos central para: v Actualizar la base de datos central con el estado del paciente v Obtener una lista de pacientes a los que debe visitar al da siguiente La base de datos utilizada en este ejemplo incluye cinco tablas. VNSCHEDULE Contiene las citas de la enfermera. Esta tabla contiene informacin como el ID del paciente y la hora de la cita. VNPERSON Contiene datos sobre los pacientes. Esta tabla contiene informacin como el nombre, el nmero de la Seguridad Social, la direccin y nmeros de telfono. El nmero de la Seguridad Social se utiliza como clave primaria. VNMEDICALRECORD Contiene registros mdicos de los pacientes. Esta tabla contiene datos como la presin sangunea, el pulso y la temperatura. El ID de registro mdico se utiliza como clave primaria. VNCONTACT Contiene la lista de contactos de urgencia de cada paciente. Esta tabla contiene informacin como el nmero de la Seguridad Social del paciente, el nombre de la persona de contacto para situaciones de urgencia y la relacin de la persona con el paciente. VNSIGNATURE Contiene datos de firma en binario. Esta tabla est vaca cuando la aplicacin se ejecuta por primera vez. Esta aplicacin se utiliza conjuntamente con la aplicacin Visiting Nurse Plus y DB2 Everyplace Mobile Application Builder.

Ejecucin de la aplicacin Visiting Nurse


Puede ver la aplicacin de ejemplo Visiting Nurse en su dispositivo porttil. Los ejemplos de esta seccin muestran el aspecto que tiene la aplicacin de ejemplo Visiting Nurse en el dispositivo porttil o emulador de Palm OS. Para ejecutar la aplicacin Visting Nurse:

392

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

1. Pulse el icono Nurse para iniciar la aplicacin de ejemplo Visiting Nurse. Se abrir la ventana de Planificacin, que muestra una lista de los pacientes que deben visitarse ese da.

Figura 3. Ventana Planificacin

2. Seleccione un nombre de paciente en la lista y pulse el botn Informacin para ver informacin general sobre el paciente.

Figura 4. Ventana de informacin sobre el paciente

3. Entre un nuevo registro mdico: a. Pulse el botn Historial. Se abrir la ventana Historial mdico, que muestra una lista de todos los registros mdicos creados previamente para el paciente.

Consulta

393

Figura 5. Ventana de Historial mdico

b. Pulse el botn Aadir. Se abrir la ventana Historial mdico, que muestra una lista de todos los registros mdicos creados previamente para el paciente.

Figura 6. Ventana Entrada historial

c. Rellene los datos personales del paciente y pulse el botn Salvar para guardar la entrada. El registro mdico se guardar junto con una indicacin de la fecha y la hora actuales. Pulse el botn Atrs para volver a la ventana Datos personales. 4. Visualice la lista de personas de contacto para situaciones de urgencia. a. Pulse el botn Contactos. Se abrir la ventana Lista de contactos de urgencia, que muestra una lista de las personas de contacto del paciente para casos de urgencia. b. Visualice informacin sobre una persona de contacto seleccionando el nombre de la persona en la lista y pulsando el botn Informacin.

394

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

CLP
Visin general de la aplicacin de CLP
El Procesador de lnea de mandatos (CLP) es una herramienta para el desarrollo de aplicaciones que se proporciona como aplicacin de ejemplo de para utilizar DB2 Everyplace en plataformas que disponen de una interfaz de lnea de mandatos. El CLP se utiliza para la base de datos porttil DB2 Everyplace en dispositivos porttiles. Sync Server no lo utiliza. La aplicacin de CLP es una herramienta distinta en todas las plataformas. La lista siguiente explica cmo se ha desarrollado la aplicacin de CLP para cada plataforma: v Para Palm OS, la aplicacin se ha desarrollado en C utilizando Metrowerks CodeWarrior para Palm Computing Platform. v Para QNX Neutrino, la aplicacin se ha desarrollado en C utilizando QNX Neutrino Developers Kit. v Para Linux incorporado, la aplicacin se ha desarrollado en C utilizando herramientas incluidas en BlueCat Linux de Lynuxworks. v Para Windows CE, la aplicacin se ha desarrollado en C utilizando Microsoft eMbedded Visual C++ 3.0. v Para Windows NT y Windows 2000, la aplicacin se ha desarrollado en C utilizando Microsoft Visual C++ Versin 6. v Para Symbian OS la aplicacin se ha desarrollado en C++ utilizando Microsoft Visual C++ Versin 6 and Symbian C++ Software Developers Kit.

Importacin y exportacin de datos utilizando el CLP


El Procesador de lnea de mandatos de DB2 Everyplace para las plataformas Palm OS, Symbian OS, Windows CE, Windows, Neutrino y Linux incorporado soporta la importacin de datos de un archivo a DB2 Everyplace y la exportacin de datos de DB2 Everyplace a un archivo. Para importar y exportar datos en Palm OS se utilizan los archivos memo del dispositivo. v Para importar datos de un archivo de un dispositivo porttil en DB2 Everyplace: 1. Escriba IMPORT FROM nombre_archivo OF DEL INSERT INTO nombre_tabla [(column list)] donde nombre_archivo es el nombre del archivo del que se debe realizar la importacin. En Palm OS, nombre_archivo es el nombre del archivo memo del que se debe realizar la importacin. El nombre del archivo debe aparecer en la primera lnea del archivo memo. Los archivos memo de Palm tienen una limitacin de almacenamiento de 4K bytes de texto. nombre_tabla es el nombre de una tabla existente a la que se debe realizar la importacin. Por ejemplo, para importar datos de un archivo denominado misdatos.txt a una tabla existente denominada mitabla, escriba:
IMPORT FROM misdatos.txt OF DEL INSERT INTO mitabla

v Para exportar datos de DB2 Everyplace a un archivo: 1. Escriba EXPORT TO nombre_archivo OF DEL sentencia donde nombre_archivo es el nombre del archivo en el que se deben grabar los datos. sentencia es la sentencia SELECT para seleccionar los datos que se deben exportar. Por ejemplo, para exportar todos los datos de la tabla denominada mitabla a un archivo denominado miarchivo.txt, escriba:
EXPORT TO miarchivo.txt OF DEL SELECT * FROM mitabla
Consulta

395

DB2 Everyplace para Palm OS utiliza un conjunto de herramientas de lnea de mandatos para Windows y una aplicacin Palm OS para importar y exportar datos como archivos PDB. Las herramientas de importacin/exportacin incluyen los siguientes archivos ejecutables, que estn instalados en la estacin de trabajo Windows. Estos archivos se encuentran en %DSYINSTDIR%\Clients\utilities: CSV2DB2e.exe Este archivo importa datos desde un archivo de valores separados por comas (con la extensin de archivo .csv) en una tabla de DB2 Everyplace. Una tabla DB2e (por ejemplo, una denominada PERSON) se representada mediante dos archivos, DSY_PERSON y DSY_iPERSON. El archivo DSY_PERSON contiene los datos y DSY_iPERSON contiene la informacin sobre ndices. DB2e2PDB.exe Este programa convierte una tabla de DB2 Everyplace al formato PDB de Palm OS. Luego, copia los archivos en el directorio del usuario e informa al programa HotSync de que hay archivos para instalar. Si hay ms de un usuario definido en el sistema, se mostrar una lista de usuarios para que pueda elegir el usuario deseado. PDB2DB2e.exe PDB2DB2e.exe convierte archivos PDB de Palm OS desde el rea de copia del usuario a la tabla de DB2 Everyplace. Si hay ms de un usuario definido en el sistema, se mostrar una lista de usuarios para que pueda elegir el usuario deseado. DB2e2CSV.exe DB2e2CSV exporta una tabla de DB2 Everyplace a un archivo CSV. Tambin utiliza los archivos de catlogo del sistema de DB2 Everyplace denominados DB2eSYSTABLES y DB2eSYSCOLUMNS. PalmImport.bat PalmImport.bat combina las operaciones de CSV2DB2e.exe y DB2e2PDB.exe. PalmExport.bat PalmExport.bat combina las operaciones de PDB2DB2e.exe y DB2e2CSV.exe. Las herramientas de Importacin/Exportacin incluyen la siguiente aplicacin de Palm OS: DB2eImport.prc Este programa registra los archivos de DB2 Everyplace transferidos por el programa HotSync al sistema DB2 Everyplace local. v Para importar datos al dispositivo Palm OS: 1. 1. Cree dos archivos con el mismo nombre (por ejemplo, VNPERSON), uno cuya extensin sea .csv y otro con la extensin .sch. El archivo .csv contiene los datos y el archivo .sch contiene el esquema para la tabla que se va a importar. Tenga en cuenta que el nombre de archivo no puede contener espacios en blanco. Los archivos de ejemplo .csv y .sch se encuentran en la carpeta DemoImport\. Los archivos se denominan VNPERSON.csv y VNPERSON.sch. La Tabla 192 en la pgina 397 lista los tipos de datos soportados y su representacin en el archivo CSV.

396

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 192. Tipo de datos integer (or int) smallint decimal(n,p) char(n) varchar(n) date time timestamp Representado como 1234 1234 12.34 John John aaaammdd 14.05.48 2001-05-01-16.16.51.000000

Para representar un valor nulo para una columna, no escriba nada entre las comas del archivo CSV. Por ejemplo, tres columnas de enteros (integer) con un valor nulo en la segunda columna se representaran como 1,,3 en el archivo CSV y se convertiran en 1, null, 3 en la base de datos. 2. Inicie la herramienta de importacin, PalmImport.bat, proporcionando el esquema de la tabla como parmetro. El esquema debe estar en un archivo .sch asociado. Utilice la sintaxis siguiente para iniciar la herramienta de Importacin: PalmImport.bat nombre_va_acceso nombre_archivodonde nombre_va_acceso es la va de acceso del archivo CSV y nombre_archivo es el nombre del archivo CSV en maysculas y sin extensin de archivo. El nombre del archivo CSV no se puede incluir entre comillas dobles ni puede contener espacios en blanco. Por ejemplo:
PalmImport.bat DemoImport VNPERSON

Las tablas importadas se aaden automticamente a la herramienta de Instalacin de Palm para que se instalen tras la siguiente operacin de HotSync. 3. Instale el archivo DB2eImport.prc en el dispositivo Palm OS utilizando la herramienta de Instalacin de Palm. 4. Efecte una operacin de HotSync para finalizar la instalacin de las tablas importadas y de DB2eImport.prc. 5. Inicie el programa DB2eImport en el dispositivo Palm OS para finalizar la importacin. v Para exportar datos desde el dispositivo Palm OS: 1. Realice una operacin HotSync para hacer una copia de seguridad del dispositivo Palm OS. Antes de iniciar una operacin de HotSync, haga siempre una copia de seguridad y elimine los archivos de DB2 Everyplace (archivos que comienzan con DSY) del directorio de copias de seguridad del usuario de Palm OS. En las estaciones de trabajo Windows, el rea de copia suele estar ubicada en: DirPalm\nombre_usuario\Backup donde DirPalm es el directorio en el que est instalado el software de Palm OS y nombre_usuario es el nombre de usuario del usuario de Palm OS. 2. Inicie el programa de exportacin, PalmExport.bat, con la siguiente sintaxis:
PalmExport.bat nombre_va_acceso nombre_archivo

donde nombre_va_acceso es la va de acceso de salida y nombre_archivo es el nombre de la tabla de DB2 Everyplace en maysculas. El nombre de la tabla

Consulta

397

de DB2 Everyplace no se puede incluir entre comillas dobles ni puede contener espacios en blanco. Por ejemplo:
PalmExport.bat DemoExport VNPERSON

El archivo resultante estar en la misma va de acceso que el archivo de origen. Cuando se detecte un error, las herramientas de importacin/exportacin informarn del nmero de registros que se hayan procesado. En el directorio %DSYINSTDIR%\Clients\utilities se incluye un ejemplo que utiliza las herramientas de importacin/exportacin. Los archivos de proceso por lotes PalmExport.bat y PalmImport.bat proporcionan ejemplos de cmo utilizar las herramientas CSV2DB2e.exe y DB2e2CSV.exe.

Java
Compilacin y ejecucin de la aplicacin de sincronizacin de Java de ejemplo DB2 Sync Console
Requisitos previos: v Instalacin y configuracin de DB2 Everyplace, versin 8.2 Sync Server. v Instalacin de los binarios de DB2 Sync Client en el dispositivo. Para conocer la ubicacin de estos ejemplos, consulte el apartado Visin general de las aplicaciones de ejemplo de DB2 Everyplace en la pgina 388. v Si utiliza un cliente IBM Cloudscape Versin 10, la instalacin de IBM Cloudscape Versin 10 en el dispositivo. DB2 Sync Console es una aplicacin de ejemplo Java para mostrar el uso de la API de Java de DB2 Everyplace Sync Client. DB2 Sync Console consta de seis archivos: DB2SyncConsole.java DB2SyncConstants.java DB2SyncConsoleListener.java db2sync_db2.properties db2sync_db2e.properties db2sync_db2j.properties 1. Compile la aplicacin DB2 Sync Console. Para esto se necesita el archivo isync4j.jar, el cual es uno de los binarios de Sync Cliente. a. Abra un indicador de mandatos. b. Escriba el mandato siguiente: javac -classpath isync4j.jar *.java 2. Configure el entorno. El entorno de va de acceso debe configurarse de modo que puedan ubicarse los binarios de Sync Client. a. Para Windows: Establezca la variable PATH para incluir la carpeta en la que estn ubicados los binarios de Sync Client. b. Para Linux o Neutrino: Exporte la LD_LIBRARY_PATH para incluir la carpeta en la que estn ubicados los binarios de Sync Client. 3. Ejecute el ejemplo. DB2 Sync Console se puede utilizar con el cliente C o con el cliente DB2j de Java. Se utiliza un archivo de propiedades para determinar el cliente que ha de utilizarse. Se proporcionan archivos de propiedades de ejemplo tanto para DB2e como para DB2j.

398

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

v Para utilizar el cliente C, pase el archivo db2sync_db2e.properties escribiendo el mandato siguiente: java -classpath isync4j.jar DB2SyncConsole db2sync_db2e.propertiesSi obtiene una excepcin UnsupportedEncodingException al ejecutar el ejemplo con J9, incluya charconv.zip en la va de acceso de clase \ive\runtimes\common\ive\lib. v Para utilizar el cliente de DB2j de Java, incluya el archivo jar de DB2j Sync Client, el archivo jar de IBM Cloudscape Versin 10 y pase db2sync_db2j.properties cuando ejecute DB2 Sync Console. Por ejemplo, escriba: java -classpath %CLOUDSCAPE_HOME%\lib\cs.jar db2jisync.jar DB2SyncConsole db2sync_db2j.properties La aplicacin se inicia con un men de texto que contiene las opciones siguientes: a. Realizar sincronizacin b. Habilitar, inhabilitar o restablecer conjuntos suscripciones c. Cambiar valores del servidor d. Ver las anotaciones cronolgicas e. Acerca del cliente de sincronizacin f. Salir 4. Especifique la opcin 3 para configurar los valores de servidor. Esta opcin le permitir especificar la direccin IP de Sync Server, la contrasea y nombre de usuario de sincronizacin y otras opciones. 5. Especifique la opcin 1 para realizar la sincronizacin.

Desarrollo de la aplicacin isync4j para MIDP con ANT y la lnea de mandatos de Sun Wireless Toolkit
Baje e instale el software siguiente para trabajar con los ejemplos suministrados: v Sun Microsystems JavaTM 2 Platform Micro Edition, Wireless Toolkit v Apache ANT v RetroGuard Ofuscator v El cliente MIDP en http://www.ibm.com/software/data/db2/everyplace/support.html pulsando en el enlace DB2 Everyplace samples (Ejemplos de DB2 Everyplace) v Opcional: Recompile las demos si las desea modificar. El directorio lib contiene archivos JAD y JAR precompilados. Se proporcionan los scripts build.bat y build.xml para ilustrar el uso de Apache ANT, la herramienta DeployManifest y el ofuscador RetroGuard. 1. Aada retroInstallDir\lib\retroguard.jar a la variable CLASSPATH. 2. Establezca las variables siguientes en el entorno tal como se indica a continuacin: v ANT_HOME en la raz de la instalacin de ANT v DB2m_HOME en el directorio Midp v J2MEWTK_HOME en la raz de la instalacin de Sun Wireless Toolkit v JAVA_HOME en la raz de la instalacin de JDK 1.3 o JDK 1.3.1 (nicamente) v JAVA14_HOME en la raz del directorio de JDK 1.4

Consulta

399

3. Ejecute el archivo build.bat en la raz del directorio de clientes MIDP para rellenar el directorio lib de MIDP con nuevos archivos JAR y JAD. Existe un archivo JAR y varios archivos JAD para cada configuracin de id de usuario y de dispositivo. 4. Encontrar varios directorios build\*classes nuevos, que se utilizan a efectos de verificacin previa y ofuscacin. Existe un archivo JAR y varios archivos JAD para cada configuracin de ID de usuario y de dispositivo. Vea en los archivos JAD cmo estn establecidos el ID de usuario, la contrasea y el ID de dispositivo, y cmo se pasan a la aplicacin MIDLet. 5. Utilice la clase DeployManifest para generar el archivo JAR Manifest y el archivo JAD. La clase DeployManifest est incluida en lib\FilterServlet*.jar y se la llama desde el archivo build.xml. a. Para generar el archivo de manifiesto, escriba java DeployManifest -m <nombreMidlet> <nombreClase> <nombreArchivoImgenes> <nombreArchivoSalida> b. Para generar el archivo JAD, escriba java DeployManifest -j <nombreJarMidlet> -U <mxPaquetesCarga> -D \ <mxPaquetesDescarga> -n <nmClientes> <NombreBaseJad> <nombreArchivoSalida> 6. Edite las entradas setJad del archivo build.xml para cambiar de forma permanente el ID de usuario, la contrasea u otros atributos. Apache ANT llama internamente a la clase DeployManifest desde build.xml. Los valores por omisin son nurse1 y nurse1. 7. Ejecute la aplicacin isync4j. 8. La instalacin de DB2 Everyplace crea una base de datos VNurse con conjuntos de suscripcin, usuarios y grupos. a. Seleccione Inicio DB2 Everyplace Iniciar el Centro de administracin de dispositivos porttiles y verifique que exista un usuario denominado nurse1. La contrasea de este usuario est establecida en nurse1. Puede utilizar este nombre de usuario o puede editar el archivo lib\<midlet>.jad que pasa al script de ejecucin. Observe que, cada vez que compile los cambios efectuados, se sobregrabarn los archivos JAD. Para cambiar el usuario y la contrasea de forma permanente, vea samples\DeployManifest.java. b. Inicie Sync Server utilizando Tomcat o Websphere Versin 4.0 o posteriores. Las conexiones HTTP desde telfonos MIDP utilizan la codificacin de transferencia de HTTP, que requiere un motor de servlet que soporte la especificacin HTTP Servlet 2.3 y HTTP 1.1. c. Ejecute el archivo BATCH del directorio Midp\bin pasndole el nombre de un archivo JAD del directorio Midp\lib: v Para ejecutar la versin sin depuracin de la demostracin, escriba:
run VNurse

v Para ejecutar la versin con depuracin utilizando nurse3 como ID de usuario y contrasea del dispositivo nmero 213, escriba:
run VNurseDebug3

El J2ME MIDP Sync Client utiliza las interfaces y clases que estn definidas en el paquete com.ibm.mobileservices.isync.midp, as como las de los paquetes com.ibm.mobileservices.isync y com.ibm.mobileservices.isync.event.

400

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Desarrollo de la aplicacin isync4j para MIDP con Sun Wireless Toolkit


Consulte Visin general de los proveedores de sincronizacin de Java de DB2 Everyplace en la pgina 30 para obtener informacin ms detallada sobre los requisitos previos de hardware y software para utilizar el proveedor de sincronizacin DB2 Everyplace J2ME para MIDP. Puede descargar el cliente MIDP en http://www.ibm.com/software/data/db2/everyplace/support.html pulsando en el enlace DB2 Everyplace samples (Ejemplos de DB2 Everyplace). En este tema se describe cmo desarrollar ISYNC4J de DB2 Everyplace para MIDP dentro de la aplicacin Sun Wireless Toolkit. Los ejemplos utilizados en este apartado se basan en la aplicacin de ejemplo VNurse. 1. Active Wireless Toolkit. Desde un indicador de lnea de mandatos, cambie al directorio bin en el que est instalado Sun Wireless Toolkit. Escriba ktoolbar.bat. Recommendation: Utilice un indicador de mandatos en lugar del men Inicio de Windows. 2. Cree un nuevo proyecto para la aplicacin de ejemplo isync4j: a. Abra el J2ME Wireless Toolkit b. Seleccione New Project. c. Escriba el nombre de proyecto (por ejemplo, VNurse) d. Escriba un nombre de clase MIDlet (por ejemplo, com.ibm.mobileservices.demo.VNurse) e. Pulse Create Project. f. Copie el archivo ISyncMidp.jara la biblioteca de proyectos J2ME. g. Opcional: Si desea ver la salida del rastreo mientras se ejecuta el MIDlet, copie ISyncMidpDebug.jar a dir_instalacin_j2me\apps\VNurse\lib. Nota: No utilice el rastreo cuando cree un archivo JAR que se vaya a instalar en el telfono. El archivo JAR resultante ser demasiado grande para instalarlo. Opcional: Para utilizar la ofuscacin (reducir el tamao del cdigo), copie el archivo retroguard.jar al directorio bin en que est instalado J2ME. Pulse Settings. Se abre la ventana Settings para el proyecto. Pulse la pestaa User Defined y Add para escribir las entradas Key y Value siguientes: v Db2eSyncPassword, nurse1 [default] v Db2eSyncUserName, nurse1 [default] v PacketDownSize, 2800 [ default 30000 ] v PacketUpSize, 1400 [ default 30000] v Db2eSyncHost, localhost [default] v Db2eSyncPort, 9080 [default] Sun Wireless Toolkit coloca estos valores en el archivo .jad y el MIDlet los lee durante la ejecucin. La aplicacin de ejemplo de DB2 Everyplace (VNurse) mostrar un archivo de imgenes PNG. Pulse la pestaa MIDlets y seleccione MIDlet-1. Pulse Edit y cambie VNurse.png por ibm.png. Tendr que copiar ibm.png en el directorio J2ME_ install_ dir\apps\VNurse\res.

h. i.

j. k.

3. Importe los archivos Java de ejemplo de DB2 Everyplace al proyecto.

Consulta

401

4. Cree y ejecute la aplicacin de ejemplo VNurse. En la ventana de Sun Wireless Toolkit, pulse Build y Run.

Aplicaciones de sincronizacin nativa de Java de ejemplo


Existen varios programas Java de ejemplo que puede utilizar como ayuda para escribir aplicaciones de sincronizacin Java para DB2 Everyplace. Consulte el apartado Visin general de las aplicaciones de ejemplo de DB2 Everyplace en la pgina 388 para obtener ms informacin sobre el lugar en que estn ubicados los ejemplos. El programa de ejemplo ISyncSample.java demuestra cmo codificar una aplicacin Sync Client para el proveedor de sincronizacin nativo de DB2 Everyplace. Los pasos principales de la aplicacin de ejemplo ISyncSample.java son los siguientes: 1. Importar los paquetes de sincronizacin de DB2 Everyplace.
import com.ibm.mobileservices.isync.*; import com.ibm.mobileservices.isync.event.*;

Para el proveedor de sincronizacin basado en JNI,


import com.ibm.mobileservices.isync.db2e.jni.*;

Para el proveedor de sincronizacin basada en la deteccin,


import com.ibm.mobileservices.isync.db2e.sti.*;

2. Implementar el mtodo eventIssued de la interfaz ISyncListener para la notificacin de sucesos durante la sincronizacin. 3. Obtener una instancia de DB2eISyncProvider. 4. Obtener del objeto de proveedor una instancia del servicio de sincronizacin. 5. Obtener del objeto de servicio una instancia del almacn de configuracin. 6. Obtener del objeto de almacn de configuracin una instancia del controlador de sincronizacin. 7. Registrar el objeto de escucha de la aplicacin que implementa la interfaz ISyncListener para la notificacin de sucesos del objeto de controlador de sincronizacin durante la sincronizacin. 8. Realizar una sincronizacin sobre todos los conjuntos de suscripcin habilitados. Comprobar el cdigo de retorno y el estado de excepcin de la sincronizacin. 9. Cerrar y liberar todos los recursos asignados por el proveedor de sincronizacin.
// Ejemplo 1: // // Paso 1: // import import import ISync Java - Uso de la API simple

importar los paquetes Java de Sync Client com.ibm.mobileservices.isync.*; com.ibm.mobileservices.isync.event.*; com.ibm.mobileservices.isync.db2e.jni.*;

// Paso 2: implementar el mtodo eventIssued() en // la interfaz ISyncListener si est interesado en la notificacin // de sucesos (opcional) // public class ISyncSample implements ISyncListener { public ISyncSample () {}

402

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

public int eventIssued(ISyncEvent evt) { int evtType = evt.getEventType(); switch(evtType) { // visualizar el estado del suceso case ISync.EVTTYPE_INFO: case ISync.EVTTYPE_ERROR: System.out.println System.out.println System.out.println System.out.println System.out.println System.out.println System.out.println System.out.println ("*********************"); ("SubsSet: " + evt.getSubscriptionSetName() ); ("Subs: " + evt.getSubscriptionName() ); ("SubsType: " + evt.getSubscriptionType() ); ("Event Type: " + evtType ); ("Event Code: " + evt.getEventCode() ); ("Progress: " + evt.getSyncProgress()); ("**********************\n");

return ISync.RTNCB_DONE; case ISync.EVTTYPE_RETRY: return ISync.RTNCB_REPLY_YES; case ISync.EVTTYPE_CONFLICT: return ISync.RTNCB_DONE; // ignorar otros tipos de suceso default: break;

// dejar que el motor de sincronizacin emprenda la accin por omisin return ISync.RTNCB_DEFAULT ; } public void runSample(String host, String port, String userID, String passwrd) { ISyncProvider provider = null; ISyncService service = null; ISyncConfigStore config = null; ISyncDriver syncer = null; String path = "data"; // dir de datos bajo dir actual ISyncSubscriptionSet ssArr[] = null; int rc = 0; try { // Paso 3: obtener una instancia de DB2eISyncProvider // provider = DB2eISyncProvider.getInstance(); // Paso 4: obtener del proveedor una instancia // de servicio de sincronizacin //

/* Para el cliente de sincronizacin DB2j, se necesita el controlador JDBC y el URL String driver = "com.ibm.db2j.jdbc.DB2jDriver"; String jdbcUrl = jdbc:db2j:crtlDb;create=true; */ if (driver != null) userProps.put("target.db.driver", driver); if (jdbcUrl != null)
Consulta

403

userProps.put("target.db.url", jdbcUrl); Properties userProps = new Properties(); userProps.put("isync.user", user); userProps.put("isync.password", password); userProps.put("isync.trace", "detailed"); service = provider.createSyncService(uri, userProps); // Paso 5: obtener una instancia del almacn de configuracin // config = service.getConfigStore(path); // Paso 6: obtener una instancia del controlador de // sincronizacin syncer = config.getSyncDriver(); // Paso 7: establecer objeto de escucha para notificacin // de sucesos desde objeto sincronizador durante la sincronizacin syncer.setSyncListener(this); // Paso 8: realizar sincronizacin en todos los conjuntos // de suscripcin habilitados // rc = syncer.sync(); switch (rc) { case ISync.RTN_SUCCEEDED: System.out.println("Synchronization succeeded"); break; case ISync.RTN_CANCELED: System.out.println ("Synchronization canceled"); break; default: System.out.println ("Synchronization failed"); break;

ssArr = config.getSubscriptionSets(); for (int i=0; i < ssArr.length; i++ ) { System.out.print ("Subscription Set: " + ssArr[i].getName() + " Status: "); switch(ssArr[i].getStatus()) { case ISync.STATUS_READY: System.out.println("READY"); break; case ISync.STATUS_COMPLETED: System.out.println ("COMPLETED"); break; case ISync.STATUS_CANCELED: System.out.println ("CANCELED"); break; default: System.out.println ("FAILED"); break;

404

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

} } catch (ISyncException ie) { System.out.println("Exception code: " + ie.getCode()); ie.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { // Paso 9: cerrar y liberar todos los recursos asignados // try { if (syncer != null) { syncer.close(); syncer = null; } if (config != null) { config.close(); config = null; } if (service != null) { service.close(); service = null; }

} catch(ISyncException ie2) { System.out.println("Exception code: " + ie2.getCode()); ie2.printStackTrace();

} } // end runSample()

public static void main(String args[]) { String String String String host port userID passwrd = = = = "localhost"; "8080"; "nurse1"; "nurse1";

ISyncSample isa = new ISyncSample(); if (args.length > 0) { if (args.length == 4) { host = args[0]; port = args[1]; userID = args[2]; passwrd = args[3]; } System.out.println("Usage: java ISyncSample [host] [port] " + "[userid] [password]"); isa.runSample(host, port, userID, passwrd); // final de principal()

else } } }

// final de clase ISyncSample

Consulta

405

Aplicaciones de sincronizacin MIDP de Java de ejemplo


Existen varias aplicaciones Java de ejemplo que puede utilizar como ayuda para escribir aplicaciones de sincronizacin Java para DB2 Everyplace. Puede descargar el cliente MIDP en http://www.ibm.com/software/data/db2/everyplace/support.html pulsando en el enlace DB2 Everyplace samples (Ejemplos de DB2 Everyplace). El ejemplo principal es la aplicacin Visiting Nurse, VNurse.java y NursesAid.jar. La aplicacin consta de dos archivos. La aplicacin no proporciona cdigo de RMS (Record Store Management) ni una interfaz de usuario slida. Los archivos son: v ISyncSample.java : control de MIDlet v ISyncWorker.java : trabajador responsable de sincronizar los datos Detalles del archivo ISyncWorker.java El programa de ejemplo SyncWorker.java demuestra cmo codificar una aplicacin Sync Client para el proveedor de sincronizacin MIDP de DB2 Everyplace. La aplicacin Java de ejemplo realiza los pasos siguientes: 1. Importar los paquetes de sincronizacin de DB2 Everyplace.
import com.ibm.mobileservices.isync.*; import com.ibm.mobileservices.isync.event.*; import com.ibm.mobileservices.isync.midp.*;

2. Implementar el mtodo eventIssued de la interfaz ISyncListener para la notificacin de sucesos durante la sincronizacin. 3. Obtener una instancia de MIDPISyncProvider 4. Obtener del objeto de proveedor una instancia del servicio de sincronizacin 5. Obtener del objeto de servicio una instancia del almacn de configuracin 6. Obtener del objeto de almacn de configuracin una instancia del controlador de sincronizacin 7. Registrar el objeto de escucha de la aplicacin que implementa la interfaz ISyncListener para la notificacin de sucesos del objeto de controlador de sincronizacin durante la sincronizacin 8. Realizar una sincronizacin sobre todos los conjuntos de suscripcin habilitados. Comprobar el cdigo de retorno y las excepciones para ver el estado de la sincronizacin. 9. Cerrar y liberar todos los recursos asignados por el proveedor de sincronizacin. Ejemplo ISyncSample.java El ejemplo siguiente contiene comentarios que hacen referencia a los pasos del apartado anterior.
// Ejemplo 1: // // Paso 1: // import import import ISync Java - Uso de la API simple

importar los paquetes Java de Sync Client com.ibm.mobileservices.isync.*; com.ibm.mobileservices.isync.event.*; com.ibm.mobileservices.isync.midp.*;

/** Clase de soporte que maneja todas las tareas de sincronizacin. La llama ISyncSample.

406

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

*/ public class SyncWorker extends Thread implements ISyncListener { private ISyncSample midlet; private boolean mCancel; private ISyncProvider provider; private ISyncService service; private ISyncConfigStore config; private ISyncDriver syncer; private String eventString; public SyncWorker(ISyncSample midlet) { this.midlet = midlet; mCancel = false; } // Paso 2: implementar el mtodo eventIssued() en la interfaz // si est interesado en la notificacin de sucesos (opcional) // public int eventIssued(ISyncEvent evt) { int evtType = evt.getEventType(); int evtCode = evt.getEventCode(); int evtProg = evt.getSyncProgress(); String ssName = evt.getSubscriptionSetName(); Object listenerInfo = evt.getEventInfo(); Exception e = null; ConflictReader cr = null; if (listenerInfo instanceof Exception) e = (Exception) listenerInfo; else if (listenerInfo instanceof ConflictReader) cr = (ConflictReader) listenerInfo; eventString += evtCode + ":"; switch(evtType) { // visualizar el estado del suceso case ISync.EVTTYPE_INFO: { switch (evtCode) case ISync.EVT_INF_SYNCING_SUBS: midlet.updateSyncStat1("Synchronizing " + ssName); midlet.updateSyncStat2(" "); break; case ISync.EVT_INF_SYNC_STARTED: midlet.updateSyncStat1("Synchronization started"); midlet.updateSyncStat2(" "); break; case ISync.EVT_INF_PREP_MSG: midlet.updateSyncStat2("Preparing message..."); break; case ISync.EVT_INF_SEND_MSG: midlet.updateSyncStat2("Sending message..."); break; case ISync.EVT_INF_WAIT_MSG: midlet.updateSyncStat2("Awaiting server reply..."); break; case ISync.EVT_INF_APPLY_MSG: midlet.updateSyncStat2("Applying server message..."); break;
Consulta

407

case ISync.EVT_INF_SYNC_CANCELED: midlet.updateSyncStat1("Synchronization canceled"); midlet.updateSyncStat2(" "); break; case ISync.EVT_INF_SYNC_SUCCEEDED: midlet.updateSyncStat1("Synchronization succeeded"); midlet.updateSyncStat2(" "); break; case ISync.EVT_INF_SYNC_FAILED: midlet.updateSyncStat1("Synchronization failed"); midlet.updateSyncStat2(" "); break; default: break; } return ISync.RTNCB_DONE; case ISync.EVTTYPE_ERROR: midlet.updateSyncStat2("Error: " + evtCode); return ISync.RTNCB_DONE; case ISync.EVTTYPE_RETRY: midlet.updateSyncStat2("Retry: " + evtCode); return ISync.RTNCB_REPLY_YES; case ISync.EVTTYPE_CONFLICT: if (evtCode == ISync.EVT_CFT_REJECT) { String tabName = evt.getSubscriptionName(); midlet.updateSyncStat2("Conflict: " + tabName); /* La aplicacin tiene que hacer lo correcto con conflictRow. */ // System.out.println("Conflict table " + tabName // + " row: " + conflictRow);

} return ISync.RTNCB_DONE;

// ignorar otros tipos de suceso default: break; } // dejar que el motor de sincronizacin emprenda la accin por omisin return ISync.RTNCB_DEFAULT ; } // final de eventIssued() /* Se implementa la sincronizacin en una hebra para permitir que el usuario cancele la peticin que, siendo de una sola hebra, se puede colgar en una peticin de E/S */ public void run() { sync(); } public void cancel() { try { if (syncer != null) syncer.cancelSync();

408

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

} catch (ISyncException iex) {} mCancel = true; } private void sync() { try { eventString = " "; String String String String user = "nurse1"; password = "nurse1"; host = "localhost"; port = "9080";

/* Si el archivo jad tiene valores, utilcelos, vea DeployManifest.java en las herramientas. En Sun WirelessToolkit, bajo Settings, puede entrar valores en la pestaa User Defined. */ String x = midlet.getAppProperty("Db2eSyncUserName"); if (x != null) user = x; x = midlet.getAppProperty("Db2eSyncPassword"); if (x != null) password = x; x = midlet.getAppProperty("Db2eSyncHost"); if (x != null) host = x; x = midlet.getAppProperty("Db2eSyncPort"); if (x != null) port = x; midlet.appendForm(host + ":" + port + " " + user + "/" + password); // Paso 3: obtener una instancia de MIDPISyncProvider // provider = MIDPISyncProvider.getInstance(); // Paso 4: obtener del proveedor una instancia // de servicio de sincronizacin // Hashtable ht = new Hashtable(); ht.put("isync.user", userName); ht.put("isync.password", password); ht.put("isync.trace", "detailed"); service = provider.createSyncService(URI, ht); // Paso 5: obtener una instancia del almacn de configuracin // config = service.getConfigStore(null); // Paso 6: obtener una instancia del controlador de // sincronizacin para realizar la sincronizacin // syncer = config.getSyncDriver(); // Paso 7: establecer objeto de escucha para la notificacin // de sucesos desde objeto sincronizador durante la sincronizacin
Consulta

409

// syncer.setSyncListener(this); // Paso 8: realizar sincronizacin en todos los conjuntos // de suscripcin habilitados // int rc = syncer.sync(); switch (rc) { case ISync.RTN_SUCCEEDED: midlet.reportSyncStatus("Synchronization succeeded " + eventString); break; case ISync.RTN_CANCELED: midlet.reportSyncStatus("Synchronization canceled " + eventString); break; default: midlet.reportSyncStatus("Synchronization failed " + eventString); break; Paso 9: Cerrar todos los recursos

} // //

close(); } catch (ISyncException iex) { midlet.reportSyncStatus("Exception Code: " + iex.getCode() + ", Event codes: " + eventString); } catch (Exception e) { midlet.reportSyncStatus(e.toString()); } finally { mCancel = false; } } private void close() throws ISyncException { if (syncer != null) { syncer.close(); syncer = null; } if (config != null) { config.close(); config = null; } if (service != null) { service.close(); service = null; }

410

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

provider = null; }

Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS


1. Instale WebSphere Studio Device Developer (WSDD) 5.7, que incluye la mquina virtual de Java J9 2.2. WSDD utiliza J9 VM, que es posible que no soporte el tipo de procesador de su dispositivo. Si utiliza otro entorno de desarrollo y una JVM, asegrese de que la JVM soporte la JNI, puesto que el controlador JDBC de DB2 Everyplace usa la JNI. Otras JVM compatibles incluyen Sun PersonalJava, Insignia Jeode y NSIcom CrEme. Puede descargar una versin de evaluacin de WSDD de http://www.ibm.com/software/wireless/wsdd/ 2. Prepare el destino y el entorno de desarrollo segn la documentacin de WSDD. Verifique la instalacin de WSDD creando y ejecutando aplicaciones WSDD de ejemplo. 3. Instale DB2 Everyplace en el dispositivo de destino. Para compilar y ejecutar el cdigo Java de ejemplo en destinos que no sean Palm OS: 1. Cree un proyecto WSDD y aada archivos jar a la va de acceso de creacin para DB2eAppl.java. 2. Importe DB2eAppl.java a WSDD. 3. Ejecute DB2eAppl.java. Los pasos varan en funcin del sistema operativo. v Ejecucin de DB2eAppl.java en Windows en la pgina 412 v Ejecucin de DB2eAppl.java en Windows CE en la pgina 413 v Ejecucin de DB2eAppl.java en QNX Neutrino o Linux incorporado en la pgina 417 v Ejecucin de DB2eAppl.java en Symbian en la pgina 418

Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS


Requisitos previos: 1. Instale WebSphere Studio Device Developer (WSDD) 5.7, que incluye la mquina virtual de Java J9 2.2. Si el destino es Palm OS, deber utilizar la mquina virtual J9 que se proporciona con WSDD. La versin de evaluacin de WSDD se puede bajar desde la direccin http://www.ibm.com/software/pervasive/products/wsdd/. 2. Prepare el destino y el entorno de desarrollo segn la documentacin de WSDD. Verifique la instalacin de WSDD creando y ejecutando aplicaciones WSDD de ejemplo. 3. Instale DB2 Everyplace en el dispositivo de destino. Para compilar y ejecutar el cdigo Java de ejemplo en destinos Palm OS: 1. Cree un proyecto WSDD para DB2eAppl.java. 2. Aada el controlador JDBC de DB2 Everyplace y el paquete java.sql a la va de acceso de creacin. 3. Importe DB2eAppl.java a WSDD. 4. Ejecute DB2eAppl.java en un emulador de Palm OS.

Consulta

411

Adicin del controlador JDBC de DB2 Everyplace y del paquete java.sql a la va de acceso de creacin: Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS. Despus de completar estos pasos, vuelva al apartado Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS en la pgina 411. 1. Pulse el botn derecho del ratn en el proyecto de DB2Everyplace-Samplemidp20 la vista Package Explorer (Explorador de paquetes) de la perspectiva de Java y despus pulse Properties (Propiedades) en el men emergente. 2. En la ventana de propiedades que se abrir, pulse Java Build Path (Va de acceso de creacin de Java) en el panel de la izquierda y despus pulse la pestaa Libraries (Bibliotecas) en el panel de la derecha. 3. Pulse Add External JARs (Aadir JAR externos). En la ventana JAR Selection (Seleccin de JAR), navegue a %DSYINSTDIR%\Clients\PalmOS\database\JDBC\midp20\DB2eJDBC.jar y despus pulse Open (Abrir). 4. Cuando vuelva a la ventana Properties (Propiedades), pulse OK (Bien). Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS en la pgina 411.

DB2eAppl
Ejecucin de DB2eAppl.java en Windows
Si todava no ha configurado el sistema para utilizar el controlador JDBC de DB2 Everyplace: 1. Mediante el mandato set, incluya el directorio siguiente en la variable del sistema PATH: %DSYINSTDIR%\Clients\Win32\database\x86 2. Mediante el mandato set, incluya el archivo siguiente en la variable del sistema CLASSPATH: %DSYINSTDIR%\Clients\Win32\database\jdbc\db2ejdbc.jar Nota: Si WSDD est abierto, necesitar reiniciarlo para que estos cambios se reflejen en WSDD. Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS. Despus de completar estos pasos, vuelva al apartado Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411. 1. Cree DB2eAppl.java a. En la vista Package Explorer (Explorador de paquetes) de la perspectiva Java, pulse con el botn derecho del ratn sobre el proyecto DB2Everyplace-Sample y, a continuacin, pulse Device Developer Builds (Creaciones del desarrollador de dispositivos). b. En la ventana Configure builds (Configurar creaciones), pulse Add (Aadir). c. En la ventana Create new build (Generar nueva creacin), deje los valores por omisin y pulse Next (Siguiente). d. En el marco General build settings (Valores generales de creacin) de la ventana Create new JXE (Crear nuevo JXE), deje los valores por omisin y pulse Next (Siguiente).

412

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

e. En el marco Target platform (Plataforma de destino) de la ventana Create new JXE (Crear nuevo JXE), seleccione J9 for Windows x86 para el campo Platform (Plataforma) y pulse Next (Siguiente). f. En el marco Contents (Contenido) de la ventana Create New JXE (Crear nuevo JXE), deje los valores por omisin y pulse Finish (Finalizar). g. De vuelta en la ventana Configure builds (Configurar creaciones), seleccione winx86 Jxe Build (Creacin winx86 Jxe) y pulse Run (Ejecutar). h. En la ventana Jxelink warnings (Avisos de Jxelink), pulse Details (Detalles). Los avisos indican que las clases a las que se hace referencia en el paquete java.sql no se han encontrado. Pase por alto estos avisos, puesto que estas clases estn incluidas en el archivo DB2eJDBC.prc. i. Pulse OK (Bien) para cerrar la ventana Jxelink warnings (Avisos de Jxelink). j. Pulse Close (Cerrar) para cerrar la ventana Progress Information (Informacin de progreso), en la que debe aparecer el mensaje jxelink prc BUILD SUCCESSFUL (La creacin de jxelink prc ha sido satisfactoria). k. Pulse Close (Cerrar) para cerrar la ventana Configure builds (Configurar creaciones). 2. Ejecute DB2eAppl.java. a. Pulse Run (Ejecutar) Run. Se abrir la ventana Run. b. En la ventana Run, seleccione Java Application (Aplicacin Java) en el panel izquierdo y despus pulse New (Nueva). c. En la configuracin que aparece en el panel derecho, escriba DB2eAppl Win32 en el campo Nombre. d. En el panel Main (Principal), siga estos pasos: 1) Pulse Browse (Examinar) para el campo Project (Proyecto). En la ventana Project Selection (Seleccin de proyecto), seleccione DB2Everyplace-Sample Everyplace Sample y despus pulse OK (Bien). 2) Pulse Search (Buscar) para el campo Main class (Clase principal). En la ventana Choose Main Type (Elegir tipo principal), seleccione DB2eAppl y despus pulse OK (Bien). e. En el panel Classpath (Va de acceso de clases), deseleccione el recuadro de seleccin Use default class path (Utilizar va de acceso de clases por omisin). f. En el panel User classes (Clases del usuario), seleccione <WSDD57>/wsdd5.0/technologies/eswe/bundlefiles/jdbc.jar y pulse Remove (Eliminar). g. En el panel Bootstrap classes (Clases de secuencia de arranque), pulse Add External JARs (Aadir JAR externos). h. En la ventana Jar Selection (Seleccin de JAR), navegue a <WSDD57>/wsdd5.0/technologies/eswe/bundlefiles/jdbc.jar y pulse Open (Abrir). i. De nuevo en la ventana Launch Configurations (Ejecutar configuraciones), pulse Apply (Aplicar) y despus pulse Run (Ejecutar). Deber ver la salida de la aplicacin de ejemplo en la Consola de WSDD. Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411.

Ejecucin de DB2eAppl.java en Windows CE


Requisitos previos:
Consulta

413

Si todava no ha configurado el sistema para utilizar el controlador JDBC de DB2 Everyplace, lleve a cabo los pasos siguientes: 1. Copie los siguientes archivos en el directorio \Windows del dispositivo: %DSYINSTDIR%\Clients\WinCE\database\proc\ver\db2ejdbc.dll %DSYINSTDIR%\Clients\WinCE\database\jdbc\db2ejdbc.jar donde proc es el tipo de procesador y ver es el nmero de versin del sistema operativo Windows CE del dispositivo. 2. Copie el siguiente archivo en el directorio \Archivos de programa\J9 del dispositivo, donde \Archivos de programa\J9 es el directorio de instalacin de J9: <WSDD57>\wsdd5.0\technologies\eswe\bundlefiles\jdbc.jar donde proc es el tipo de procesador y ver es el nmero de versin del sistema operativo Windows CE del dispositivo. 3. Utilizando el Editor de registro remoto de Windows CE, modifique el registro del dispositivo para incluir los archivos siguientes en la va de acceso de clases (CLASSPATH) del dispositivo: \Windows\db2ejdbc.jar \Archivos de programa\J9\jdbc.jar Como alternativa, puede actualizar el atajo DB2eAppl generado por WSDD: 256#\Archivos de programa\J9\FOUN10\bin\j9.exe -Xbootclasspath/a:\Archivos de programa\J9\jdbc.jar -classpath \Temp\DB2eAppl.jxe;\Windows\db2ejdbc.jar -jcl:foun10 DB2eAppl Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS. Despus de completar estos pasos, vuelva al apartado Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411. Para ejecutar DB2eAppl.java en Windows CE: 1. Configure el dispositivo Windows CE. a. Pulse Devices (Dispositivos) Configure (Configurar). b. En la ventana Device Configurations (Configuraciones de dispositivo), seleccione PocketPC Handheld (Dispositivo de bolsillo PocketPC) en el panel izquierdo y despus pulse New (Nuevo). c. En la configuracin que aparece a la derecha, complete los pasos siguientes: 1) En el campo Device name (Nombre de dispositivo), escriba Dispositivo de bolsillo PocketPC de DB2 Everyplace. 2) Pulse Browse (Examinar) para el campo Location of J9 runtime OR Emulator (Ubicacin del entorno de ejecucin J9 O emulador). En la ventana Browse for Folder on Device (Examinar carpeta en el dispositivo), seleccione \Archivos de programa\J9\FOUN10 (suponiendo que haya instalado J9 en este directorio del dispositivo) y, a continuacin, puse OK (Aceptar). 3) Pulse Browse (Examinar) para el campo Location to install (Ubicacin para la instalacin). En la ventana Browse for Folder on Device (Examinar carpeta en el dispositivo), seleccione Temp y despus pulse OK (Bien). 4) Pulse Browse (Examinar) para el campo Location for shortcut (Ubicacin para el acceso directo). En la ventana Browse for Folder on Device (Examinar carpeta en el dispositivo), seleccione Temp y despus pulse OK (Bien).

414

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

d. De vuelta en la ventana Device Configurations (Configuraciones de dispositivo), pulse Apply (Aplicar) y despus pulse OK (Bien). 2. Cree DB2eAppl.java. a. En la vista Package Explorer (Explorador de paquetes) de la perspectiva Java, pulse con el botn derecho del ratn sobre el proyecto DB2Everyplace-Sample y seleccione Device Developer Builds (Creaciones del desarrollador de dispositivos). b. En la ventana Configure builds (Configurar creaciones), pulse Add (Aadir). c. En la ventana Create new build (Generar nueva creacin), deje los valores por omisin y pulse Next (Siguiente). d. En el marco General build settings (Valores generales de creacin) de la ventana Create new JXE (Crear nuevo JXE), deje los valores por omisin y pulse Next (Siguiente). e. En el marco Target platform (Plataforma de destino) de la ventana Create new JXE (Crear nuevo JXE), seleccione J9 for Windows Mobile 2003 ARM para el campo Platform (Plataforma) y pulse Next (Siguiente). f. En el marco Contents (Contenido) de la ventana Create New JXE (Crear nuevo JXE), deje los valores por omisin y pulse Finish (Finalizar). g. De vuelta en la ventana Configure builds (Configurar creaciones), seleccione wm2003arm Jxe Build (Creacin de Jxe wm2003arm) y pulse Run (Ejecutar). h. En la ventana Jxelink warnings (Avisos de Jxelink), pulse Details (Detalles). Los avisos indican que las clases a las que se hace referencia en el paquete java.sql no se han encontrado. Pase por alto estos avisos, puesto que estas clases estn incluidas en el archivo DB2eJDBC.prc. i. Pulse OK (Bien) para cerrar la ventana Jxelink warnings (Avisos de Jxelink). j. Pulse Close (Cerrar) para cerrar la ventana Progress Information (Informacin de progreso), en la que debe aparecer el mensaje jxelink BUILD SUCCESSFUL (La creacin de jxelink ha sido satisfactoria). k. Pulse Close (Cerrar) para cerrar la ventana Configure builds (Configurar creaciones). 3. Ejecute DB2eAppl.java: a. Pulse Run (Ejecutar) Run. Se abrir la ventana Run. b. En la ventana Run, seleccione Java on Device (Java en dispositivo) en el panel izquierdo y despus pulse New (Nueva). c. En la configuracin que aparece en el panel derecho, escriba DB2eAppl PocketPC en el campo Name (Nombre). d. En el panel Java Application (Aplicacin Java), lleve a cabo los pasos siguientes: 1) Pulse Browse (Examinar) para el campo Project (Proyecto). 2) En la ventana Project selection (Seleccin de proyecto), seleccione DB2Everyplace-Sample Everyplace Sample y pulse OK (Bien). 3) Seleccione DB2 Everyplace PocketPC Handheld (Dispositivo de bolsillo PocketPC de DB2 Everyplace) en la lista desplegable del campo Device or JRE (Dispositivo o JRE). 4) Seleccione DB2eAppl.jxe (wm2003arm Jxe Build build) para el campo Java Application (Aplicacin Java). e. Pulse Apply (Aplicar) y, a continuacin, pulse Run (Ejecutar). Debe ver la salida de la aplicacin de ejemplo en la Consola de J9 del dispositivo.

Consulta

415

Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411.

Ejecucin de DB2eAppl.java en un emulador de Palm OS


Si todava no ha configurado el sistema para utilizar el controlador JDBC de DB2 Everyplace, instale los siguientes archivos para el controlador JDBC de su dispositivo: %DSYINSTDIR%\Clients\PalmOS\database\JDBC\midp20\DB2eJDBC.prc %DSYINSTDIR%\Clients\PalmOS\database\JDBC\ midp20\DB2eJDBCNatives.prc Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS. Despus de completar estos pasos, vuelva al apartado Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS en la pgina 411. 1. Configure el emulador de Palm OS: a. Pulse Devices (Dispositivos) Configure (Configurar). b. En la ventana Device Configurations (Configuraciones de dispositivo), seleccione Palm OS 5 Simulator (Simulador de Palm OS 5) en el panel izquierdo y despus New (Nueva). c. En la configuracin que aparece a la derecha, escriba la siguiente informacin: 1) En el campo Device name (Nombre de dispositivo), escriba DB2 Everyplace Palm OS 5 Simulator (Simulador de Palm OS 5). 2) En el campo Palm OS Simulator executable (Ejecutable del simulador Palm OS), navegue a <SimuladorPalm>\Release\PalmSim.exe, donde <SimuladorPalm> es el directorio en el que se ha instalado el simulador de Palm Simulator. 3) En el campo Palm OS Simulator ROM (ROM del simulador de Palm OS), navegue a <SimuladorPalm>\Release\NTFull_enUS.rom 4) En el campo Run arguments (Argumentos de ejecucin), escriba -storagesnapshotfile: archivo.ssfdonde archivo.ssf es un archivo .ssf que tiene instalado DB2 Everyplace y J9 VM. d. Pulse Apply (Aplicar) y, a continuacin, pulse OK (Bien). 2. Cree DB2eAppl.java. a. En la vista Package Explorer (Explorador de paquetes) de la perspectiva Java, pulse con el botn derecho del ratn sobre el proyecto DB2Everyplace-Sample-midp20 y seleccione Device Developer Builds (Creaciones del desarrollador de dispositivos). b. En la ventana Configure builds (Configurar creaciones), pulse Add (Aadir). c. En la ventana Create new build (Generar nueva creacin), seleccione Palm OS 5 database (PRC file) (Base de datos Palm OS 5 (archivo PRC) y pulse Next (Siguiente). d. En el marco General build settings (Valores generales de creacin) de la ventana New PRC file (Nuevo archivo PRC), deje los valores por omisin y pulse Next (Siguiente). e. En el marco Palm application settings (Valores de aplicacin Palm) de la ventana New PRC file (Nuevo archivo PRC), escriba DB2e en el campo Creator ID (ID de creador) y pulse Next (Siguiente).

416

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

f. En el marco Contents (Contenido) de la ventana New PRC file (Nuevo archivo PRC), deje los valores por omisin y pulse Finish (Finalizar). g. En la ventana Configure builds (Configurar creaciones), seleccione Palm OS 5 Build (Creacin de Palm OS 5) y pulse Run ejecutar. h. En la ventana Jxelink warnings (Avisos de Jxelink), pulse Details (Detalles). Los avisos indican que las clases a las que se hace referencia en el paquete java.sql no se han encontrado. Pase por alto estos avisos, puesto que estas clases estn incluidas en el archivo DB2eJDBC.prc. i. Pulse OK (Bien) para cerrar la ventana Jxelink warnings (Avisos de Jxelink). j. Pulse Close (Cerrar) para cerrar la ventana Progress Information (Informacin de progreso), en la que debe aparecer el mensaje jad2prc prc BUILD SUCCESSFUL (La creacin de jad2prc prc ha sido satisfactoria). k. Pulse Close (Cerrar) para cerrar la ventana Configure builds (Configurar creaciones). 3. Ejecute DB2eAppl.java. a. Pulse Run (Ejecutar) Run en el men principal. Se abrir la ventana Run. b. Seleccione MIDlet Suite en el panel izquierdo y pulse New (Nuevo). c. En la configuracin que aparece en el panel derecho, escriba DB2eAppl midp20 en el campo Name (Nombre). d. En el panel MIDlet Suite, entre la informacin siguiente: 1) En el campo Project (Proyecto), navegue a DB2Everyplace-Samplemidp20. 2) Para el campo Device or JRE (Dispositivo o JRE), seleccione DB2 Everyplace Palm OS 5 Simulator (Simulador de Palm OS 5 para DB2 Everyplace). 3) Para el campo MIDlet Suite, seleccione DB2Everyplace-Samplemidp20.prc (Palm OS 5 Build build). 4) Pulse Apply (Aplicar) y, a continuacin, pulse Run (Ejecutar). Nota: Un simulador de Palm deber iniciar DB2eAppl. Deber ver la salida de la aplicacin de ejemplo en la pantalla del simulador de Palm. Si no ve la salida de la aplicacin de ejemplo, compruebe si hay errores en los archivos j9stdout.txt y j9stderr.txt. Los archivos se encuentran en el mismo directorio que el archivo .ssf. Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos Palm OS en la pgina 411.

Ejecucin de DB2eAppl.java en QNX Neutrino o Linux incorporado


Si todava no ha configurado el sistema para utilizar el controlador JDBC de DB2 Everyplace: 1. Utilizando el mandato export, incluya en la variable del sistema LD_LIBRARY_PATH el directorio (o los directorios) que contiene(n) las bibliotecas libdb2e.so y libdb2ejdbc.so nativas apropiadas. Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS. Despus de completar estos pasos, vuelva al apartado Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411. 1. Cree DB2eAppl.java.
Consulta

417

a. En la vista Package Explorer (Explorador de paquetes) de la perspectiva Java, pulse con el botn derecho del ratn sobre el proyecto DB2Everyplace-Sample y seleccione Device Developer Builds (Creaciones del desarrollador de dispositivos). b. En la ventana Configure builds (Configurar creaciones), pulse Add (Aadir). c. En la ventana Create new build (Generar nueva creacin), deje los valores por omisin y pulse Next (Siguiente). d. En el marco General build settings (Valores generales de creacin) de la ventana Create new JXE (Crear nuevo JXE), deje los valores por omisin y pulse Next (Siguiente). e. En el marco Target platform (Plataforma de destino) de la ventana Create new JXE (Crear nuevo JXE), seleccione la plataforma adecuada para el campo Platform (Plataforma) y pulse Next (Siguiente). f. En el marco Contents (Contenido) de la ventana Create New JXE (Crear nuevo JXE), deje los valores por omisin y pulse Finish (Finalizar). g. En la ventana Configure builds (Configurar creaciones), seleccione la creacin adecuada y pulse Run (Ejecutar). h. En la ventana Jxelink warnings (Avisos de Jxelink), pulse Details (Detalles). Los avisos indicarn que no se encuentran determinados tipos y clases. Pase por alto estos avisos, puesto que el controlador JDBC no acceder a estos tipos y clases en tiempo de ejecucin. i. Pulse OK (Bien) para cerrar la ventana Jxelink warnings (Avisos de Jxelink). j. Pulse Close (Cerrar) para cerrar la ventana Progress Information (Informacin de progreso), en la que debe aparecer el mensaje jxelink BUILD SUCCESSFUL (La creacin de jxelink ha sido satisfactoria). k. Pulse Close (Cerrar) para cerrar la ventana Configure builds (Configurar creaciones). 2. Ejecute DB2eAppl.java. a. Copie el archivo DB2eAppl.jxe adecuado del dispositivo a \DB2Everyplace-Sample\<destino> en el directorio del espacio de trabajo correspondiente a WSDD 5.7, donde <destino> representa el dispositivo de destino y el tipo de procesador. b. Inicie la aplicacin utilizando el mandato siguiente: j9 -Xbootclasspath/a:/j9/lib/jdbc.jar -classpath /DB2e/DB2eAppl.jxe:/DB2e/db2ejdbc.jar -jcl:foun10 DB2eAppl Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411.

Ejecucin de DB2eAppl.java en Symbian


Esta tarea forma parte de la tarea principal de Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS. Despus de completar estos pasos, vuelva al apartado Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411. Algunos dispositivos Symbian se suministran con una JVM. Para ejecutar una aplicacin Java basada en texto (por ejemplo, los programas Java de muestra), deber instalar Redirect (que se suministra como Redirect.sis en Symbian SDK para Java) e iniciar la aplicacin Redirect antes de iniciar la aplicacin basada en texto. Redirect capturar la salida de texto.

418

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411.

Soporte de SQL Sentencias de SQL soportadas


Las sentencias ejecutables de SQL soportadas se pueden emitir interactivamente desde el dispositivo porttil utilizando el procesador de lnea de mandatos (CLP), o se pueden utilizar en programas de aplicacin para acceder a datos de una base de datos porttil DB2 Everyplace. La Tabla 193 lista las sentencias de SQL a las que DB2 Everyplace da soporte.
Tabla 193. Sentencias de SQL soportadas Sentencia de SQL ALTER TABLE Funcin Modifica una tabla aadiendo una o ms columnas o cambiando la longitud de una o ms columnas VARCHAR. Llama a un procedimiento almacenado remoto utilizando el Adaptador de consultas y procedimientos almacenados remotos (AgentAdapter) de DB2 Everyplace Sync Server. Crea un ndice. Define una tabla. Devuelve una fecha de un valor. Suprime una o ms filas de una tabla. Suprime una tabla o un ndice de una base de datos. Obtiene informacin sobre la seleccin de una va de acceso para una sentencia SELECT. Otorga privilegios de cifrado a un usuario. Inserta una o ms filas en una tabla. Adquiere un bloqueo de tabla compartido o exclusivo sobre una tabla especificada. Elimina o reduce el espacio de almacenamiento desaprovechado correspondiente a la tabla especificada. Revoca privilegios de cifrado de un usuario. Especifica una tabla de resultados consultada a partir de una o ms tablas. Devuelve una hora de un valor. Devuelve una indicacin de la hora de un valor. Actualiza los valores de una o ms columnas en una o ms filas de una tabla.

CALL

CREATE INDEX CREATE TABLE DATE DELETE DROP EXPLAIN GRANT INSERT LOCK TABLE REORG TABLE REVOKE SELECT TIME TIMESTAMP UPDATE

La Mensajes de SQLSTATE notificados por SQL en la pgina 472 lista los SQLSTATE notificados por el motor SQL de DB2 Everyplace. La longitud de una sentencia de SQL no puede ser superior a 64.000 caracteres. El catlogo incluye las tablas del sistema DB2 Everyplace que DB2 Everyplace gestiona: DB2eSYSTABLES, DB2eSYSRELS y DB2eSYSCOLUMNS.
Consulta

419

ALTER TABLE
La sentencia ALTER TABLE modifica tablas existentes de uno de los modos que se indican a continuacin: v Aadiendo una o ms columnas a una tabla. v Cambiando la longitud de una o ms columnas VARCHAR. Invocacin Esta sentencia puede utilizarse en una aplicacin utilizando las funciones de DB2 CLI o emitirse mediante la aplicacin DB2eCLP. Sintaxis
ALTER TABLE nombre-tabla

ADD

COLUMN

definicin-columna

ALTER

COLUMN

modificacin-columna

definicin-columna::
nombre-columna tipo-datos opciones-columna

modificacin-columna::
nombre-columna SET DATA TYPE VARCHAR ( entero )

opciones-columna::

NOT NULL REFERENCES nombre-tabla CHECK ( condicin-comprobacin ) DEFAULT constante registro-especial-fechahora

Descripcin nombre-tabla Especifica la tabla que se debe modificar. El nombre puede tener hasta 18 caracteres de longitud. El nombre debe identificar una tabla contenida en el catlogo.

420

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Cuando un nombre de tabla contenga espacios en blanco o caracteres especiales, se debern utilizar identificadores delimitados (con comillas dobles). Los nombres de tabla pueden incluir caracteres DBCS (de doble byte). Restriccin: Los archivos de datos creados por el sistema que corresponden a tablas creadas y denominadas por nombres de usuario no distinguen entre caracteres en maysculas y minsculas. Por ejemplo, el archivo de datos para una tabla denominada TB se denomina DSY_TB. El archivo de datos para una tabla denominada tb tambin es DSY_TB. Por consiguiente le recomendamos firmemente que, para asegurarse de la integridad de los datos, no denomine una tabla utilizando una serie de caracteres idntica, a excepcin de la consideracin sobre maysculas y minsculas, a la de un nombre de tabla existente. nombre-columna Especifica una columna de la tabla. El nombre puede tener hasta 18 caracteres de longitud. El nombre no puede estar calificado y no puede utilizarse un mismo nombre para ms de una columna de la tabla. Los nombres de columna se convierten a maysculas antes de almacenarse en el catlogo. Puede utilizar identificadores delimitados (con comillas dobles) para impedir esa conversin. Debe utilizar identificadores delimitados cuando un nombre de columna contenga espacios en blanco o caracteres especiales. Los nombres de columna pueden incluir caracteres DBCS. tipo-datos Es uno de los tipos soportados por la sentencia CREATE TABLE. Es uno de los tipos soportados por la sentencia CREATE TABLE. opciones-columna Define opciones adicionales referentes a las columnas de la tabla. NOT NULL Impide que la columna contenga valores nulos. Si no se especifica NOT NULL, la columna puede contener valores nulos, y su valor por omisin es el valor nulo o el valor proporcionado por la clusula DEFAULT. REFERENCES nombre-tabla Consulte la descripcin de REFERENCES en el apartado siguiente. CHECK (condicin-comprobacin) Consulte la descripcin de CHECK en el apartado siguiente. DEFAULT Proporciona un valor por omisin cuando no se especifica un valor en una sentencia INSERT. Si no se especifica DEFAULT en una definicin de columna, se utiliza el valor nulo como valor por omisin de la columna. Si dicha columna se define como NOT NULL, no tendr un valor por omisin vlido. constante Especifica la constante como valor por omisin de la columna. La constante especificada debe: v Representar un valor que se pueda asignar a la columna.

Consulta

421

v No tener dgitos distintos de cero que sobrepasen la escala del tipo de datos de la columna si la constante es una constante decimal (por ejemplo, 1,234 no puede ser el valor por omisin de una columna DECIMAL(5,2)). registro-especial-fechahora Especifica como valor por omisin de la columna el valor que tiene el registro especial de fecha-hora (CURRENT DATE, CURRENT TIME o CURRENT TIMESTAMP) cuando se ejecuta INSERT. El tipo de datos de la columna debe corresponder al registro especial especificado (por ejemplo, el tipo de datos debe ser DATE cuando se especifica CURRENT DATE). REFERENCES nombre-tabla La tabla especificada en la clusula REFERENCES debe identificar una tabla base que est descrita en el catlogo, pero no debe identificar una tabla del catlogo. Una restriccin referencial es un duplicado si su clave fornea es igual que la tabla de clave fornea de una restriccin referencial especificada anteriormente. En la explicacin siguiente, supongamos que T2 representa la tabla padre identificada y T1 representa la tabla que se est creando. La clave fornea debe tener el mismo nmero de columnas que la clave padre de T2 y la descripcin de la columna ensima de la clave fornea debe ser comparable con la descripcin de la columna ensima de esa clave padre. Las columnas de fecha-hora no se consideran comparables con las columnas de tipo serie para los efectos de esta regla. DB2 Everyplace no da soporte a las claves forneas. CHECK (condicin-comprobacin) Define una restriccin de comprobacin. Una condicin-comprobacin es una condicin de bsqueda. Una referencia de columna debe ser una columna de la tabla que se est creando. Los valores que se insertan o actualizan en una tabla deben cumplir las restricciones de comprobacin que existan. Si una restriccin de comprobacin se especifica como parte de una definicin de columna, la referencia de columna slo puede hacerse a la misma columna. Las restricciones de comprobacin especificadas como parte de una definicin de tabla pueden tener referencias que identifican columnas definidas previamente en la sentencia CREATE TABLE. No se verifica si las restricciones de comprobacin contienen incoherencias, condiciones duplicadas o condiciones equivalentes. Por tanto, se pueden definir restricciones de comprobacin contradictorias o redundantes. Aunque se puede especificar la condicin de comprobacin IS NOT NULL, es recomendable utilizar el atributo NOT NULL para habilitar directamente la capacidad de una columna para contener nulos. Por ejemplo, CHECK (salario + prima > 30000) es aceptable si salario = NULL, pues las restricciones de comprobacin deben ser ciertas o desconocidas, y en este caso el salario es un valor desconocido. En cambio, CHECK (salario IS NOT NULL) sera una condicin falsa y vulnerara la restriccin si salario = NULL. Las restricciones de comprobacin se aplican cuando se actualizan o insertan filas en una tabla. Todas las restricciones de comprobacin definidas en una sentencia CREATE TABLE se combinan y almacenan en el catlogo del sistema. En DB2 Everyplace, esta restriccin de comprobacin combinada tiene un lmite de 32767 bytes.

422

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Reglas v El total real del nmero de bytes de una fila no debe ser superior a 65.536. v Las columnas cuyo tipo de datos es BLOB no pueden tener restricciones de comprobacin, predefinidas ni de clave fornea (SQLSTATE 42962). v Las columnas que contienen datos de tipo BLOB no se pueden utilizar en la clave primaria de una sentencia CREATE TABLE. Notas v El usuario no puede modificar las tablas del sistema. Cualquier intento que se realice producir un SQLSTATE 42832. v No es posible aadir una columna de clave primaria. Cualquier intento que se realice producir un SQLSTATE 42601. No obstante, se pueden aadir columnas con valores por omisin, restricciones de comprobacin y restricciones referenciales. v Al igual que la sentencia CREATE TABLE, una sentencia ALTER TABLE se puede retrotraer en una transaccin. v Al modificar la longitud de una columna, la columna que se debe modificar debe ser de tipo VARCHAR y la longitud especificada debe ser igual o superior a la longitud de la columna existente; de lo contrario, se producir el SQLSTATE 42837. v La combinacin de clusulas ADD y ALTER COLUMN en una sentencia ALTER TABLE causar un error de sintaxis. v Se puede invocar una operacin REORG despus de que se haya ejecutado satisfactoriamente una sentencia ALTER TABLE ADD COLUMN. Esto depende del tamao de la tabla y del nivel de umbral de reorganizacin del usuario. v Las columnas se deben crear utilizando nombres en maysculas. Los nombres que mezclan maysculas y minsculas pueden ocasionar errores en algunos lenguajes. v Nmeros de bytes de datos: La lista siguiente contiene los nmeros de bytes de las columnas de acuerdo con su tipo de datos. Esto puede cambiar en cada release. Cada registro tambin incluye informacin sobre los valores NULL. La informacin NULL requiere 4 bytes para cada grupo de 32 columnas. Un valor NULL sigue utilizando el tamao fijo de la columna.
Tipo de datos INTEGER SMALLINT DECIMAL(n, m) CHAR(n) VARCHAR(n) BLOB DATE TIME TIMESTAMP Nmero de bytes de la columna 4 4 4 20 n+1 i+5 donde i es la longitud real i+4 donde i es la longitud real 4 4 12

Ejemplo El ejemplo siguiente muestra alguno de los modos en que se puede utilizar ALTER TABLE.
CREATE TABLE t1 (c1 INT PRIMARY KEY NOT NULL, c2 VARCHAR(10)); CREATE TABLE t2 (c1 DATE);

Consulta

423

CREATE TABLE t3 (c1 TIME, c2 INT PRIMARY KEY NOT NULL); ALTER TABLE t2 ADD COLUMN c2 INT REFERENCES t1; ALTER TABLE t2 ADD c3 INT CHECK (c3 > 1) DEFAULT 10 ADD c4 DECIMAL(5,2) NOT NULL; ALTER TABLE t2 ADD c5 TIMESTAMP DEFAULT CURRENT TIMESTAMP ADD COLUMN c6 CHAR(20) DEFAULT xyz ADD c7 INT REFERENCES t3; CREATE TABLE t4 (c1 INT, c2 VARCHAR(2), c3 VARCHAR(10)); ALTER TABLE t1 ALTER c2 SET DATA TYPE VARCHAR(20) ALTER c3 SET DATA TYPE VARCHAR(100);

CALL
Invoca a un procedimiento almacenado definido con el Adaptador de consultas y procedimientos almacenados remotos para DB2 Everyplace Sync Server. Por ejemplo, un procedimiento almacenado se ejecuta en la ubicacin de la base de datos remota y devuelve los datos a la aplicacin cliente de DB2 Everyplace. Los programas que utilizan la sentencia de SQL CALL estn diseados para que se ejecuten en dos partes, una en el cliente y la otra en el servidor. Invocacin Los procedimientos almacenados remotos se invocan desde una aplicacin de DB2 Everyplace pasando la sintaxis de sentencia CALL siguiente a SQLPrepare(), seguida de SQLExecute(). Sintaxis
CALL nombre-procedimiento ( , ? ) ( )

Descripcin nombre-procedimiento Identifica el procedimiento que se debe llamar en el servidor remoto. El procedimiento identificado debe estar definido en la suscripcin AgentAdapter de Sync Server actual. ? El signo de interrogacin ? en el diagrama de la sintaxis de la sentencia CALL denota un marcador de parmetro que se corresponde a un argumento para un procedimiento almacenado. Todos los argumentos se deben pasar utilizando los marcadores de parmetros.

Reglas Ninguna Notas La sentencia CALL utiliza el adaptador de consultas y procedimientos almacenados remotos que se incluye con DB2 Everyplace Sync Server. DB2

424

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Everyplace Sync Server es necesario para utilizar la sentencia CALL en las aplicaciones de DB2 Everyplace. DB2 Everyplace no da soporte a los procedimientos almacenados locales. Para obtener informacin adicional, consulte la seccin sobre fuentes de datos en el manual DB2 Everyplace Sync Server Administration Guide. Ejemplo Encontrar ejemplo completo sobre cmo utilizar la sentencia CALL y el adaptador de consultas y procedimientos almacenados remotos en el manual DB2 Everyplace Sync Server Administration Guide. El ejemplo siguiente slo muestra el cdigo de la sentencia CALL en una aplicacin de ejemplo. Se define un procedimiento almacenado MYPROC() en el servidor fuente para la base de datos mysample. Se define una suscripcin AgentAdapter en DB2 Everyplace Sync Server con los atributos siguientes:
ID de usuario: db2admin Contrasea: db2admin Otros: dbname=mysample;procname= db2e.MYPROC

Programa de ejemplo utilizando la sentencia CALL:


int main(int argc, char * argv[]) { SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; SQLRETURN rc; SQLCHAR strSQL[] = "CALL db2e.MYPROC(?,?,?,?,?)"; int nInd4, nInd5; int nSaving = 0, nChecking =0 ; int nCmd =0, nAmount=0; SQLCHAR strConnect[254]; //**************************************************************** //* Comprobar parmetros de entrada //**************************************************************** if ( argc < 4 ){ printf("\nUsage : myClient AccountName Cmd Amount"); printf("\n cmd 1 : query balance"); printf("\n cmd 2 : Transfer from Saving to Checking"); printf("\n cmd 3 : Transfer from Checking to Saving"); return (99); } nCmd = atoi(argv[2]); nAmount = atoi(argv[3]); //**************************************************************** //* Asignar descriptores de contexto //**************************************************************** rc = SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv; //checkerror rc = SQLAllocHandle( SQL_HANDLE_DBC, henv, &hdbc); //checkerror if (argc == 5){ strcpy(strConnect,"http://"); strcat(strConnect,argv[4]); strcat(strConnect, "/servlet/com.ibm.mobileservices.adapter.agent.AgentServlet?DB=mysample"); }else{ strcpy(strConnect,
Consulta

425

"http://127.0.0.1:8080/db2e/servlet/ } com.ibm.mobileservices.adapter.agent.AgentServlet?DB=mysample");

//**************************************************************** //* Conectar con la base de datos remota //**************************************************************** rc = SQLConnect(hdbc, strConnect, SQL_NTS, "userex", SQL_NTS, "userex", SQL_NTS ); //checkerror rc = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt); //checkerror //**************************************************************** //* Preparar, enlazar y ejecutar la sentencia //**************************************************************** rc = SQLPrepare(hstmt,strSQL, SQL_NTS); //checkerror rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, (SQLPOINTER)argv[1], 0, NULL ); //checkerror rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, (SQLPOINTER)&nCmd, sizeof(int), NULL); //checkerror rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, (SQLPOINTER)&nAmount, sizeof(int), NULL ); //checkerror rc = SQLBindParameter(hstmt, 4, SQL_PARAM_OUTPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, (SQLPOINTER)&nSaving, sizeof(int), &nInd4 ); //checkerror rc = SQLBindParameter(hstmt, 5, SQL_PARAM_OUTPUT, SQL_C_LONG, SQL_INTEGER, 0, 0,

426

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

(SQLPOINTER)&nChecking, sizeof(int), &nInd5 ); //checkerror rc = SQLExecute(hstmt); //checkerror //**************************************************************** //* Imprimir el saldo //**************************************************************** printf("\nSaving = %d",nSaving); printf("\nChecking = %d",nChecking); SQLFreeHandle(SQL_HANDLE_STMT, hstmt); SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0;

CREATE INDEX
La sentencia CREATE INDEX se utiliza para crear un ndice sobre una tabla de DB2 Everyplace. Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP. Sintaxis
CREATE INDEX nombre-ndice ON nombre-tabla

, ( nombre-columna UCASE ( expresin LCASE ( expresin ) )

ASC DESC

Descripcin INDEX nombre-ndice Designa el ndice. ON nombre-tabla El parmetro nombre-tabla designa una tabla en la que debe crearse un ndice. nombre-columna Para un ndice, el nombre de columna identifica una columna que debe formar parte de la clave de ndice. Cada nombre de columna debe ser un nombre no calificado que identifique una columna de la tabla. Utilice ocho columnas o menos; los nombres de columna no se pueden repetir (SQLSTATE 42711). La longitud de cada una de las columnas especificadas no puede ser superior a 1024 bytes. ASC Ordena las entradas de ndice en orden ascendente para cada columna. Es el valor por omisin.

DESC Ordena las entradas de ndice en orden descendente para cada columna.
Consulta

427

LCASE / UCASE La funcin LCASE o LOWER devuelve una serie en la que todos los caracteres SBCS se han convertido a caracteres en minsculas. Es decir, los caracteres A-Z se convertirn en los caracteres a-z y los caracteres con marcas diacrticas se convertirn a sus equivalentes en minsculas en el caso de que stas existan. El argumento debe ser una expresin cuyo valor sea un tipo de datos CHAR o VARCHAR. El resultado de la funcin tiene el mismo tipo de datos y atributo de longitud que el argumento. Si el argumento puede ser nulo, el resultado tambin; si el argumento es nulo, el resultado es el valor nulo. Asegrese de que los caracteres del valor de la columna JOB de la tabla EMPLOYEE se devuelven en caracteres en minsculas. Por ejemplo:
SELECT LCASE(JOB) FROM EMPLOYEE WHERE EMPNO = 000020;

Reglas v Se puede crear un mximo de 15 ndices en una tabla sin una clave primaria. Se puede crear un mximo de 14 ndices en una tabla con una clave primaria. v La sentencia CREATE INDEX fallar si se intenta crear un ndice que coincida con un ndice existente. Se considera que dos descripciones de ndice son iguales si se cumplen estas dos condiciones: El conjunto de columnas y su orden en el ndice es el mismo que el de un ndice existente. Los atributos de ordenacin son iguales. v Las columnas que contienen datos de tipo BLOB no se pueden utilizar en una sentencia CREATE INDEX. Notas v La sentencia CREATE INDEX puede contener un mximo de 8 columnas. v DB2 Everyplace da soporte a la exploracin bidireccional de ndices. Los dos ndices siguientes tienen el mismo propsito aunque tienen definiciones diferentes.
CREATE INDEX IDX1 ON EMPLOYEE (JOB ASC) CREATE INDEX IDX1 ON EMPLOYEE (JOB DESC)

En general, los ndices se deberan crear sin especificar la direccin del orden. Normalmente, tener menos ndices viene a significar unos costes de mantenimiento de ndices menor. v DB2 Everyplace da soporte a la exploracin de prefijos de los ndices. Considere el siguiente ejemplo. Se crea el ndice siguiente.
CREATE INDEX J1 ON T (A, B, C, D, E, F, G, K)

No es necesario crear otro ndice en T (A,B,C,D). v Si la tabla no contiene datos, CREATE INDEX crea una descripcin del ndice; las entradas de ndice se crean al insertar datos en la tabla. v Para crear un ndice para el bit de modificacin, utilice el ejemplo siguiente:
CREATE INDEX <nombre de ndice> ON <nombre de tabla> ($dirty)

428

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Consulte El bit de modificacinbit de modificacinconcepto debit de modificacindescripcin en la pgina 286 para obtener ms informacin sobre el bit de modificacin. Ejemplo Cree un ndice llamado JOB_BY_DPT en la tabla EMPLOYEE. Las entradas de ndice se disponen en orden ascendente para cada puesto de trabajo (JOB) dentro de cada departamento (WORKDEPT).
CREATE INDEX JOB_BY_DPT ON EMPLOYEE (WORKDEPT, JOB)

CREATE TABLE
La sentencia CREATE TABLE define una tabla. La definicin debe incluir el nombre de la tabla y los nombres y atributos de sus columnas. La definicin puede tambin incluir otros atributos de la tabla, tales como su clave primaria. Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP. Sintaxis
CREATE TABLE nombre-tabla lista-elementos WITH ENCRYPTION

lista-elementos:
, ( nombre-columna tipo-datos , opciones-columna )

PRIMARY KEY ( nombre-columna ) restriccin-referencial CHECK ( condicin-comprobacin )

tipo-datos:
INTEGER INT SMALLINT DECIMAL ( entero , entero ) CHAR ( entero ) CHARACTER ( entero ) VARCHAR ( entero ) BLOB ( entero ) DATE TIME TIMESTAMP

Consulta

429

opciones-columna:

NOT NULL PRIMARY KEY REFERENCES nombre-tabla CHECK ( condicin-comprobacin ) DEFAULT constante registro-especial-fechahora GENERATED ALWAYS AS IDENTITY

restriccin-referencial:
, FOREIGN KEY ( nombre-columna ) REFERENCES nombre-tabla

Descripcin nombre-tabla Designa la tabla. El nombre puede tener hasta 18 caracteres de longitud. El nombre no debe identificar una tabla contenida en el catlogo. El nombre debe ser exclusivo para el dispositivo porttil. Los nombres de tabla se convierten a maysculas antes de almacenarse en el catlogo. Puede utilizar identificadores delimitados (con comillas dobles) para impedir esa conversin. Debe utilizar identificadores delimitados cuando un nombre de tabla contenga espacios en blanco o caracteres especiales. Los nombres de tabla pueden incluir caracteres DBCS (de doble byte). Restriccin: Los archivos de datos creados por el sistema que corresponden a tablas creadas y denominadas por nombres de usuario no distinguen entre caracteres en maysculas y minsculas. Por ejemplo, el archivo de datos para una tabla denominada TB se denomina DSY_TB. El archivo de datos para una tabla denominada tb tambin es DSY_TB. Por consiguiente le recomendamos firmemente que, para asegurarse de la integridad de los datos, no denomine una tabla utilizando una serie de caracteres idntica, a excepcin de la consideracin sobre maysculas y minsculas, a la de un nombre de tabla existente. WITH ENCRYPTION Crea una tabla de usuario cifrada. Para cifrar una tabla, el usuario tiene que estar autentificado y conectado. Se le tiene que otorgar explcitamente el privilegio de cifrado. (Para obtener ms informacin, consulte el apartado GRANT en la pgina 442.) Una tabla de usuario nicamente se puede cifrar en el momento de su creacin. Una vez que se ha creado una tabla, no se puede aadir ni eliminar cifrado si no es suprimiendo la tabla. nombre-columna Designa una columna de la tabla. El nombre puede tener hasta 18 caracteres de longitud. El nombre no puede estar calificado y no puede utilizarse un mismo nombre para ms de una columna de la tabla.

430

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Los nombres de columna se convierten a maysculas antes de almacenarse en el catlogo. Puede utilizar identificadores delimitados (con comillas dobles) para impedir esa conversin. Tambin debe utilizar identificadores delimitados cuando un nombre de columna contenga espacios en blanco o caracteres especiales. Los nombres de columna pueden incluir caracteres DBCS. tipo-datos Es uno de los tipos mostrados en la lista siguiente. Utilice: INTEGER or INT Para un entero de cuatro bytes, con signo, comprendido entre 2147483647 y -2147483648. SMALLINT Para un entero de dos bytes, con signo, comprendido entre -32768 y 32767. DECIMAL(entero-precisin, entero-escala) Para un nmero decimal. El primer entero indica la precisin del nmero; es decir, el nmero total de dgitos; su valor est comprendido entre 1 y 31. El segundo entero es la escala del nmero; es decir, el nmero de dgitos situados a la derecha de la coma decimal; su valor est comprendido entre 0 y la precisin del nmero. CHAR(entero) Para una serie de caracteres de longitud fija, cuya longitud es entero y puede oscilar entre 1 y 32767. CHARACTER(entero) Para una serie de caracteres de longitud fija, cuya longitud es entero y puede oscilar entre 1 y 32767. VARCHAR(entero) Para una serie de caracteres de longitud variable, cuya longitud mxima es entero y puede oscilar entre 1 y 32767. BLOB(entero) Para un gran objeto binario de tipo serie, cuya longitud mxima en bytes es la especificada. La longitud est comprendida entre 1 y 32767 bytes. entero es la longitud mxima. DATE Para una fecha. Un valor de entrada puede tener uno de estos formatos: MM/DD/AAAA, AAAA-MM-DD o MM.DD.AAAA. El valor de fecha se imprime slo en el formato ISO: AAAA-MM-DD. El ao de un valor de fecha puede ir de 0001 a 9999. El registro especial CURRENT DATE tambin genera la fecha actual en el formato ISO. TIME Para una hora. Es un valor de entrada que puede tener uno de los formatos siguientes: HH:MM am (o pm), HH:MM:SS, HH.MM am (o pm), o HH.MM.SS. Los SS, segundos, son opcionales con los formatos HH:MM:SS o HH.MM.SS. El valor de hora slo se imprime en el formato ISO: HH:MM:SS. El registro especial CURRENT TIME tambin genera la hora actual en el formato ISO.
Consulta

431

TIMESTAMP Para una indicacin de hora. Un valor de entrada debe tener el siguiente formato: AAAA-MM-DD-HH.MM.SS.ZZZZZZ. Un valor de indicacin de hora se imprime en el siguiente formato: AAAA-MM-DDHH.MM.SS.ZZZZZZ. El registro especial CURRENT TIMESTAMP tambin genera la indicacin de hora actual. opciones-columna Define opciones adicionales referentes a las columnas de la tabla. NOT NULL Impide que la columna contenga valores nulos. Si no se especifica NOT NULL, la columna puede contener valores nulos, y su valor por omisin es el valor nulo o el valor proporcionado por la clusula DEFAULT. PRIMARY KEY Proporciona un atajo para definir una clave primaria formada por una sola columna. Por tanto, si se especifica PRIMARY KEY en la definicin de la columna C, el efecto es el mismo que si se especifica PRIMARY KEY(C) como clusula separada. Consulte la descripcin de CREATE TABLE en la pgina 429. REFERENCES nombre-tabla Consulte la descripcin de CREATE TABLE en la pgina 429. CHECK (condicin-comprobacin) Consulte la descripcin de CREATE TABLE en la pgina 429. DEFAULT Proporciona un valor por omisin cuando no se especifica un valor en una sentencia INSERT. Si no se especifica DEFAULT en una definicin de columna, se utiliza el valor nulo como valor por omisin de la columna. Si dicha columna se define como NOT NULL, no tendr un valor por omisin vlido. constante Especifica la constante como valor por omisin de la columna. La constante especificada debe: v Representar un valor que se pueda asignar a la columna. v No tener dgitos distintos de cero que sobrepasen la escala del tipo de datos de la columna si la constante es una constante decimal (por ejemplo, 1,234 no puede ser el valor por omisin de una columna DECIMAL(5,2)). registro-especial-fechahora Especifica como valor por omisin de la columna el valor que tiene el registro especial de fecha-hora (CURRENT DATE, CURRENT TIME o CURRENT TIMESTAMP) cuando se ejecuta INSERT. El tipo de datos de la columna debe corresponder al registro especial especificado (por ejemplo, el tipo de datos debe ser DATE cuando se especifica CURRENT DATE). GENERATED ALWAYS AS IDENTITY Al crear una tabla, un usuario puede especificar una columna como GENERATED ALWAYS AS IDENTITY. Posteriormente, DB2 Everyplace generar el valor de esta columna cada vez que el usuario realiza una

432

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

operacin INSERT o INSERT con subSELECT. Esta columna tiene que ser de tipo numrico, (tipo INTEGER, SMALLINT o DECIMAL) y DB2 Everyplace genera automticamente nmeros serie exclusivos comenzando por 1 y aumentando dicho valor en 1 cada vez. El valor generado para la columna IDENTITY comienza en 1 y aumenta de 1 en 1 cada vez que una fila se inserta en la tabla. De este modo, se garantiza la exclusividad, aunque DB2 Everyplace no crea automticamente un ndice en una columna IDENTITY. Si desea disponer de un ndice en una columna IDENTITY, deber o crear un ndice explcitamente, o especificar la columna como PRIMARY KEY. Cuando se agota el rango de los valores de una columna IDENTITY (se llega al valor mximo), las sentencias INSERT adicionales ocasionarn un error (SQLSTATE 23522). El valor mximo de una columna IDENTITY de los tipos INT y SMALLINT son los valores mximos que admitan esos 2 tipos. El valor mximo de una columna IDENTITY de un tipo DECIMAL se determina mediante (1) la definicin del tipo de datos (precisin, escala) y (2) el valor mximo que se permite para la columna IDENTITY: 2.15* (1018) (19 dgitos decimales). El valor ms pequeo para el (1) y (2) es el lmite de rango. Para una columna IDENTITY de un tipo DECIMAL, la parte fraccionaria es siempre 0 y la parte entera aumenta de 1 en 1 cada vez. La especificacin IDENTITY slo puede definirse en las columnas cuyo tipo de datos es uno de los 3 tipos numricos: INT, SMAIINT, DECIMAL. En caso contrario, se suscita un error (SQLSTATE 42815). Como mnimo puede haber una columna IDENTITY por tabla (en caso contrario el error SQLSTATE 428C1). El usuario no puede proporcionar un valor para una columna IDENTITY en una sentencia INSERT (debe tomar por omisin el valor generado por el sistema de DB2 Everyplace ), ni tampoco actualizar (UPDATE) una columna IDENTITY. PRIMARY KEY (nombre-columna, ...) Define una clave primaria formada por las columnas identificadas. Esta clusula no se puede especificar ms de una vez y las columnas indicadas no deben estar definidas como NOT NULL. Cada nombre de columna debe identificar una columna de la tabla y una misma columna no se debe identificar ms de una vez. El nmero de columnas especificadas no debe ser superior a 8. Se crear un ndice exclusivo de modo automtico en las columnas especificadas. Slo se puede definir una sola clave primaria para una tabla. El atributo de longitud de cada una de las columnas especificadas no puede ser superior a 1024 bytes. restriccin-referencial Define una restriccin referencial. FOREIGN KEY (nombre-columna, ...) Define una restriccin referencial con el nombre de restriccin especificado. Supongamos que T1 denota la tabla objeto de la sentencia. La clave fornea de la restriccin referencial est formada por las columnas identificadas. Cada nombre de la lista de nombres de columna debe identificar una columna de T1 y una misma columna no se debe identificar ms de una vez. El nmero de columnas especificadas no debe ser superior a 8. DB2 Everyplace no da soporte a las claves forneas.
Consulta

433

REFERENCES nombre-tabla La tabla especificada en la clusula REFERENCES debe identificar una tabla base que est descrita en el catlogo, pero no debe identificar una tabla del catlogo. Una restriccin referencial es un duplicado si su clave fornea es igual que la tabla de clave fornea de una restriccin referencial especificada anteriormente. En la explicacin siguiente, supongamos que T2 representa la tabla padre identificada y T1 representa la tabla que se est creando. La clave fornea debe tener el mismo nmero de columnas que la clave padre de T2 y la descripcin de la columna ensima de la clave fornea debe ser comparable con la descripcin de la columna ensima de esa clave padre. Las columnas de fecha-hora no se consideran comparables con las columnas de tipo serie para los efectos de esta regla. DB2 Everyplace no da soporte a las claves forneas. CHECK (condicin-comprobacin) Define una restriccin de comprobacin. Una condicin-comprobacin es una condicin de bsqueda. Una referencia de columna debe ser una columna de la tabla que se est creando. Los valores que se insertan o actualizan en una tabla deben cumplir las restricciones de comprobacin que existan. Si una restriccin de comprobacin se especifica como parte de una definicin de columna, la referencia de columna slo puede hacerse a la misma columna. Las restricciones de comprobacin especificadas como parte de una definicin de tabla pueden tener referencias que identifican columnas definidas previamente en la sentencia CREATE TABLE. No se verifica si las restricciones de comprobacin contienen incoherencias, condiciones duplicadas o condiciones equivalentes. Por tanto, se pueden definir restricciones de comprobacin contradictorias o redundantes. Aunque se puede especificar la condicin de comprobacin IS NOT NULL, es recomendable utilizar el atributo NOT NULL para habilitar directamente la capacidad de una columna para contener nulos. Por ejemplo, CHECK (salario + prima > 30000) es aceptable si salario = NULL, pues las restricciones de comprobacin deben ser ciertas o desconocidas, y en este caso el salario es un valor desconocido. En cambio, CHECK (salario IS NOT NULL) sera una condicin falsa y vulnerara la restriccin si salario = NULL. Las restricciones de comprobacin se aplican cuando se actualizan o insertan filas en una tabla. Todas las restricciones de comprobacin definidas en una sentencia CREATE TABLE se combinan y almacenan en el catlogo del sistema. En DB2 Everyplace, esta restriccin de comprobacin combinada tiene un lmite de 512 bytes. Reglas v El total real del nmero de bytes de una fila no debe ser superior a 65 536. Consulte el apartado Notas en la pgina 435 para obtener ms informacin. v Las columnas cuyo tipo de datos es BLOB no pueden tener restricciones de comprobacin, predefinidas ni de clave fornea (SQLSTATE 42962). v Las columnas que contienen datos de tipo BLOB no se pueden utilizar en la clave primaria de una sentencia CREATE TABLE.

434

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Notas v Las tablas y las columnas se deben crear utilizando nombres en maysculas. Los nombres que mezclan maysculas y minsculas pueden ocasionar errores en algunos lenguajes. v Si crea una nueva tabla en su dispositivo porttil, la tabla no se crear automticamente en la base de datos corporativa al sincronizar el dispositivo porttil con el servidor. Es necesario crear la tabla en la base de datos corporativa antes de realizar la sincronizacin. v Nmeros de bytes de datos: La lista siguiente contiene los nmeros de bytes de las columnas de acuerdo con su tipo de datos. Esto puede cambiar en cada release. Cada registro tambin incluye informacin sobre los valores NULL. La informacin NULL requiere 4 bytes para cada grupo de 32 columnas. Un valor NULL sigue utilizando el tamao fijo de la columna.
Tipo de datos INTEGER SMALLINT DECIMAL(n, m) CHAR(n) VARCHAR(n) BLOB DATE TIME TIMESTAMP Nmero de bytes de la columna 4 4 4 20 n+1 i+5 donde i es la longitud real i+4 donde i es la longitud real 4 4 12

Ejemplo En este ejemplo se crea una tabla EMPLOYEE con los nombres de columna EMPNO, FIRSTNAME, LASTNAME, DEPT, PHONENO, SALARY y HIREDATE. CHAR significa que la columna contendr datos de tipo carcter. NOT NULL significa que la columna no puede contener un valor nulo. VARCHAR significa que la columna contendr datos de tipo carcter de longitud variable. La clave primaria est formada por la columna EMPNO.
CREATE TABLE EMPLOYEE (EMPNO CHAR(3) PRIMARY KEY, FIRSTNAME VARCHAR(12) NOT NULL, LASTNAME VARCHAR(15) NOT NULL, DEPT CHAR(3), PHONENO CHAR(4), SALARY INT, HIREDATE DATE)

DATE
La funcin DATE devuelve una fecha de un valor. Invocacin Esta sentencia puede utilizarse en una aplicacin utilizando las funciones de DB2 CLI o emitirse mediante DB2eCLP. Sintaxis
DATE expresin

Consulta

435

Descripcin expresin Especifica un valor. El argumento debe ser una fecha, una indicacin de la hora o una representacin vlida de la fecha o la indicacin de la hora en forma de serie. Reglas Si el argumento puede ser nulo, el resultado tambin; si el argumento es nulo, el resultado es el valor nulo. Ejemplo Supongamos que la columna RECEIVED (del tipo de datos TIMESTAMP) tiene un valor de datos de 2003-12-25-17.12.30.000000. v DATE(RECEIVED) es 2003-12-25 (del tipo de datos DATE). v DATE(2003-12-25) es 2003-12-25 (del tipo de datos DATE). v DATE(25.12.2003) es 2003-12-25 (del tipos de datos DATE).

DELETE
La sentencia DELETE suprime una o ms filas de una tabla. Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP. Sintaxis
DELETE FROM nombre-tabla WHERE condicin-bsqueda

condicin-bsqueda:

AND OR

NOT

predicado (condicin-bsqueda)

predicado:
predicado predicado predicado predicado bsico IN LIKE NULL

predicado

436

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

expresin

= <> < > <= >= ||

expresin

predicado
, expresin NOT IN ( expresin )

predicado
expresin NOT LIKE expresin

predicado
expresin (1) IS NULL

NOT

expresin:
operador + literal nombre-columna (expresin) registro-especial funcin

operador:
/ * + -

Notas: 1 Las expresiones BLOB slo se permiten en predicados NULL

Descripcin FROM nombre-tabla Designa la tabla en la que deben suprimirse filas. El nombre debe especificar una tabla existente en el catlogo, pero no una tabla de catlogo. WHERE Especifica una condicin que selecciona las filas que deben suprimirse. Se
Consulta

437

puede omitir la clusula o especificar una condicin de bsqueda. Si se omite la clusula, se suprimen todas las filas de la tabla. condicin-bsqueda La condicin-bsqueda especifica una condicin que es verdadera, falsa o desconocida para una fila determinada. El resultado de una condicin-bsqueda se obtiene aplicando los operadores lgicos especificados (AND, OR, NOT) al resultado de cada predicado especificado. Un predicado compara dos valores. Si no se especifican operadores lgicos, el resultado de la condicin de bsqueda es el resultado del predicado especificado. Las condiciones de bsqueda que estn entre parntesis se evalan en primer lugar. Si no se especifica un orden de evaluacin mediante el uso de parntesis, NOT se aplica antes que AND y AND se aplica antes que OR. El orden en el que se evalan los operadores con igual nivel de prioridad es indefinido, para permitir la optimizacin de las condiciones de bsqueda. La condicin-bsqueda se aplica cada fila de la tabla y las filas suprimidas son aqullas para las cuales el resultado de la condicin-bsqueda es verdadero. Cada nombre-columna especificado en la condicin de bsqueda debe identificar una columna de la tabla. NOT Si se especifica NOT, se invierte el resultado del predicado. expresin Identifica un operando del predicado. La expresin puede ser un literal, nombre de columna, registro especial o funcin. No se da soporte a las operaciones aritmticas sobre los tipos de datos BLOB(n), DATE, TIME y TIMESTAMP. literal Un literal puede ser un valor cuyo tipo de datos es INTEGER, SMALLINT, DECIMAL, CHAR(n), VARCHAR(n), BLOB(n), DATE, TIME o TIMESTAMP. nombre-columna Identifica la columna que es un operando del predicado. registro-especial Identifica el registro especial que es un operando del predicado. Se pueden utilizar los registros especiales CURRENT DATE, CURRENT TIME y CURRENT TIMESTAMP para generar la fecha, la hora o la indicacin de hora actuales. funcin Puede incluir slo las funciones MOD, LENGTH y RTRIM. operador relacional Puede ser cualquiera de los operadores siguientes: = <> < > <= Igual a. No igual a. Menor que. Mayor que. Menor o igual que.

438

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

>= LIKE

Mayor o igual que. Coincide con una serie de caracteres. Utilice un smbolo de subrayado de SBCS (juego de caracteres de un solo byte) para representar un carcter SBCS individual. Utilice un smbolo de subrayado de DBCS (juego de caracteres de doble byte) para representar un carcter DBCS individual. Por ejemplo, la condicin WHERE PART_NUMBER LIKE _0 devuelve todos los nmeros de pieza de 2 dgitos que terminan en 0 (20, 30 y 40, por ejemplo). Utilice un smbolo de porcentaje (del juego de caracteres SBCS o DBCS) para representar una cadena de caracteres SBCS o DBCS, o la ausencia de caracteres. Por ejemplo, la condicin WHERE DEPT_NUMBER LIKE 2% obtiene todos los nmeros de departamento (DEPT_NUMBER) que comienzan con el nmero 2 (por ejemplo, 20, 27 234).

NOT LIKE Indica que al menos uno de los caracteres es diferente. IS NULL Contiene el valor nulo. IS NOT NULL No contiene el valor nulo. AND Si se especifica, el operador lgico AND se aplica al resultado de cada predicado especificado. OR Si se especifica, el operador lgico OR se aplica al resultado de cada predicado especificado. Reglas Ninguna. Notas v Un DELETE lgico no se aplica nunca a registros suprimidos lgicamente. Ejemplo Supresin del nmero de empleado (EMPNO) 003002 de la tabla EMPLOYEE:
DELETE FROM EMPLOYEE WHERE EMPNO = 003002

DROP
La sentencia DROP suprime una tabla o ndice. Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP.

Consulta

439

Sintaxis
DROP TABLE nombre-tabla INDEX nombre-ndice

Descripcin TABLE nombre-tabla Designa la tabla base que se debe eliminar. nombre-tabla debe identificar una tabla que est descrita en el catlogo (SQLSTATE 42704). INDEX nombre-ndice Designa el ndice que se debe eliminar. nombre-ndice debe identificar un ndice que est descrito en el catlogo (SQLSTATE 42704). No puede ser un ndice que el sistema necesite para una clave primaria (SQLSTATE 42704). Reglas Ninguna. Notas v No elimine tablas ni ndices mientras se est utilizando una tabla (es decir, cuando haya un descriptor de contexto de sentencia activo sobre una consulta que haga uso de esa tabla o ndice). Si lo hace, invalidar los descriptores de contexto de sentencia correspondientes. Ejemplo Eliminacin de la tabla EMPLOYEE.
DROP TABLE EMPLOYEE

EXPLAIN
La sentencia EXPLAIN obtiene informacin sobre la seleccin de una va de acceso para una sentencia SELECT. La informacin obtenida se coloca en una tabla de usuario llamada DB2ePLANTABLE. La sentencia EXPLAIN se puede utilizar en los sistemas operativos siguientes: v Windows (Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP y Windows 2003) v Linux Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP. Sintaxis
EXPLAIN SET QUERYNO=entero FOR sentencia-SELECT

440

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Descripcin SET QUERYNO = entero Asocia entero a la sentencia SELECT. Se asigna el valor entero a la columna QUERYNO en cada fila insertada por la sentencia EXPLAIN en la tabla PLAN. Sentencia SELECT Especifica un conjunto de columnas nuevas en el formato de la tabla de resultados de una sentencia SELECT. Reglas El valor entero debe ser positivo. Notas v Cuando utiliza la sentencia EXPLAIN, se crea automticamente por omisin la tabla DB2ePLANTABLE, si no existe. v Para crear explcitamente la tabla DB2ePLANTABLE, siga el ejemplo siguiente:
create table "DB2ePLANTABLE" (query_no int, plan_no int, table_name char(18), index_name char(18), sort_temp char(1), expl_timestamp timestamp, remarks varchar(300))

La Tabla 194 describe las columnas de DB2ePLANTABLE.


Tabla 194. Informacin sobre las columnas de DB2ePLANTABLE Nombre de la columna query_no plan_no table_name index_name sort_temp Descripcin Nmero entero que asocia la sentencia EXPLAIN con los datos de salida dentro de DB2ePLANTABLE. Nmero entero que representa los pasos en los que se ejecuta la sentencia (en orden ascendente). El nombre de la tabla o nombre correlacionado que identifica unvocamente la tabla, o un valor nulo si no es aplicable un nombre. El nombre del ndice (si se utiliza) para acceder a la tabla. Devuelve un valor nulo si no se utiliza ningn ndice. Y significa que es necesario realizar una clasificacin en una tabla temporal para procesar una sentencia GROUP BY o ORDER BY. Si se devuelve un valor nulo, significa que no es necesaria ninguna tabla temporal de clasificacin. Indicacin horaria del momento en que se ejecuta la sentencia EXPLAIN. La columna de comentarios contiene el valor nulo. El usuario puede aadir comentarios a esta columna con fines contables.

expl_timestamp comentarios

v DB2ePLANTABLE es una tabla de usuario que puede ser modificada o eliminada por cualquier aplicacin. Ejemplo Al desarrollar una nueva aplicacin, es aconsejable determinar qu va de acceso se elige para una sentencia SELECT. En este ejemplo, una nueva aplicacin consulta las tablas SALES y EMPLOYEES. La sentencia EXPLAIN muestra si se han elegido los ndices apropiados para la sentencia SELECT.
EXPLAIN SET QUERYNO = 100 FOR SELECT E.EMPNAME, S.SALES_AMOUNT FROM SALES S, EMPLOYEES E
Consulta

441

WHERE S.EMPNO = E.EMPNO AND S.MONTH = ? Index XSALES on SALES(MONTH) Index XEMP on EMPLOYEES(EMPNO) SELECT QUERY_NO, PLAN_NO, TABLE_NAME, INDEX_NAME, SORT_TEMP FROM "DB2ePLANTABLE" QUERY_NO PLAN_NO TABLE_NAME INDEX_NAME SORT_TEMP ---------------------------------------------------100 1 SALES XSALES 100 2 EMPLOYEE XEMP -

GRANT
La sentencia GRANT proporciona permiso para crear, consultar y manipular tablas cifradas dentro de la base de datos. Para realizar la operacin GRANT, el usuario debe estar conectado y autentificado. Si una base de datos no est cifrada, el primer usuario de la misma puede otorgarse a s mismo la autentificacin necesaria para realizar la operacin GRANT. (Para obtener ms informacin sobre cmo hacerlo, vea el ejemplo 1 siguiente.) Cuando se emiten sentencias GRANT sobre otros usuarios, los derechos de acceso de dichos usuarios entran en vigor en posteriores llamadas de conexin, a menos que la conexin modifique sus propios derechos de acceso. Para cambiar su propia contrasea, debe realizar una operacin GRANT sobre su propio ID de usuario. Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP. Sintaxis
GRANT ENCRYPT ON DATABASE TO usuario_nuevo USING contrasea_otorgante NEW contrasea_nueva

Descripcin usuario_nuevo Identifica el usuario al que se le otorgan los privilegios de cifrado. contrasea_otorgante Contrasea del usuario autentificado al que se estn otorgando los privilegios de cifrado del usuario nuevo. contrasea_nueva Contrasea del usuario al que se le otorgan los privilegios de cifrado. Reglas v Los parmetros tanto de nombre de usuario como de contrasea tienen una longitud limitada de 254 bytes. v Para caracteres de byte mltiple, internamente se utiliza la codificacin UTF-8 para el almacenamiento. Por consiguiente, los nombres de usuario escritos utilizando juegos de caracteres internacionales tienen una longitud limitada.

442

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

v DB2 Everyplace requiere que el otorgante (es decir, el usuario conectado en ese momento) vuelva a entrar la contrasea de otorgante para poder otorgar privilegios al usuario nuevo. Estas restricciones aseguran que el otorgante est presente fsicamente en el dispositivo. v Las contraseas e idusuarios deben estar delimitados mediante comillas dobles. Notas v Si es usted un usuario existente, debe estar conectado y autentificado para cambiar su propia contrasea Slo puede cambiar su propia contrasea. v La sentencia GRANT no se puede utilizar con marcadores de parmetros ni con la funcin SQLPrepare(). v Intentar conseguir los privilegios de GRANT mientras se est conectado con un usuario no autorizado devuelve SQLSTATE 42502. Especificar una contrasea incorrecta con la sentencia GRANT ocasiona un SQLSTATE 42506. v Mientras se ejecute GRANT en una transaccin manual, las sentencias SELECT y DML se bloquearn hasta que la transaccin en cuestin se confirme o se retrotraiga. Ejemplo Ejemplo 1: El primer usuario se otorga a s mismo la autentificacin necesaria para realizar la operacin GRANT, sobre una base de datos que todava no se ha cifrado:
GRANT ENCRYPT ON DATABASE TO "jsk" USING "foo" NEW "foo"

Ejemplo 2: Ahora se crea y autentifica el usuario jsk (del Ejemplo 1 anterior), que posee la conexin. Para que jsk aada otro usuario:
GRANT ENCRYPT ON DATABASE TO "xin" USING "foo" NEW "bar"

Ejemplo 3: El usuario jsk, conectado actualmente, cambia su propia contrasea:


GRANT ENCRYPT ON DATABASE TO "jsk" USING "foo" NEW "fie"

Ejemplo 4: El usuario jsk, que sigue conectado actualmente, utiliza su nueva contrasea para aadir otro usuario:
GRANT ENCRYPT ON DATABASE TO "thf" USING "fie" NEW "fum"

INSERT
La sentencia INSERT inserta una o ms filas en una tabla utilizando los valores proporcionados. Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP. Sintaxis
INSERT INTO nombre-tabla ( , nombre-columna )

Consulta

443

, VALUES ( expresin Sentencia SELECT )

expresin:
Operador + literal registro-especial funcin ( expresin )

operador:
/ * + -

Descripcin INTO nombre-tabla Designa la tabla de la operacin de insercin. El nombre debe especificar una tabla existente, pero no una tabla de catlogo. (nombre-columna,...) Especifica las columnas para las que se proporcionan valores de insercin. Cada nombre de columna debe ser un nombre no calificado que identifica una columna de la tabla. Una misma columna no puede estar identificada ms de una vez. La omisin de la lista de columnas equivale a una especificacin implcita de una lista que designa, de izquierda a derecha, cada columna de la tabla. VALUES Presenta una fila de valores para insertar. El nmero de valores para cada fila debe ser igual al nmero de nombres de la lista de columnas. El primer valor se inserta en la primera columna de la lista, el segundo valor en la segunda columna y as sucesivamente. expresin La expresin puede ser un literal, un registro especial, una funcin o una expresin compleja. No se da soporte a las operaciones aritmticas sobre los tipos de datos CHAR, VARCHAR, BLOB(n), DATE, TIME y TIMESTAMP. literal Un literal puede ser un valor de cualquier tipo de datos soportado como INTEGER, SMALLINT, DECIMAL, CHAR(n), VARCHAR(n), BLOB(n), DATE, TIME o TIMESTAMP. registro-especial Se pueden utilizar los registros especiales CURRENT DATE, CURRENT TIME y CURRENT TIMESTAMP para generar la fecha, la hora y la indicacin de hora actuales.

444

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Sentencia SELECT Especifica un conjunto de columnas nuevas en el formato de la tabla de resultados de una sentencia SELECT. Pueden haber una, ms de una o ninguna. Si la tabla de resultados est vaca, SQLCODE se establece en +100 y SQLSTATE se establece en 02000. El objeto base de la sentencia SELECT no puede ser el objeto base de la sentencia INSERT. Reglas Valores por omisin Se inserta un valor por omisin o nulo en las columnas que no aparecen en la lista de columnas. Las columnas que no aceptan valores por omisin o nulos se deben incluir en la lista de columnas. Longitud Si el valor para insertar en una columna es un nmero, la columna debe ser una columna numrica que pueda representar la parte entera del nmero. Si el valor para insertar en una columna es una cadena de caracteres, la columna debe ser una columna de tipo carcter cuya longitud sea como mnimo la longitud de la cadena. Asignacin Los valores de insercin se asignan a las columnas de acuerdo con las reglas de asignacin descritas en el manual Consulta de SQL de DB2 Universal Database. Ejemplos Ejemplo 1: Insercin en la tabla EMPLOYEE de un empleado cuyas especificaciones son las siguientes: v Nmero de empleado (EMPNO): 002001 v Nombre (FIRSTNAME): John v Apellido (LASTNAME): Harrison v Nmero de departamento (DEPT): 600 v Nmero de telfono (PHONENO): 4900 v Salario (SALARY): 50000 v Fecha de contrato (HIREDATE): 01/12/1989
INSERT INTO EMPLOYEE VALUES (002001, John, Harrison, 600, 4900, 50000, 01/12/1989)

Ejemplo 2: Insercin en la tabla EMPLOYEE de un nuevo empleado cuyas especificaciones son las siguientes: v Nmero de empleado (EMPNO): 003002 v Nombre (FIRSTNAME): Jim v Apellido (LASTNAME): Gray
INSERT INTO EMPLOYEE (EMPNO, FIRSTNAME, LASTNAME) VALUES (003002, Jim, Gray)

Ejemplo 3: Creacin de una tabla EMP_ACT_COUNT. Cargar EMP_ACT_COUNT con las filas de la tabla EMP_ACT con un nmero de empleado (EMPNO) con el nmero de proyectos implicados.
CREATE TABLE EMP_ACT_COUNT ( EMPNO CHAR(6) NOT NULL, COUNT INTEGER)

Consulta

445

INSERT INTO EMP_ACT_COUNT SELECT EMPNO, COUNT(*) FROM EMP_ACT GROUP BY EMPNO

Restriccin: Restricciones: 1. Los tipos de datos de columna de la sentencia SELECT deben ser idnticos a las definiciones de columna de la tabla de destino (exceptuando la capacidad para contener nulos). 2. No estn permitidas las clusulas ORDER BY y LIMIT.

LOCK TABLE
La sentencia LOCK TABLE permite a un sentencia adquirir explcitamente un bloqueo de tabla compartido o exclusivo sobre una tabla especificada. El bloqueo de la tabla durar hasta el final de la transaccin actual. No es posible bloquear tablas del sistema con esta sentencia. Invocacin Esta sentencia puede utilizarse en una aplicacin utilizando las funciones de DB2 CLI o emitirse mediante DB2eCLP. Sintaxis
LOCK TABLE nombre-tabla IN SHARE EXCLUSIVE MODE

Descripcin nombre-tabla Especifica la tabla que se debe bloquear. El nombre puede tener hasta 18 caracteres de longitud. El nombre debe identificar una tabla contenida en el catlogo. Cuando un nombre de tabla contenga espacios en blanco o caracteres especiales, se debern utilizar identificadores delimitados (con comillas dobles). Los nombres de tabla pueden incluir caracteres DBCS (de doble byte). Restriccin: Los archivos de datos creados por el sistema que corresponden a tablas creadas y denominadas por nombres de usuario no distinguen entre caracteres en maysculas y minsculas. Por ejemplo, el archivo de datos para una tabla denominada TB se denomina DSY_TB. El archivo de datos para una tabla denominada tb tambin es DSY_TB. Por consiguiente le recomendamos firmemente que, para asegurarse de la integridad de los datos, no denomine una tabla utilizando una serie de caracteres idntica, a excepcin de la consideracin sobre maysculas y minsculas, a la de un nombre de tabla existente. Notas v Esta sentencia no se puede utilizar para bloquear tablas del sistema. Cualquier intento que se realice producir un SQLSTATE 42832. v DB2 Everyplace proporciona un mecanismo de tiempo de espera excedido que las aplicaciones pueden utilizar para resolver puntos muertos. Si una aplicacin no puede obtener un bloqueo dentro de un perodo de tiempo especificado, el

446

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

motor de base de datos retrotraer la transaccin y devolver el SQLSTATE 40001. El tiempo de espera por omisin para los bloqueos es de 20 segundos. Ejemplo El cdigo siguiente obtiene un bloqueo exclusivo sobre la tabla EMP.
LOCK TABLE EMP IN EXCLUSIVE MODE

REORG TABLE
La sentencia REORG TABLE comprime los datos de la tabla especificada. Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP. Sintaxis
REORG TABLE nombre-tabla ent1 ent2

Descripcin REORG TABLE nombre-tabla Identifica la tabla que es objeto de la operacin de reorganizacin. El nombre debe identificar una tabla existente. ent1 Porcentaje mnimo opcional de bytes que es necesario recuperar. ent2 Nmero mnimo de bytes que es necesario recuperar para que se ejecute la compresin de la tabla. Reglas v REORG TABLE slo se puede ejecutar en modalidad de confirmacin automtica (autocommit=on o bien autocommit=true). v Si se llama a REORG TABLE desde dentro de una transaccin se producir un SQLState 42887. v Los valores opcionales int1 y int2 deben especificarse conjuntamente o no especificar ninguno de ellos. v El valor opcional int1 debe ser un nmero no negativo. v El valor opcional int1 debe estar comprendido entre 0 y 100. Notas v DB2 Everyplace puede invocar internamente una reorganizacin de tabla. v El primer parmetro opcional es el porcentaje de bytes no utilizables que la tabla debe contener (por ejemplo, un 10 por ciento significa que como mnimo el 10 por ciento del espacio no es utilizable). El segundo parmetro opcional es el nmero de bytes no utilizables que la tabla debe contener (por ejemplo, 1000 significar que como mnimo 1000 bytes deben ser espacio no utilizable). Para que tenga lugar una reorganizacin real de la tabla, se deben cumplir ambos criterios.

Consulta

447

v Si no se especifica ningn parmetro, DB2 Everyplace utilizar valores por omisin para estas opciones. El porcentaje por omisin es 30 y el nmero de bytes por omisin es 6144. As, reorg table t1 es lo mismo que reorg table t1 30 6144. v Si la modalidad de reorganizacin se establece en habilitada, DB2 Everyplace reorganizar automticamente una tabla. Si la reorganizacin est habilitada, despus de ejecutar una sentencia DELETE o UPDATE se ejecuta una operacin reorg table nombre_tabla 50 30270 para la tabla de destino. Si la reorganizacin est habilitada, al final del proceso de una sentencia DROP TABLE se ejecuta una operacin reorg table DB2eSYSTABLES 30 10240 (tambin para DB2eSYSCOLUMNS y DB2eSYSRELS). v En un programa C/C++, la modalidad de reorganizacin se establece utilizando la funcin SQLSetStmtAttr de CLI/ODBC con el atributo SQL_ATTR_REORG_MODE. En un programa Java, establece la modalidad de reorganizacin el mtodo enableReorg de la interfaz DB2eStatement. El valor por omisin consiste en que la reorganizacin est habilitada. v La reorganizacin de una tabla comprime el archivo de datos que contiene la tabla, reclamando fsicamente el espacio no utilizable creado por supresiones y actualizaciones. Luego se actualizan los ndices de la tabla de forma que apunten a la nueva direccin fsica de las filas. v Las tablas base del catlogo del sistema de DB2 Everyplace se pueden reorganizar. v Las reorganizaciones implcitas de las tablas del catlogo del sistema tras una sentencia DROP TABLE slo se desencadenan cuando la modalidad de confirmacin automtica est activada. v No se debe producir ninguna otra actividad en la base de datos mientras se ejecute una sentencia REORG TABLE. Si se ejecuta cualquier otra sentencia sobre la base de datos mientras se est realizando una reorganizacin de datos, se devolver un SQLSTATE 57011. Ejemplos El mandato siguiente reorganiza la tabla VNNURSE utilizando los valores por omisin.
REORG TABLE VNNURSE

REVOKE
La sentencia REVOKE permite que un usuario conectado y autentificado revoque los privilegios de cifrado de un usuario existente. Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP. Sintaxis
REVOKE ENCRYPT ON DATABASE FROM usuario

Descripcin usuario Identifica el usuario cuyos privilegios de cifrado se revocan.

448

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Reglas v El parmetro de usuario debe ser un identificador delimitado. Tiene una longitud limitada a 254 bytes. v Para caracteres de byte mltiple, internamente se utiliza la codificacin UTF-8 para el almacenamiento. Por consiguiente, los nombres de usuario escritos utilizando juegos de caracteres internacionales tienen una longitud limitada. v Si se eliminan todos los usuarios que tienen privilegios de cifrado, se puede seguir accediendo a las tablas cifradas durante la sesin actual. Una vez que finalice la sesin actual, las tablas cifradas dejarn de estar disponibles. Notas v Para revocar privilegios de un usuario existente, un usuario debe estar conectado y autentificado. Si es usted un usuario conectado y autentificado, puede revocar privilegios de cualquier usuario, incluido usted mismo. v Cuando se emiten sentencias REVOKE sobre otros usuarios, los derechos de acceso de dichos usuarios entran en vigor en posteriores llamadas a CONNECT, a menos que la conexin modifique sus propios derechos de acceso. v La sentencia REVOKE no se puede utilizar con marcadores de parmetros ni con la funcin SQLPrepare(). v Intentar conseguir los privilegios de REVOKE mientras se est conectado como usuario no autorizado devuelve SQLSTATE 42502. Intentar revocar (REVOKE) privilegios de un usuario inexistente da como resultado SQLSTATE 42501. v Mientras se ejecute REVOKE en una transaccin manual, las sentencias SELECT y DML se bloquearn hasta que la transaccin en cuestin se confirme o se retrotraiga. v Cuando se revoca un privilegio SELECT desde un usuario, la revocacin entra en vigor en la siguientes sentencia SELECT. Ejemplo El usuario conectado y autentificado actualmente elimina los privilegios de cifrado del usuario jsk:
REVOKE ENCRYPT ON DATABASE FROM "jsk"

SELECT
La sentencia SELECT es una modalidad de consulta. Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP. Sintaxis
, SELECT DISTINCT elementoSeleccionado FROM

Consulta

449

, nombre-tabla AS WHERE nombre-correlacin

condicin-bsqueda

, GROUP BY nombre-tabla . nombre-columna

, ORDER BY entero-simple , nombre-tabla . nombre-columna ASC DESC

LIMIT entero-simple

elementoSeleccionado:
* COUNT ( AVG SUM MIN MAX ( ( ( ( expresin * expresin expresin expresin expresin ) ) ) ) )

condicin-bsqueda:

AND OR

NOT

predicado condicin-bsqueda

450

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

predicado:
predicado predicado predicado predicado bsico IN LIKE NULL (1)

predicado
expresin = > <> < <= >= expresin

predicado
, expresin NOT IN expresin

predicado
expresin NOT LIKE expresin-patrn ESCAPE expresin-escape

predicado
expresin IS NOT NULL

expresin:
operador + literal nombre-tabla . registro-especial funcin nombre-columna

operador:
/ * + ||

Consulta

451

funcin:
MOD ( expresin , expresin LENGTH ( expresin ) RTRIM ( expresin ) LCASE ( expresin ) UCASE ( expresin ) DATE ( expresin ) TIME ( expresin ) TIMESTAMP ( expresin ) )

Notas: 1 Las expresiones BLOB slo se permiten en predicados NULL

Descripcin elementoSeleccionado * Especifica todas las columnas. Si se especifica un asterisco (*), debe ser el nico elemento seleccionado.

COUNT(*) La funcin COUNT obtiene el nmero de filas o valores de un conjunto de filas o valores. El argumento de COUNT(*) es un conjunto de filas. El resultado es el nmero de filas del conjunto. En la cuenta se incluyen tambin las filas que slo contengan valores nulos. expresin La expresin puede ser un literal, nombre de columna, registro especial o funcin. Las funciones vlidas son: COUNT, AVG, SUM, MIN, MAX, MOD, LENGTH, RTRIM, LCASE, UCASE, DATE, TIME y TIMESTAMP. No se da soporte a las operaciones aritmticas sobre los tipos de datos CHAR, VARCHAR y BLOB(n). En DATE, TIME y TIMESTAMP slo se permite la resta. literal Un literal puede ser un valor cuyo tipo de datos es INTEGER, SMALLINT, DECIMAL, CHAR(n), VARCHAR(n), BLOB(n), DATE, TIME y TIMESTAMP. nombre-tabla Designa la tabla donde reside la columna que es objeto de la consulta. . Carcter que separa las dos partes que forman el identificador de columna, nombre-tabla.nombre-columna.

nombre-columna Designa la columna que es objeto de la consulta. COUNT(expresin) El argumento de COUNT(expresin) es un conjunto de filas. La funcin se aplica al conjunto de filas que se obtiene a partir de los valores argumento por eliminacin de los valores nulos. El resultado es el nmero de valores no nulos del conjunto, incluidos los duplicados. AVG(expresin) La funcin AVG(expresin) obtiene el valor promedio de los valores de expresin. Los valores argumento deben ser nmeros y su suma debe estar dentro del rango del tipo de datos del resultado. La funcin se aplica al

452

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

conjunto de valores que se obtiene a partir de los valores argumento por eliminacin de los valores nulos. El resultado puede ser nulo. SUM(expresin) La funcin SUM(expresin) obtiene la suma de los valores de expresin. Los valores argumento deben ser nmeros y su suma debe estar dentro del rango del tipo de datos del resultado. La funcin se aplica al conjunto de valores que se obtiene a partir de los valores argumento por eliminacin de los valores nulos. MIN(expresin) La funcin MIN(expresin) obtiene el valor mnimo del conjunto de valores de expresin. Los valores argumento pueden ser cualquier tipo de datos interno excepto BLOB. La funcin se aplica al conjunto de valores que se obtiene a partir de los valores argumento por eliminacin de los valores nulos. MAX(expresin) La funcin MAX(expresin) obtiene el valor mximo del conjunto de valores de expresin. Los valores argumento pueden ser cualquier tipo de datos interno excepto BLOB. La funcin se aplica al conjunto de valores que se obtiene a partir de los valores argumento por eliminacin de los valores nulos. FROM La clusula FROM especifica una tabla de resultados intermedia. Si se especifica una referencia de tabla, la tabla de resultados intermedia es simplemente el resultado de esa referencia de tabla. Si se especifica ms de una tabla de referencia, la tabla de resultados intermedia consta de todas las combinaciones posibles de las filas de las referencias de tabla especificadas (el producto cartesiano). Cada fila del resultado es una fila de la primera referencia de tabla concatenada con una fila de la segunda referencia de tabla, concatenada a su vez con una fila de la tercera y as sucesivamente. El nmero de filas del resultado es el producto del nmero de filas de todas las referencias de tabla individuales. nombre-tabla Cada nombre-tabla especificado como referencia de tabla debe identificar una tabla existente. AS Identifica la definicin de tabla. nombre-correlacin Cada nombre-correlacin identifica el nombre-tabla inmediato anterior. Si se especifica un nombre de correlacin para una tabla, cualquier referencia calificada a una columna de la tabla debe utilizar el nombre de correlacin en lugar del nombre de tabla. Si se especifica dos veces un mismo nombre de tabla, al menos una de las especificaciones debe ir seguida por un nombre de correlacin. El nombre de correlacin se utiliza para calificar referencias a las columnas de la tabla. Como calificador, el nombre de correlacin se puede utilizar para evitar ambigedades o para establecer una referencia correlacionada. Puede tambin utilizarse simplemente como nombre abreviado para una tabla. WHERE Especifica una condicin que selecciona filas. Se puede omitir la clusula o especificar una condicin de bsqueda. Si se omite la clusula, se seleccionan todas las filas de la tabla.
Consulta

453

condicin-bsqueda Una condicin-bsqueda especifica una condicin que es verdadera, falsa o desconocida para una fila determinada. El resultado de una condicin-bsqueda se obtiene aplicando los operadores lgicos especificados (AND, OR, NOT) al resultado de cada predicado especificado. Un predicado compara dos valores. Si no se especifican operadores lgicos, el resultado de la condicin de bsqueda es el resultado del predicado especificado. Las condiciones de bsqueda que estn entre parntesis se evalan en primer lugar. Si no se especifica un orden de evaluacin mediante el uso de parntesis, NOT se aplica antes que AND y AND se aplica antes que OR. El orden en el que se evalan los operadores con igual nivel de prioridad es indefinido, para permitir la optimizacin de las condiciones de bsqueda. La condicin-bsqueda se aplica a cada fila de la tabla y las filas seleccionadas son aquellas para las cuales el resultado de la condicin-bsqueda es verdadero. Cada nombre-columna especificado en la condicin de bsqueda debe identificar una columna de la tabla. NOT Si se especifica NOT, se invierte el resultado del predicado. expresin La expresin puede ser un literal, nombre de columna, registro especial o funcin. Operaciones aritmticas sobre CHAR, VARCHAR, BLOB(n). Slo se da soporte a la resta para DATE, TIME y TIMESTAMP. literal Un literal puede ser un valor cuyo tipo de datos es INTEGER, SMALLINT, DECIMAL, CHAR(n), VARCHAR(n), BLOB(n), DATE, TIME y TIMESTAMP. nombre-tabla Designa la tabla donde reside la columna que es un operando del predicado. . Carcter que separa las dos partes que forman el identificador de columna, nombre-tabla.nombre-columna.

nombre-columna Identifica la columna que es un operando del predicado. registro-especial Identifica el registro especial que es un operando del predicado. Se pueden utilizar los registros especiales CURRENT DATE, CURRENT TIME y CURRENT TIMESTAMP para generar la fecha, la hora y la indicacin de hora actuales. funcin MOD(expresin, expresin) La funcin MOD(expresin, expresin) obtiene el resto de dividir el primer argumento por el segundo. El resultado es negativo slo si el primer argumento es negativo. El primer y segundo argumento puede ser de tipo SMALLINT o INTEGER.

454

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

El resultado de la funcin es SMALLINT si ambos argumentos son SMALLINT; en otro caso, el resultado es INTEGER. El resultado puede ser nulo; si cualquiera de los argumentos es nulo, el resultado es el valor nulo. LENGTH(expresin) La funcin LENGTH(expresin) obtiene la longitud de un valor. El argumento puede ser una expresin que devuelve un valor de los siguientes tipos de datos incorporados: v VARCHAR v CHAR v BLOB El resultado de la funcin es un entero. Si el argumento puede ser nulo, el resultado tambin; si el argumento es nulo, el resultado es el valor nulo. El resultado es la longitud del argumento. La longitud de una serie de longitud variable es la longitud real, no la longitud mxima. La longitud de un BLOB es el nmero de bytes utilizados para representar el valor. Considere una columna de tipo VARCHAR(50) llamada ADDRESS con un valor de 895 Don Mills Road. LENGTH(ADDRESS) devuelve el valor 18. RTRIM(expresin) La funcin RTRIM(expresin) elimina espacios en blanco del final de la serie. El argumento puede ser de tipo de datos CHAR o VARCHAR. El tipo de datos resultante de la funcin es siempre VARCHAR. El parmetro de longitud del tipo de datos devuelto es el mismo que el parmetro de longitud del tipo de datos del argumento. La longitud real del resultado para series de caracteres es la longitud de la expresin de la serie menos el nmero de bytes de caracteres en blanco eliminados. La longitud real del resultado para series de grficos es la longitud (en el nmero de caracteres de doble byte) de la expresin de la serie menos el nmero de caracteres en blanco de doble byte eliminados. Si se eliminan todos los caracteres, el resultado es una serie de longitud variable y vaca (con longitud cero). Si el argumento puede ser nulo, el resultado tambin; si el argumento es nulo, el resultado es el valor nulo. Considere una columna de tipo CHAR(50) llamada NAME con un valor de Cliff . RTRIM(NAME) devuelve Cliff. LENGTH(RTRIM(NAME)) devuelve 5. LCASE / UCASE La funcin LCASE o LOWER devuelve una serie en la que todos los caracteres SBCS se han convertido a caracteres en minsculas. Es decir,

Consulta

455

los caracteres A-Z se convertirn en los caracteres a-z y los caracteres con marcas diacrticas se convertirn a sus equivalentes en minsculas en el caso de que stas existan. El argumento debe ser una expresin cuyo valor sea un tipo de datos CHAR o VARCHAR. El resultado de la funcin tiene el mismo tipo de datos y atributo de longitud que el argumento. Si el argumento puede ser nulo, el resultado tambin; si el argumento es nulo, el resultado es el valor nulo. Asegrese de que los caracteres del valor de la columna JOB de la tabla EMPLOYEE se devuelven en caracteres en minsculas. Por ejemplo:
SELECT LCASE(JOB) FROM EMPLOYEE WHERE EMPNO = 000020;

DATE La funcin DATE devuelve una fecha de una expresin que evala a un tipo de datos DATE, TIMESTAMP o de cadena de caracteres. TIME La funcin TIME devuelve una hora de una expresin que evala a un tipo de datos TIME, TIMESTAMP o de cadena de caracteres. TIMESTAMP La funcin TIMESTAMP devuelve una fecha de una expresin que evala a un tipo de datos TIMESTAMP o de cadena de caracteres. registro-especial Se pueden utilizar los registros especiales CURRENT DATE, CURRENT TIME y CURRENT TIMESTAMP para generar la fecha actual, la hora actual y la indicacin de la hora actual. predicado bsico Puede ser cualquiera de los operadores siguientes: = <> < > <= >= LIKE expresin-patrn Coincide con una serie de caracteres. Utilice un smbolo de subrayado de SBCS (juego de caracteres de un solo byte) para representar un carcter SBCS individual. Utilice un smbolo de subrayado de DBCS (juego de caracteres de doble byte) para representar un carcter DBCS individual. Por ejemplo, la condicin WHERE PART_NUMBER LIKE _0 devuelve todos los nmeros de pieza de 2 dgitos que terminan en 0 (20, 30 y 40, por ejemplo). Utilice un smbolo de porcentaje (del juego de caracteres SBCS o DBCS) para representar una cadena de caracteres SBCS o DBCS, o la ausencia de caracteres. Por Igual a. No igual a. Menor que. Mayor que. Menor o igual que. Mayor o igual que.

456

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

ejemplo, la condicin WHERE DEPT_NUMBER LIKE 2% obtiene todos los nmeros de departamento (DEPT_NUMBER) que comienzan con el nmero 2 (por ejemplo, 20, 27 234). Para buscar coincidencias con datos de serie que contengan caracteres de porcentaje o de subrayado, DB2 Everyplace soporta la clusula ESCAPE en predicados LIKE. expresin-escape Este argumento opcional especifica un carcter que cambia el significado de los caracteres de porcentaje y de subrayado de una expresin, lo que permite al predicado LIKE buscar coincidencias con valores que contengan caracteres de porcentaje y de subrayado. DB2 Everyplace no soporta un carcter de escape por omisin. Utilice expresin-escape para indicar el carcter de escape. El valor de expresin-escape se puede especificar mediante una constante o una variable del lenguaje principal con la restriccin de que el resultado de la expresin debe ser un carcter que contenga exactamente un byte y no debe ser el propio carcter de porcentaje o de subrayado (SQLState 22019). Un carcter de subrayado, un signo de porcentaje o un carcter de escape pueden representar una ocurrencia literal de ellos mismos cuando expresin-patrn contenga un carcter de escape. Esto es verdadero cuando el carcter en cuestin va precedido de un nmero impar de caracteres de escape sucesivos. En caso contrario, no es verdadero. Los ejemplos siguientes muestran el efecto de ocurrencias sucesivas del carcter que, en este caso, es la barra inclinada invertida.
Tabla 195. Ejemplos de patrones de escape Serie patrn \% \\% Patrn real Signo de porcentaje Barra inclinada invertida seguida de cero o ms caracteres arbitrarios Barra inclinada invertida seguida de un signo de porcentaje

\\\%

NOT LIKE Indica que al menos uno de los caracteres es diferente. IN Encuentra las coincidencias de una coleccin de valores. El predicado IN compara un valor con un conjunto de valores. Ejemplos: SELECT lname, fname FROM emp WHERE state IN (CA, AZ, OR); SELECT c1 FROM t1 WHERE c1*5-6 IN (mod(c2,2)+5,c3+4/2); NOT IN No coincide con una coleccin de valores. El predicado NOT IN compara un valor con un coleccin conjunto de valores.
Consulta

457

Ejemplos: SELECT empid FROM emp WHERE city NOT IN (San Jose, Morgan Hill, Santa Clara); IS NULL Contiene el valor nulo. IS NOT NULL No contiene el valor nulo. AND Si se especifica, el operador lgico AND se aplica al resultado de cada predicado especificado. OR Si se especifica, el operador lgico OR se aplica al resultado de cada predicado especificado. GROUP BY Especifica una tabla de resultados intermedia formada por un agrupamiento de las filas de R. R es el resultado de la clusula anterior de la subseleccin. ORDER BY Especifica una ordenacin de las filas de la tabla de resultados. nombre-columna Suele designar una columna de la tabla de resultados. En este caso, nombre-columna debe ser el nombre de una columna que aparece en la lista de seleccin. entero-simple Debe ser superior a 0 y no ser superior al nmero de columnas de la tabla de resultados. El entero n identifica la columna que ocupa la posicin n en la tabla de resultados. ASC Utiliza los valores de la columna en orden ascendente. DESC Utiliza los valores de la columna en orden descendente. LIMIT entero-simple Limita el nmero de filas que se devuelven a la aplicacin al primer nmero n de filas del conjunto de respuestas donde n es un entero. Debe ser superior a 0. operador Puede ser uno de los operadores siguientes + * / || Sumar Restar Multiplicar Dividir por La funcin (expresin || expresin) devuelve la concatenacin de dos argumentos de serie. Los dos argumentos deben ser de tipos compatibles. El resultado de la funcin es una serie. Su longitud es la suma de las longitudes de los dos argumentos. Si el argumento puede ser nulo, el resultado tambin; si el argumento es nulo, el resultado es el valor nulo.

458

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Reglas Las columnas con datos de tipo BLOB no se pueden utilizar en clusulas GROUP BY, ORDER BY ni DISTINCT. Notas v Una sentencia SELECT DISTINCT puede contener un mximo de ocho columnas. v Una clusula GROUP BY puede contener un mximo de ocho columnas. v Una clusula ORDER BY puede contener un mximo de ocho columnas. v Todas las columnas que se han especificado en la clusula ORDER BY deben aparecer en la lista de seleccin. Por ejemplo, la consulta siguiente no es vlida:
SELECT EMPNO, FIRSTNAME FROM EMPLOYEE ORDER BY LASTNAME

La consulta siguiente es vlida:


SELECT LASTNAME, EMPNO, FIRSTNAME FROM EMPLOYEE ORDER BY LASTNAME

Ejemplos Ejemplo 1: Este ejemplo selecciona los empleados (EMPNO y LASTNAME) de la tabla EMPLOYEE que se contrataron despus de la fecha 01/01/1980 y los ordena de acuerdo con su apellido (LASTNAME).
SELECT EMPNO, LASTNAME FROM EMPLOYEE WHERE HIREDATE > 01/01/1980 ORDER BY LASTNAME

Ejemplo 2: Este ejemplo calcula el salario promedio para cada departamento de la tabla EMPLOYEE.
SELECT DEPT, AVG(SALARY) FROM EMPLOYEE GROUP BY DEPT

Ejemplo 3: Calcular el volumen mximo de ventas de cada regin de ventas y visualizar el resultado por regin, en orden de mayor a menor volumen de ventas.
SELECT REGION, MAX(SALES_VOL) FROM SALES GROUP BY REGION ORDER BY 2 DESC

TIME
La funcin TIME devuelve una hora de un valor. Invocacin Esta sentencia puede utilizarse en una aplicacin utilizando las funciones de DB2 CLI o emitirse mediante DB2eCLP. Sintaxis
TIME expresin

Consulta

459

Descripcin expresin Especifica un valor. El argumento debe ser una hora, una indicacin de la hora o una representacin vlida de la hora o la indicacin de la hora en forma de serie. Reglas El resultado de la funcin es una hora: la parte del argumento correspondiente a la hora. Si el argumento puede ser nulo, el resultado tambin; si el argumento es nulo, el resultado es el valor nulo. Ejemplo Supongamos que la columna RECEIVED (del tipo de datos TIMESTAMP) tiene un valor de datos de 2003-12-25-17.12.30.000000. v TIME(RECEIVED) es 17:12:30 (del tipo de datos TIME). v TIME(17.12.30) es 17:12:30 (del tipo de datos TIME). v TIME(05:12 PM) es 17:12:00 (del tipo de datos TIME).

TIMESTAMP
La funcin TIMESTAMP devuelve una indicacin de la hora de un valor. Invocacin Esta sentencia puede utilizarse en una aplicacin utilizando las funciones de DB2 CLI o emitirse mediante DB2eCLP. Sintaxis
TIMESTAMP expresin

Descripcin expresin Especifica un valor. El argumento debe ser una indicacin de la hora o una representacin vlida de la indicacin de la hora en forma de serie. Reglas Si el argumento puede ser nulo, el resultado tambin; si el argumento es nulo, el resultado es el valor nulo. Notas Cuando el mtodo getString() de JDBC para DB2 Everyplace se llama sobre una columna TIMESTAMP devuelve una indicacin de la hora en formato ISO AAAA-MM-DD-HH.MM.SS.ZZZZZZ. Este es distinto al formato de escape de la indicacin de la hora JDBC AAAA-MM-DD HH:MM:SS.FFFFFFFFF. JDBC para DB2 UDB versin 8 devuelve una indicacin de la hora en el formato AAAA-MM-DD HH:MM:FFFFFF.

460

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Ejemplo
Si HORA(IH2) <= HORA(IH1) entonces HORA(RESULTADO) = HORA(IH1) - HORA(IH2). Si HORA(IH2) > HORA(IH1) entonces HORA(RESULTADO) = 24 + HORA(IH1) - HORA(IH2) y se suma 1 a DA(IH2).

UPDATE
La sentencia UPDATE actualiza los valores de columnas especificadas en las filas de una tabla. Invocacin Esta sentencia puede utilizarse en un programa de aplicacin utilizando las funciones de DB2 CLI o emitirse a travs del CLP. Sintaxis
, UPDATE nombre-tabla SET nombre-columna = expresin

WHERE

condicin-bsqueda

expresin:
operador aritmtico + literal nombre-columna registro-especial

operador:
CONCAT / * + -

Consulta

461

condicin-bsqueda:

AND OR

NOT

predicado (condicin-bsqueda)

predicado:
predicado predicado predicado predicado bsico IN LIKE NULL (1)

predicado
expresin = <> < > <= >= || expresin

predicado
expresin NOT IN ( expresin )

predicado
expresin NOT LIKE expresin

predicado
expresin IS NOT NULL

462

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

operador
= <> < > <= >= LIKE NOT LIKE IS NULL IS NOT NULL

Notas: 1 Las expresiones BLOB slo se permiten en predicados NULL

Descripcin nombre-tabla Es el nombre de la tabla para actualizar. El nombre debe identificar una tabla descrita en el catlogo, pero no una tabla de catlogo. SET Define la asignacin de valores a nombres de columna. nombre-columna Designa una columna para actualizar. El nombre-columna debe identificar una columna de la tabla especificada. No se puede especificar una columna ms de una vez (SQLSTATE 42701). expresin Una expresin puede ser un literal, nombre de columna o registro especial. No se da soporte a las operaciones aritmticas sobre los tipos de datos BLOB(n), DATE, TIME y TIMESTAMP. literal Un literal puede ser un valor cuyo tipo de datos es INTEGER, SMALLINT, DECIMAL, CHAR(n), VARCHAR(n), BLOB(n), DATE, TIME o TIMESTAMP. registro-especial Se pueden utilizar los registros especiales CURRENT DATE, CURRENT TIME y CURRENT TIMESTAMP para generar la fecha, la hora y la indicacin de hora actuales. WHERE Define una condicin que indica las filas que deben actualizarse. Se puede omitir la clusula o proporcionar una condicin de bsqueda. Si se omite la clusula, se actualizan todas las filas de la tabla. condicin-bsqueda La condicin-bsqueda especifica una condicin que es verdadera, falsa o desconocida para una fila determinada. El resultado de una condicin-bsqueda se obtiene aplicando los operadores lgicos especificados (AND, OR, NOT) al resultado de cada predicado especificado. Un predicado compara dos valores. Si no se especifican operadores lgicos, el resultado de la condicin de bsqueda es el resultado del predicado especificado.

Consulta

463

Las condiciones de bsqueda que estn entre parntesis se evalan en primer lugar. Si no se especifica un orden de evaluacin mediante el uso de parntesis, NOT se aplica antes que AND y AND se aplica antes que OR. El orden en el que se evalan los operadores con igual nivel de prioridad es indefinido, para permitir la optimizacin de las condiciones de bsqueda. La condicin-bsqueda se aplica cada fila de la tabla y las filas actualizadas son aqullas para las cuales el resultado de la condicin-bsqueda es verdadero. Cada nombre-columna especificado en la condicin de bsqueda debe identificar una columna de la tabla. Puede utilizar las funciones CONCAT, MOD, LENGTH y RTRIM en la expresin predicado de la condicin de bsqueda. Para obtener ms informacin sobre la funcin MOD, vea la pgina SELECT en la pgina 449. NOT Si se especifica NOT, se invierte el resultado del predicado. operador relacional Puede ser cualquiera de los operadores siguientes: = <> < > <= >= LIKE Igual a. No igual a. Menor que. Mayor que. Menor o igual que. Mayor o igual que. Coincide con una serie de caracteres. Utilice un smbolo de subrayado de SBCS (juego de caracteres de un solo byte) para representar un carcter SBCS individual. Utilice un smbolo de subrayado de DBCS (juego de caracteres de doble byte) para representar un carcter DBCS individual. Por ejemplo, la condicin WHERE PART_NUMBER LIKE _0 devuelve todos los nmeros de pieza de 2 dgitos que terminan en 0 (20, 30 y 40, por ejemplo). Utilice un smbolo de porcentaje (del juego de caracteres SBCS o DBCS) para representar una cadena de caracteres SBCS o DBCS, o la ausencia de caracteres. Por ejemplo, la condicin WHERE DEPT_NUMBER LIKE 2% obtiene todos los nmeros de departamento (DEPT_NUMBER) que comienzan con el nmero 2 (por ejemplo, 20, 27 234).

NOT LIKE Indica que al menos uno de los caracteres es diferente. IS NULL Contiene el valor nulo. IS NOT NULL No contiene el valor nulo. AND Si se especifica, el operador lgico AND se aplica al resultado de cada predicado especificado. OR Si se especifica, el operador lgico OR se aplica al resultado de cada predicado especificado.

464

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Reglas v Asignacin: Los valores de actualizacin se asignan a las columnas de acuerdo con las reglas de asignacin descritas en el manual DB2 Universal Database SQL Reference. v UPDATE no se aplica nunca a registros suprimidos lgicamente. Notas v En la modalidad del sistema, el bit de modificacin se activa por omisin. Si est ejecutando su aplicacin en la modalidad del sistema (SQL_DIRTYBIT_SET_BY_SYSTEM), no puede activar manualmente el bit de modificacin. Si intenta activar el bit de modificacin, se producir un error. Consulte el apartado El bit de modificacinbit de modificacinconcepto debit de modificacindescripcin en la pgina 286 para obtener ms informacin. Ejemplo Este ejemplo cambia el nmero de telfono (PHONENO) del nmero de empleado (EMPNO) 003002 para que sea 1234 en la tabla EMPLOYEE.
UPDATE EMPLOYEE SET PHONENO = 1234 WHERE EMPNO = 003002

Compatibilidad entre tipos de datos para las operaciones de asignacin y comparacin


Las operaciones de asignacin se realizan durante la ejecucin de las sentencias INSERT y UPDATE. Las operaciones de comparacin se realizan durante la ejecucin de las sentencias que incluyen predicados. Los tipos de datos de los operandos que intervienen deben ser compatibles, tal como se muestra en las tablas de la Tabla 196 a la Tabla 198 en la pgina 466. Si la columna del tipo de datos contiene: X Los tipos de datos de los operandos son compatibles.

en blanco Los tipos de datos de los operandos no son compatibles.


Tabla 196. Compatibilidad entre tipos de datos, tabla 1 SQL, tipo de datos INT INT VARCHAR BLOB DECIMAL CHAR SMALLINT DATE TIME TIMESTAMP X X X X X X X X SMALLINT X DECIMAL X BLOB

Consulta

465

Tabla 197. Compatibilidad entre tipos de datos, tabla 2 SQL, tipo de datos INT VARCHAR BLOB DECIMAL CHAR SMALLINT DATE TIME TIMESTAMP X X X X X X X X X X CHAR VARCHAR

Tabla 198. Compatibilidad entre tipos de datos, tabla 3 SQL, tipo de datos INT VARCHAR BLOB DECIMAL CHAR SMALLINT DATE TIME TIMESTAMP X X X X X X X X X DATE TIME TIMESTAMP

Atributos de tipos de datos


Se muestra informacin sobre los atributos de tipo de datos siguientes: v Precisin v Escala v Longitud v Tamao de pantalla Precisin La precisin de una columna numrica o parmetro hace referencia al nmero mximo de dgitos que utiliza el tipo de datos de la columna o parmetro. La precisin de una columna no numrica o parmetro hace referencia generalmente a la longitud mxima o a la longitud definida de la columna o parmetro. La tabla siguiente define la precisin para cada tipo de datos SQL.
Tabla 199. Precisin fSqlType SQL_CHAR SQL_VARCHAR Precisin La longitud definida de la columna o parmetro. Por ejemplo, la precisin de una columna definida como CHAR(10) es 10.

466

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 199. Precisin (continuacin) fSqlType SQL_DECIMAL Precisin El nmero mximo de dgitos definido. Por ejemplo, la precisin de una columna definida como DECIMAL(10,3) es 10. 5. El argumento cbParamDef de SQLBindParameter() se pasa por alto para este tipo de datos. SQL_INTEGER 10. El argumento cbParamDef de SQLBindParameter() se pasa por alto para este tipo de datos. SQL_BLOB La longitud definida de la columna o parmetro. Por ejemplo, la precisin de una columna definida como BLOB(10) es 10. 10 (el nmero de caracteres en el formato aaaa-mm-dd). El argumento cbParamDef de SQLBindParameter() se pasa por alto para este tipo de datos. SQL_TIME 8 (el nmero de caracteres en el formato hh:mm:ss). El argumento cbParamDef de SQLBindParameter() se pasa por alto para este tipo de datos. SQL_TIMESTAMP 26 (El nmero de caracteres en el formato aaaa-mm-dd-hh.mm.ss.ffffff que utiliza el tipo de datos de TIMESTAMP.)

SQL_SMALLINT

SQL_DATE

Escala La escala de una columna numrica o parmetro hace referencia al nmero mximo de dgitos a la derecha de la coma decimal. La tabla siguiente define la escala para cada tipo de datos SQL.
Tabla 200. Escala fSqlType SQL_CHAR SQL_VARCHAR SQL_DECIMAL El nmero de dgitos definido a la derecha de la coma decimal. Por ejemplo, la escala de una columna definida como DECIMAL(10, 3) es 3. 0 SQL_SMALLINT SQL_INTEGER SQL_BLOB No aplicable. Escala No aplicable.

Consulta

467

Tabla 200. Escala (continuacin) fSqlType SQL_DATE SQL_TIME SQL_TIMESTAMP 6 (El nmero de dgitos a la derecha de la coma decimal en el formato aaaa-mm-dd-hh.mm.ss.ffffff.) Escala No aplicable.

Longitud La longitud de una columna es el nmero mximo de bytes devueltos a la aplicacin en el momento en que los datos se transfieren a su tipo de datos C por omisin. Para los datos de tipo carcter, la longitud no incluye el byte de finalizacin de nulo. Tenga en cuenta que la longitud de una columna puede ser diferente del nmero de bytes que se necesitan para almacenar los datos en la fuente de datos. La tabla siguiente define la longitud para cada tipo de datos SQL.
Tabla 201. Longitud fSqlType SQL_CHAR SQL_VARCHAR SQL_DECIMAL Longitud La longitud definida de la columna. Por ejemplo, la longitud de una columna definida como CHAR(10) es 10. El nmero mximo de dgitos ms dos. Puesto que estos tipos de datos se devuelven como series de caracteres, se necesitan caracteres para los dgitos, un signo y una coma decimal. Por ejemplo, la longitud de una columna definida como DECIMAL(10,3) es 12. 2 (dos bytes). 4 (cuatro bytes). La longitud definida de la columna. Por ejemplo, la longitud de una columna definida como BLOB(10) es 10. 6 (el tamao de la estructura DATE_STRUCT o TIME_STRUCT). 16 (el tamao de la estructura TIMESTAMP_STRUCT).

SQL_SMALLINT SQL_INTEGER SQL_BLOB

SQL_DATE SQL_TIME SQL_TIMESTAMP

Tamao de pantalla El tamao de pantalla de una columna es el nmero mximo de bytes necesarios para visualizar datos en formulario de caracteres. La tabla siguiente define el tamao de pantalla para cada tipo de datos SQL.

468

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 202. Tamao de pantalla fSqlType SQL_CHAR SQL_VARCHAR SQL_DECIMAL Tamao de pantalla La longitud definida de la columna. Por ejemplo, el tamao de pantalla de una columna definida como CHAR(10) es 10. La precisin de la columna ms dos (un signo, dgitos de precisin y una coma decimal). Por ejemplo, el tamao de pantalla de una columna definida como DECIMAL(10,3) es 12. 6 (un signo y 5 dgitos). 11 (un signo y 10 dgitos). La longitud definida de la columna por 2 (cada byte binario est representado por un nmero hexadecimal de 2 dgitos). Por ejemplo, el tamao de pantalla de una columna definida como BLOB(10) es 20. 10 (una fecha en el formato aaaa-mm-dd). 8 (una hora en el formato hh:mm:ss). 26 (una indicacin de fecha y hora en el formato aaaa-mm-dd-hh.mm.ss.ffffff).

SQL_SMALLINT SQL_INTEGER SQL_BLOB

SQL_DATE SQL_TIME SQL_TIMESTAMP

Reglas de resta para DATE, TIME y TIMESTAMP


La nica operacin aritmtica que se puede realizar en valores de fecha y hora es la resta. El operador de resta slo se puede utilizar con valores de fecha y hora cuando ambos operandos son fechas, ambos operandos son horas o ambos operandos son indicaciones de la hora. DATE El resultado de restar una fecha (FECHA2) a otra (FECHA1) es una duracin entre fechas que especifica el nmero de aos, meses y das entre las dos fechas. El tipo de datos del resultado es DECIMAL(8,0). Por ejemplo, el resultado de FECHA(3/15/2000) FECHA(12/31/1999) es 00000215 (una duracin de 0 aos, 2 meses y 15 das). Si FECHA1 es superior o igual a FECHA2, FECHA2 se restar de FECHA1. Por el contrario, si FECHA1 es inferior a FECHA2, FECHA1 se restar de FECHA2 y el signo del resultado ser negativo. La siguiente descripcin de procedimiento aclara los pasos necesarios para obtener el resultado de la operacin = FECHA1 FECHA2.
Si DA(FECHA2) <= DA(FECHA1) entonces DA(RESULTADO) = DA(FECHA1) - DA(FECHA2). Si DA(FECHA2) > DA(FECHA1) entonces DA(RESULTADO) = N + DA(FECHA1) - DA(FECHA2) donde N = el ltimo da de MES(FECHA2). entonces se suma 1 a MES(FECHA2).

Consulta

469

Si MES(FECHA2) <= MES(FECHA1) entonces MES(RESULTADO) = MES(FECHA1) - MES(FECHA2). Si MES(FECHA2) > MES(FECHA1) entonces MES(RESULTADO) = 12 + MES(FECHA1) - MES(FECHA2). entonces se suma 1 a AO(FECHA2). AO(RESULTADO) = AO(FECHA1) - AO(FECHA2).

TIME El resultado de restar una hora (HORA2) a otra (HORA1) es una duracin entre horas que especifica el nmero de horas, minutos y segundos entre las dos horas. El tipo de datos del resultado es DECIMAL(6,0). Por ejemplo, el resultado de HORA(11:02:26) HORA(00:32:56) es 102930 (una duracin de 10 horas, 29 minutos y 30 segundos). Si HORA1 es superior o igual a HORA2, HORA2 se restar de HORA1. Por el contrario, si HORA1 es inferior a HORA2, HORA1 se restar de HORA2 y el signo del resultado ser negativo. La siguiente descripcin de procedimiento aclara los pasos necesarios para obtener el resultado de la operacin = HORA1 - HORA2.
Si SEGUNDO(HORA2) <= SEGUNDO(HORA1) entonces SEGUNDO(RESULTADO) = SEGUNDO(HORA1) - SEGUNDO(HORA2). Si SEGUNDO(HORA2) > SEGUNDO(HORA1) entonces SEGUNDO(RESULTADO) = 60 + SEGUNDO(HORA1) - SEGUNDO(HORA2). entonces se suma 1 a MINUTO(HORA2). Si MINUTO(HORA2) <= MINUTO(HORA1) entonces MINUTO(RESULTADO) = MINUTO(HORA1) - MINUTO(HORA2). Si MINUTO(HORA2) > MINUTO(HORA1) entonces MINUTO(RESULTADO) = 60 + MINUTO(HORA1) - MINUTO(HORA2). entonces se suma 1 a HORA(HORA2). HORA(RESULTADO) = HORA(HORA1) - HORA(HORA2).

TIMESTAMP El resultado de restar una indicacin de la hora (IH2) a otra (IH1) es una duracin entre indicaciones de la hora que especifica el nmero de aos, meses, das, horas, minutos, segundos y microsegundos entre las dos indicaciones de la hora. El tipo de datos del resultado es DECIMAL(20,6). Si IH1 es superior o igual a IH2, IH2 se restar de IH1. Por el contrario, si IH1 es inferior a IH2, IH1 se restar de IH2 y el signo del resultado ser negativo. La siguiente descripcin de procedimiento aclara los pasos necesarios para obtener el resultado de la operacin = IH1 - IH2:
Si MICROSEGUNDO(IH2) <= MICROSEGUNDO(IH1) entonces MICROSEGUNDO(RESULTADO) = MICROSEGUNDO(IH1) - MICROSEGUNDO(IH2).

470

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Si MICROSEGUNDO(IH2) > MICROSEGUNDO(IH1) entonces MICROSEGUNDO(RESULTADO) = 1000000 + MICROSEGUNDO(IH1) - MICROSEGUNDO(IH2) y se suma 1 a SEGUNDO(IH2).

Los segundos y los minutos que forman parte de las indicaciones de la hora se restan del modo especificado en las reglas para restar horas. La parte correspondiente a la fecha de las indicaciones de la hora se resta del modo especificado en las reglas para restar fechas.

Tipos de datos por omisin y simblicos de SQL


Tabla 203. Tipos de datos por omisin y simblicos de SQL Tipos de datos de SQL BLOB CHAR DATE DECIMAL INTEGER SMALLINT TIME TIMESTAMP VARCHAR Tipos de datos simblicos de SQL SQL_BLOB SQL_CHAR SQL_TYPE_DATE SQL_DECIMAL SQL_INTEGER SQL_SMALLINT SQL_TYPE_TIME SQL_TYPE_TIMESTAMP SQL_VARCHAR Tipos de datos C simblicos por omisin SQL_C_BINARY SQL_C_CHAR SQL_C_TYPE_DATE SQL_C_CHAR SQL_C_LONG SQL_C_SHORT SQL_C_TYPE_TIME SQL_C_TYPE_TIMESTAMP SQL_C_CHAR

SQLState
Mensajes de SQLState notificados por JDBC
Este apartado lista los mensajes que slo devuelve JDBC. Es posible que el controlador JDBC tambin devuelva los mensajes que se listan en los apartados Mensajes de SQLState notificados por SQL y Mensajes de SQLState notificados por CLI.
Tabla 204. Mensajes de SQLState notificados por JDBC SQLSTATE 0100C Descripcin Se ha devuelto uno o ms conjuntos de resultados ad hoc. Explicacin DB2 Everyplace no da soporte a ResultSet.CONCUR_UPDATABLE para la modalidad de simultaneidad de un objeto ResultSet. En su lugar se utiliza ResultSet.CONCUR_READ_ONLY. No se admite una sentencia SELECT en el proceso por lotes. El proceso por lotes no tiene ninguna sentencia.

0641E

Hay una sentencia SELECT en el proceso por lotes. No hay ninguna sentencia en el proceso por lotes.

0643E

22005

Error de asignacin. Un tipo de parmetro es incompatible con el tipo de datos destino.

Consulta

471

Tabla 204. Mensajes de SQLState notificados por JDBC (continuacin) SQLSTATE 22011 Descripcin Se ha producido un error de subserie. Error de secuencia de funcin. Explicacin Posicin ordinal no vlida para el primer byte del valor BLOB que ha de extraerse. El mtodo get CallableStatement se llama sin llamar en primer lugar a registerOutParameter.

S1010

Mensajes de SQLSTATE notificados por SQL


La Tabla 205 lista todos los SQLSTATE de las sentencias de SQL notificados por el motor SQL de DB2 Everyplace. Los SQLSTATE notificados por DB2 CLI se listan en la descripcin de cada una de las funciones de DB2 CLI del apartado Resumen de funciones de DB2 CLI en la pgina 208.
Tabla 205. Mensajes de SQLSTATE notificados por SQL SQLSTATE 01000 01004 01550 02000 07001 07005 07006 08002 22001 22002 22003 22007 22008 22012 22504 23502 23505 Descripcin Aviso. Valor truncado. No se cre el ndice. No se encontr ninguna fila. Nmero incorrecto de parmetros. Parmetro no vlido. Variable no vlida. La conexin ya existe. Es necesario truncar el valor. No se ha proporcionado ningn indicador de nulos. Valor numrico fuera de rango. Formato no vlido de fecha y hora. Valor de fecha y hora fuera de rango. Divisin por cero. Carcter MBCS fragmentado. Valor nulo no permitido. Los valores no son exclusivos. Explicacin Mensaje informativo. (La funcin devuelve SQL_SUCCESS_WITH_INFO). El valor fue truncado por una funcin de conversin de tipos de datos o funcin de ajuste del sistema. No se cre el ndice porque ya existe un ndice con la descripcin especificada. No se encontr ninguna fila durante la ejecucin de una sentencia FETCH, DELETE o UPDATE. No se ha enlazado un marcador de parmetro. El nombre de sentencia del cursor designa una sentencia preparada que no se puede asociar con un cursor. No se puede utilizar una variable de sistema principal de entrada debido a su tipo de datos. Ya existe una conexin. Es necesario truncar el valor mediante una funcin de conversin de tipos de datos o funcin de ajuste del sistema. No se puede asignar un valor NULL debido a la falta de espacio de almacenamiento. Un valor numrico no est dentro del rango de su columna destino. La serie de caracteres utilizada para representar un valor de fecha y hora tiene una sintaxis incorrecta. La serie de caracteres utilizada para representar un valor de fecha y hora est fuera de rango. Se ha intentado una operacin de divisin por cero. Los datos contienen un carcter de mltiples bytes mal formado. No est permitida la asignacin de un valor nulo a una columna definida como NOT NULL. La operacin no era vlida debido a que producira claves duplicadas.

472

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 205. Mensajes de SQLSTATE notificados por SQL (continuacin) SQLSTATE 23513 23515 24000 24501 24504 24505 34000 42501* Descripcin Valor no vlido. Se ha especificado ms de una clusula de clave primaria. Estado no vlido del cursor. Cursor no abierto. Estado no vlido del cursor. Cursor no posicionado. El nombre de cursor no es vlido. El ID de autorizacin no tiene permitido realizar la operacin especificada sobre el objeto identificado El ID de autorizacin no tiene permitido realizar la operacin especificada Explicacin La fila resultante de la sentencia INSERT o UPDATE no se ajusta a la definicin de la restriccin de comprobacin. Se ha especificado ms de una clusula de clave primaria. StatementHandle estaba en un estado ejecutado, pero no haba ningn conjunto de resultados asociado al StatementHandle. No es vlida una operacin FETCH debido a que no se ha generado ningn conjunto de resultados. El cursor identificado en la sentencia UPDATE, DELETE, SET o GET no est situado en una fila. No es vlida una operacin FETCH debido a que el cursor no est situado sobre una fila. El nombre de cursor no es vlido. El usuario actual est intentando eliminar un privilegio de un usuario que no existe.

42502*

El usuario actual no tiene una conexin autentificada. Cuando una aplicacin (que no tiene la biblioteca de cifrado ni la CryptoPlugin.dll) ejecute un cifrado relacionado con mandatos de SQL (GRANT, REVOKE y CREATE TABLE), se devolver un error 42502. Esto es as para impedir que las aplicaciones caigan. Un usuario registrado intenta conectar y no se le puede autentificar. No se ha podido autentificar el usuario conectado. (Contrasea incorrecta.) Se ha detectado un error de sintaxis en la sentencia de SQL. Una constante de tipo serie o identificador delimitado no tiene un delimitador final. La sentencia contiene un marcador de parmetro que no es vlido. Vea la Tabla 18 en la pgina 72 para conocer la utilizacin vlida de los marcadores de parmetros. Una especificacin de longitud excede el lmite. Una palabra clave duplicada no es vlida. La restriccin de comprobacin no es vlida. El nombre de un identificador es demasiado largo.

42505* 42506* 42601 42603 42610

Se ha producido un error de autorizacin de conexin. Error de autorizacin de propietario. Error de sintaxis. Una constante de tipo serie no tiene un delimitador final. Utilizacin no vlida de un marcador de parmetro. Especificacin de longitud no vlida. Una palabra clave duplicada no es vlida. La restriccin de comprobacin no es vlida. Nombre demasiado largo.

42611 42614 42621 42622 42702 42703 42704 42710 42711

Referencia ambigua a un nombre Existe ms de una posible columna referenciada. de columna. Nombre de columna no definido. Un nombre de columna no est en las tablas referenciadas. Objeto no definido. El objeto designado ya existe. Nombre de columna duplicado. La tabla no existe. Ya existe una tabla con el mismo nombre. Un mismo nombre de columna est especificado ms de una vez.

Consulta

473

Tabla 205. Mensajes de SQLSTATE notificados por SQL (continuacin) SQLSTATE 42802 Descripcin El nmero de valores no coincide con el nmero de columnas. Explicacin El nmero de valores asignados no es el mismo que el nmero de columnas especificadas o implcitas.

42803

Una referencia de columna La lista de seleccin contiene un nombre de columna y una contenida en la lista de seleccin funcin de agregacin, pero no existe ninguna clusula GROUP no est especificada en la BY. clusula GROUP BY. Tipos de datos incompatibles de los operandos. Valor literal fuera de rango. Tipos de datos incompatibles. Elemento no vlido de ORDER BY. Operando no vlido de LIKE. FOR UPDATE OF no es vlido. Los tipos de datos de los operandos de una operacin no son compatibles. El valor numrico especificado no est dentro del rango aceptable. Un valor no es compatible con el tipo de datos de una columna destino. El elemento de ORDER BY no est en la lista de seleccin. Un operando de LIKE no es una serie de caracteres o el primer operando no es una columna. FOR UPDATE OF no es vlido, pues la tabla de resultados designada por el cursor no se puede modificar.

42818 42820 42821 42822 42824 42829 42830 42831

La clave fornea no se ajusta a la La clave fornea no se ajusta a la descripcin de la clave padre. descripcin de la clave padre. La clave primaria tiene columnas Las columnas especificadas en la clave primaria no pueden que pueden contener valores contener nulos. nulos. Acceso no autorizado a objetos del sistema. La operacin no est permitida para objetos del sistema.

42832* 42884 42887 42894 42902 42903 42962 54001 54008 54010 55002 55009 57001

Nombre de funcin no conocido. No se ha encontrado ninguna funcin o procedimiento con el nombre especificado y argumentos compatibles. Caracterstica no soportada La caracterstica no est soportada en el release actual.

El valor por omisin (DEFAULT) El valor por omisin (DEFAULT) no es vlido. no es vlido. Referencia duplicada a una tabla de objetos. Existe una referencia no vlida en una clusula WHERE o SET. No se puede utilizar como clave una columna de tipo LOB. Sentencia demasiado larga. Clave demasiado larga. La longitud del registro de tabla es demasiado larga. DB2ePLANTABLE no est definido correctamente. Archivo de slo lectura. Tabla no disponible. La tabla de objetos de la sentencia INSERT tambin se identifica en una clusula FROM. Una clusula WHERE o SET contiene una referencia como, por ejemplo, una funcin de columna, que no es vlida. No se puede utilizar como clave primaria una columna de tipo LOB. La sentencia de la consulta es demasiado larga. Demasiadas columnas en una clave primaria, una clave fornea o en el ndice. La longitud del registro de la tabla es demasiado larga. EXPLAIN no se puede ejecutar con una declaracin incorrecta de DB2ePLANTABLE. El archivo es de slo lectura. En un entorno de slo lectura, solamente se pueden ejecutar consultas SELECT. REORG no se puede ejecutar en una tabla que est bajo el mbito de una transaccin.

474

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Tabla 205. Mensajes de SQLSTATE notificados por SQL (continuacin) SQLSTATE 57011 57014 58004 58005 Descripcin Falta de memoria. El proceso se cancel debido a una interrupcin. Error interno del sistema (continuar). Error interno del sistema (detener). Explicacin El sistema no puede asignar memoria. La ejecucin de una consulta se cancela debido a una interrupcin del usuario. Se ha producido un error no grave del sistema. Se ha producido un error grave del sistema.

Listado de los SQLSTATE


Esta seccin le ayudar a interpretar los mensajes de error generados desde SQL o CLI. v Resumen de cdigos de clase de SQLState contiene un listado de las categoras generales de los errores. v Mensajes de SQLSTATE notificados por SQL en la pgina 472, Mensajes de SQLState notificados por CLI en la pgina 301 y Mensajes de SQLState notificados por JDBC en la pgina 471 contienen descripciones de cada uno de los errores y para SQL, proporcionan el nombre de la funcin que lo gener. Puede tambin obtener descripciones de los estados SQL (SQLSTATE) utilizando un procesador de lnea de mandatos de DB2, en el caso de que haya instalado DB2 UDB: 1. Para abrir el procesador de lnea de mandatos, seleccione Inicio Programas DB2 Procesador de lnea de mandatos. 2. En la lnea de mandatos, escriba ? [SQLSTATE].

Resumen de cdigos de clase de SQLState


Los dos primeros caracteres de los mensajes de SQLSTATE incluidos en la Tabla 132 en la pgina 301 estn en negrita para indicar el cdigo de clase. Estos cdigos de clase aparecen resumidos in Tabla 206.
Tabla 206. Cdigos de clase de los SQLSTATE Cdigo 00 01 02 07 08 09 0A 0F 21 22 23 24 Clase Terminacin satisfactoria no calificada Aviso No hay datos Error de SQL dinmico Excepcin de conexin Excepcin de accin desencadenada Caracterstica no soportada Smbolo no vlido Violacin de la cardinalidad Excepcin de datos Violacin de restriccin Estado no vlido del cursor

Consulta

475

Tabla 206. Cdigos de clase de los SQLSTATE (continuacin) Cdigo 25 26 28 2D 2E 34 38 39 40 42 44 46 51 54 55 56 57 58 59 HY IM Clase Estado no vlido de la transaccin Identificador no vlido de sentencia de SQL Especificacin no vlida de autorizacin Terminacin no vlida de transaccin Nombre no vlido de conexin Nombre no vlido de cursor Excepcin de funcin externa Excepcin de llamada a funcin externa Retrotraccin de transaccin Error de sintaxis o violacin de regla de acceso Violacin de opcin con comprobacin DDL de Java Estado no vlido de aplicacin Lmite excedido de SQL o del producto Objeto no encontrado en estado previo necesario Diversos errores de SQL o del producto Recurso no disponible o intervencin del operador Recurso errneo del sistema Error del administrador de DB2 Everyplace Generado por el controlador CLI u ODBC de DB2 Generado por el gestor de controladores ODBC

476

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Glosario
Glosario
Caracteres especiales $DSYPATH Hace referencia al directorio en el que est instalado DB2 Everyplace en un sistema Linux o UNIX. %DSYINSTDIR% Hace referencia al directorio en el que est instalado DB2 Everyplace en un sistema Windows. A agenda personal electrnica (PDA) Dispositivo de bolsillo que se utiliza para tareas personales de organizacin (tales como llevar una agenda de actividades o tomar notas) y que incluye servicios de telfono, fax y conexin a una red. archivo de anotaciones cronolgicas Objeto del Centro de administracin de dispositivos porttiles que contiene mensajes de error de sincronizacin y sus descripciones. autenticacin Proceso de validar el ID y la contrasea de un usuario por comparacin con las entradas de la base de datos de control para comprobar que el usuario est autorizado para utilizar Sync Server para sincronizar datos. autorizacin En la seguridad de sistemas informticos, derecho que se otorga a un usuario para comunicarse con un sistema o hacer uso de l. B base de datos corporativa Vase base de datos fuente. base de datos de destino Base de datos de DB2 Everyplace contenida en un dispositivo porttil, en la que se copian datos procedentes de una base de datos fuente. base de datos de rplica Base de datos que Sync Server utiliza internamente para almacenar los datos necesarios para la sincronizacin y duplicacin. base de datos fuente Base de datos que reside en un servidor fuente que contiene los datos que deben copiarse en un sistema destino. base de datos local Base de datos que est ubicada fsicamente en el sistema que se est utilizando. Comprese con base de datos remota. base de datos maestra Vase base de datos fuente.

Copyright IBM Corp. 1998, 2004

477

base de datos remota Base de datos que est ubicada fsicamente en un sistema distinto del que se est utilizando. Comprese con base de datos local. El sistema remoto puede ser o no porttil. BLOB Vase gran objeto binario. C Calificador de Apply Serie de caracteres que identifica definiciones de suscripcin que son exclusivas de cada instancia del programa Apply de DataPropagator. Centro de administracin de dispositivos porttiles (MDAC) Interfaz grfica que permite al usuario crear, editar y visualizar objetos de sincronizacin y sus relaciones entre s. El Centro de administracin de dispositivos porttiles tambin permite ver el estado de sincronizacin de clientes individuales y mensajes de error. Centro de control Interfaz grfica que muestra objetos de base de datos (tales como bases de datos y tablas) y su relacin entre ellos. Desde el Centro de control, se pueden realizar las tareas proporcionadas por las herramientas DBA Utility, Visual Explain y Performance Monitor. Centro de control de DB2 Vase Centro de control. clave Columna o coleccin ordenada de columnas que se identifican en la descripcin de una tabla, ndice o restriccin de referencia.

clave primaria Clave exclusiva que forma parte de la definicin de una tabla. Una clave primaria es la clave padre por omisin de una definicin de restriccin referencial. En DB2 Everyplace Sync Server Versin 7, cada fuente de duplicacin debe tener una sola clave primaria. cliente Programa o usuario que se comunica con un servidor de bases de datos y accede a l. Los clientes se definen mediante el Centro de administracin de dispositivos porttiles. conjunto de suscripcin Objeto del Centro de administracin de dispositivos porttiles que contiene suscripciones de duplicacin. Para que los miembros de un grupo accedan a los datos y archivos definidos en las suscripciones de duplicacin, se debe crear un conjunto de suscripcin, asignarle suscripciones y luego asignarlo a un grupo. El objeto del conjunto de suscripcin sustituye al objeto de la aplicacin. consulta Peticin de informacin de la base de datos basada en condiciones especficas; por ejemplo, una peticin de una lista de todos los clientes de una tabla de clientes cuyo saldo sea superior a 1.000 Euros. D DBCS Vase juego de caracteres de doble byte. DB2DataPropagator Producto de duplicacin que proporciona un mtodo automtico de

478

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

duplicacin de datos fuente en sistemas de destino. Durante la sincronizacin de datos porttiles, las bases de datos de rplica y remota actan como fuente y destino de los datos. DataPropagator duplica en la base de datos remota los cambios realizados por los sistemas cliente en la base de datos de rplica, y tambin duplica en la base de datos de rplica los cambios procedentes de la base de datos remota. deteccin de conflictos Proceso de detectar una fila no actualizada en una tabla destino que fue actualizada por una aplicacin de usuario. Cuando se detecta un conflicto, se rechaza la transaccin que provoc el conflicto. DHCP Vase Protocolo de configuracin dinmica de los sistemas principales. dispositivo de bolsillo Cualquier dispositivo informtico que se pueda sostener en la mano. Son ejemplos de tales dispositivos los sistemas PC de bolsillo y las agendas personales electrnicas (personal digital assistants, PDA). DPROP Consulte DB2 DataPropagator. duplicacin Proceso en el que se toman los cambios almacenados en el archivo de anotaciones o diario de la base de datos, en el servidor fuente, y se aplican en un servidor destino. F filtro Dispositivo o programa que separa datos, seales o informacin de acuerdo con criterios determinados.

filtro de datos Vase filtro. fuente de duplicacin Tabla de base de datos que est definida como fuente de la duplicacin. Una vez definida una tabla de base de datos como fuente de duplicacin, la tabla puede aceptar peticiones de copia. G gran objeto binario (binary large object, BLOB) Secuencia de bytes cuyo tamao est comprendido entre 0 y 2 gigabytes. Esta secuencia de bytes no tiene una pgina de cdigos ni un juego de caracteres asociados. Los objetos de imagen, audio y vdeo se almacenan en forma de objetos BLOB. grupo Coleccin de clientes que tienen necesidades similares respecto a la sincronizacin de datos porttiles. Para cada grupo se definen caractersticas de sincronizacin, tales como qu aplicaciones necesitan acceder los usuarios del grupo para realizar sus tareas y a qu conjuntos de datos corporativos necesitan acceder. I IBM Sync Nombre del icono que sirve para representar el componente cliente del software de DB2 Everyplace Sync Server.

Glosario

479

informtica distribuida Utilizacin de una infraestructura informtica que incluye dispositivos de informacin desde los cuales el usuario puede acceder a una amplia gama de servicios a travs de una red (incluidos los servicios que generalmente se ofrecen a travs de Internet). Estos dispositivos de informacin pueden ser televisores, automviles, telfonos, refrigeradores y hornos microondas. La informtica distribuida proporciona un acceso apropiado a la informacin pertinente y la capacidad para responder de acuerdo con esa informacin. J juego de caracteres de doble byte (double-byte character set, DBCS) Juego de caracteres en el que cada carcter se representa mediante dos bytes. L LAN inalmbrica En las aplicaciones inalmbricas, un usuario de porttiles se puede conectar a una red de rea local (LAN) mediante una conexin de radiofrecuencia. La tecnologas inalmbricas para la conexin LAN incluyen espectro de velocidad, microondas y luz infrarroja. Lenguaje de consulta estructurada (Structured Query Language, SQL) Lenguaje de programacin que se utiliza para definir y manejar datos de una base de datos relacional. LOB M MDAC Vase Centro de administracin de dispositivos porttiles. O objeto Cualquier elemento que se pueda crear o manipular con SQL, por ejemplo, tablas, vistas, ndices o paquetes. En la programacin o el diseo orientado a objetos, abstraccin que consta de datos y operaciones asociadas a dichos datos. objeto de sincronizacin Elemento gestionable, dentro del Centro de administracin de dispositivos porttiles, que contiene informacin sobre aspectos del proceso de sincronizacin de datos utilizado. Existen cinco tipos de objetos de sincronizacin: grupo, cliente, conjunto de suscripcin, suscripcin y archivo de anotaciones. objeto grande (large object, LOB) Secuencia de bytes cuyo tamao puede ser de hasta 2 gigabytes. Puede ser de uno de estos tres tipos: BLOB (binario), CLOB (caracteres de un solo byte o mixtos) o DBCLOB (caracteres de doble byte). ODBC Vase Open Database Connectivity. Open Database Connectivity (ODBC) API que permite acceder a sistemas de gestin de bases de datos utilizando SQL invocable, el cual no necesita la utilizacin de un Vase objeto grande.

480

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

preprocesador de SQL. La arquitectura ODBC permite a los usuarios aadir mdulos, denominados controladores de bases de datos, que enlazan la aplicacin, en tiempo de ejecucin, a los sistemas de gestin de bases de datos que hayan elegido. No es necesario enlazar directamente las aplicaciones con los mdulos de todos los sistemas de gestin de bases de datos soportados. P PDA Vase agenda personal electrnica.

persistente Relativo a datos que se conservan al pasar de una sesin a otra, generalmente en almacenamiento no voltil, tal como un sistema de base de datos o un directorio. porttil Relativo a los procesos de clculo que se realizan en un sistema porttil o dispositivo de bolsillo por parte de un usuario que se desplaza con frecuencia y utiliza diferentes tipos de conexiones de red (por ejemplo, lnea conmutada, LAN o comunicaciones inalmbricas). privilegio Derecho a tener acceso a un objeto especfico de la base de datos de un modo especfico. Estos derechos los controlan los usuarios con autorizacin SYSADM (administrador del sistema), autorizacin DBADM (administrador de bases de datos) o los creadores de los objetos. Los privilegios incluyen derechos tales como crear, suprimir y seleccionar datos de las tablas. Protocolo de configuracin dinmica del host (Dynamic Host Configuration Protocol, DHCP) Protocolo de Internet para automatizar la configuracin de sistemas que hacen uso de TCP/IP. pulsar Utilizacin de un puntero para interaccionar con un dispositivo de bolsillo. PVC Q QBE Vase Query-by-Example. Vase informtica distribuida.

Query-by-Example Aplicacin que permite al usuario visualizar y modificar dinmicamente los datos almacenados en una tabla DB2 Everyplace. R RAS renovar Proceso en el que todos los datos de inters de una tabla de usuario se copian en la tabla destino, sustituyendo los datos existentes. S servicio de acceso remoto (Remote Access Service, RAS) Programa de Windows que gestiona las conexiones entre dos sistemas. Vase servicio de acceso remoto.

Glosario

481

servidor corporativo Vase servidor fuente. servidor de bases de datos Unidad funcional que proporciona servicios para bases de datos. servidor fuente Ubicacin de base de datos de la fuente de duplicacin. sesin de sincronizacin Transaccin en la que los usuarios de dispositivos porttiles, o clientes, someten cambios hechos en copias locales de datos fuente y reciben los cambios realizados en datos fuente (contenidos en el servidor remoto) desde la ltima vez que se sincronizaron los datos. sincronizacin Vase sincronizacin de datos porttiles. sincronizacin de datos Vase sincronizacin de datos porttiles. sincronizacin de datos porttiles Proceso en dos etapas por medio del cual los usuarios de dispositivos porttiles, o clientes, someten cambios hechos en copias locales de datos fuente y reciben los cambios realizados en datos fuente (contenidos en una base de datos remota) desde la ltima vez que se sincronizaron los datos. sistema de gestin de bases de datos (database management system, DBMS) Programa informtico de gestin de datos, que proporciona control centralizado de servicios, independencia de los datos y estructuras fsicas complejas para conseguir un acceso eficaz, integridad, recuperacin, control de concurrencia, privacidad y seguridad. sistema de nivel medio Mquina donde est instalado el DB2 Everyplace Sync Server. En una configuracin de la sincronizacin con dos niveles, los trminos sistema de nivel medio y sistema fuente designan una misma mquina. SQL Vase Lenguaje de consulta estructurada.

suscripcin Especificacin de cmo debe duplicarse la informacin de una base de datos fuente en una base de datos destino. Una suscripcin le permite definir qu subconjuntos de datos y archivos se pueden copiar desde la base de datos fuente. Puede crear dos tipos de suscripciones: suscripciones para archivos almacenados en el servidor fuente y suscripciones para tablas contenidas en la base de datos fuente. T tabla de destino Tabla en la que se copian datos de una tabla fuente. Las tablas de rplica del servidor de nivel medio son destinos, como tambin lo son las tablas de DB2 Everyplace del dispositivo porttil. tabla fuente Tabla que contiene los datos que se deben copiar en una tabla destino. La tabla fuente debe ser una tabla fuente de duplicacin. Comprese con tabla destino.

482

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

tabla temporal Tabla creada durante el proceso de una sentencia de SQL para que contenga resultados intermedios. U unin Operacin relacional que permite recuperar datos de dos o ms tablas mediante la asociacin de valores coincidentes de columnas. V vinculacin En SQL, proceso por el cual la salida del precompilador SQL se convierte en una estructura utilizable llamada plan de acceso. Durante este proceso, se seleccionan vas de acceso a los datos y se realiza una cierta comprobacin de autorizacin. vista Tabla lgica que consta de datos generados por una consulta.

Glosario

483

484

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Avisos
Es posible que IBM no comercialice en todos los pases algunos productos, servicios o caractersticas descritos en este manual. Consulte al representante local de IBM para obtener informacin sobre los productos y servicios que actualmente pueden adquirirse en su zona geogrfica. Cualquier referencia a un producto, programa o servicio de IBM no pretende afirmar ni implicar que slo se puede utilizar dicho 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. Sin embargo, 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 en tramitacin que afecten al tema tratado en este documento. La posesin de este documento no confiere ninguna licencia sobre dichas patentes. Puede realizar consultas sobre licencias escribiendo a: IBM Director of Licensing IBM Corporation North Castle Drive Armonk, NY 10504-1785 E.E.U.U. En el caso de consultas sobre licencias referentes a informacin de doble byte (DBCS), consulte al Departamento de Propiedad Intelectual de IBM en su pas o enve consultas por escrito a: IBM World Trade Asia Corporation Licensing 2-31 Roppongi 3-chome, Minato-ku Tokyo 106, Japn El prrafo siguiente no es aplicable al Reino Unido ni a ningn pas en el que tales disposiciones sean incompatibles con la legislacin local: INTERNATIONAL BUSINESS MACHINES CORPORATION PROPORCIONA ESTA PUBLICACIN TAL CUAL, SIN GARANTA DE NINGUNA CLASE, NI EXPLCITA NI IMPLCITA, INCLUIDAS, PERO SIN LIMITARSE A ELLAS, LAS GARANTAS IMPLCITAS DE NO VULNERACIN DE DERECHOS, COMERCIABILIDAD O IDONEIDAD PARA UN FIN DETERMINADO. Algunos estados no permiten la exclusin de garantas expresas o implcitas en determinadas transacciones, por lo que es posible que esta declaracin no sea aplicable en su caso. Esta publicacin puede contener inexactitudes tcnicas o errores tipogrficos. Peridicamente se efectan cambios en la informacin aqu contenida; dichos cambios se incorporarn a las nuevas ediciones de la publicacin. IBM puede efectuar, en cualquier momento y sin previo aviso, mejoras y/o cambios en los productos y/o programas descritos en esta publicacin. Las referencias hechas en esta publicacin a sitios Web que no son de IBM se proporcionan slo para la comodidad del usuario y no constituyen un aval de esos

Copyright IBM Corp. 1998, 2004

485

sitios Web. La informacin contenida en esos sitios Web no forma parte de la informacin del presente producto IBM y el usuario es responsable de la utilizacin de esos sitios Web. Cuando enva informacin a IBM, IBM puede utilizar o distribuir dicha informacin en la forma en que IBM considere adecuada, sin contraer por ello ninguna obligacin con el remitente. Los licenciatarios de este programa que deseen obtener informacin sobre l con el fin de habilitar: (i) el intercambio de informacin entre programas creados de forma independiente y otros programas (incluido este) y (ii) el uso mutuo de la informacin intercambiada, deben ponerse en contacto con: IBM Canada Limited Office of the Lab Director 1150 Eglinton Ave. East North York, Ontario M3C 1H7 CANAD Dicha informacin puede estar disponible, sujeta a los trminos y condiciones apropiados, incluido en algunos casos, el pago de una tarifa. El programa bajo licencia descrito en este manual y todo el material bajo licencia asociado a l, los proporciona IBM segn los trminos del Convenio del Cliente IBM, el Convenio Internacional de Licencia de Programas de IBM o cualquier convenio equivalente entre el usuario e IBM. Los datos de rendimiento contenidos en este documento se obtuvieron en un entorno controlado. Por tanto, los resultados obtenidos en otros entornos operativos pueden variar significativamente. Algunas mediciones pueden haberse hecho en sistemas experimentales y no es seguro que estas mediciones sean las mismas en los sistemas disponibles comercialmente. Adems, algunas mediciones pueden haberse calculado mediante extrapolacin. Los resultados reales pueden variar. Los usuarios del presente manual deben verificar los datos aplicables para su entorno especfico. La informacin referente a productos que no son de IBM se ha obtenido de los proveedores de esos productos, de sus anuncios publicados o de otras fuentes disponibles pblicamente. IBM no ha probado esos productos y no puede confirmar la exactitud del rendimiento, la compatibilidad ni cualquier otra afirmacin referente a productos no IBM. Las preguntas sobre las prestaciones de productos no IBM deben dirigirse a los proveedores de esos productos. Todas las declaraciones de intenciones de IBM estn sujetas a cambio o cancelacin sin previo aviso, y slo representan objetivos. Esta publicacin puede contener ejemplos de datos e informes que se utilizan en operaciones comerciales diarias. Para ilustrarlos de la forma ms completa posible, los ejemplos incluyen nombre de personas, empresas, marcas y productos. Todos estos nombres son ficticios y cualquier similitud con nombres y direcciones utilizados por una empresa real es totalmente no intencionada. LICENCIA DE COPYRIGHT: Este manual puede contener programas de aplicacin de ejemplo escritos en lenguaje fuente, que muestra tcnicas de programacin en diversas plataformas

486

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

operativas. Puede copiar, modificar y distribuir estos programas de ejemplo de la forma que desee, sin pago alguno a IBM, con los fines de desarrollar, utilizar, comercializar o distribuir programas de aplicacin de acuerdo con la interfaz de programacin de aplicaciones correspondiente a la plataforma operativa para la que estn escritos los programas de ejemplo. Estos ejemplos no se han probado exhaustivamente bajo todas las condiciones. Por tanto, IBM no puede asegurar ni implicar la fiabilidad, utilidad o funcin de estos programas. Cada copia o porcin de estos programas de ejemplo o cualquier trabajo derivado debe incluir una nota de copyright como la siguiente: (nombre de la empresa) (ao). Partes de este cdigo derivan de programas de ejemplo de IBM Corp. Copyright IBM Corp. _especifique el ao o aos_. Reservados todos los derechos. Este producto incluye software desarrollado por 3Com y sus colaboradores.: Copyright (c) 1998 3Com/Palm Computing Division. Reservados todos los derechos. La redistribucin y el uso en los formatos fuente y binario, con o sin modificacin, estn permitidos siempre que se cumplan las condiciones siguientes: 1. Las redistribuciones de cdigo fuente deben conservar la nota de copyright mostrada anteriormente, la presente lista de condiciones y la nota de renuncia que viene a continuacin. 2. Las redistribuciones en formato binario deben reproducir la nota de copyright mostrada anteriormente, la presente lista de condiciones y la nota de renuncia que viene a continuacin en la documentacin y/u otros elementos proporcionados con la distribucin. 3. Todos los textos publicitarios que mencionen caractersticas o el uso de este software deben mostrar el siguiente reconocimiento: Este producto incluye software desarrollado por 3Com y sus colaboradores. 4. Ni 3Com ni los nombres de sus colaboradores pueden utilizarse para avalar o promocionar productos derivados de este software sin permiso especfico previo por escrito. 3COM Y SUS COLABORADORES PROPORCIONAN ESTE SOFTWARE TAL CUAL, SIN GARANTAS EXPRESAS NI IMPLCITAS, INCLUIDAS, PERO SIN LIMITARSE A ELLAS, LAS GARANTAS IMPLCITAS DE COMERCIABILIDAD O IDONEIDAD PARA UN FIN DETERMINADO. EN NINGN CASO 3COM NI SUS COLABORADORES SERN RESPONSABLES POR NINGN DAO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR NI CONSECUENTE (INCLUIDOS, PERO SIN LIMITARSE A ELLOS, LA OBTENCIN DE BIENES O SERVICIOS SUSTITUTOS; LA PRDIDA DE USO, DATOS O BENEFICIOS; O LA INTERRUPCIN DE LA ACTIVIDAD COMERCIAL) CUALQUIERA QUE SEA LA CAUSA (INCLUIDA LA NEGLIGENCIA), QUE SURJA COMO CONSECUENCIA DEL USO DEL PRESENTE SOFTWARE, INCLUSO SI SE INFORMA DE LA POSIBILIDAD DE TALES DAOS.

Avisos

487

Marcas registradas
Los trminos siguientes, que pueden estar indicados por un asterisco (*), son marcas registradas de International Business Machines Corporation en los Estados Unidos y/o en otros pases.
ACF/VTAM AISPO AIX AIX/6000 AIXwindows AnyNet APPN AS/400 BookManager CICS C Set++ C/370 DATABASE 2 DataHub DataJoiner DataPropagator DataRefresher DB2 DB2 Connect DB2 Extenders DB2 OLAP Server DB2 Universal Database Distributed Relational Database Architecture DRDA eNetwork Extended Services FFST First Failure Support Technology IBM IMS IMS/ESA iSeries LAN DistanceMVS MVS/ESA MVS/XA Net.Data NetView OS/2 OS/390 OS/400 PowerPC QBIC QMF RACF RISC System/6000 RS/6000 S/370 SP SQL/DS SQL/400 System/370 System/390 SystemView Tivoli VisualAge VM/ESA VSE/ESA VTAM WebExplorer WIN-OS/2 z/OS

Los trminos siguientes son marcas registradas de otras empresas: Intel, Intel Inside (logotipos), MMX y Pentium son marcas registradas de Intel Corporation en los Estados Unidos y/o en otros pases. Microsoft, Windows, Windows NT y el logotipo de Windows son marcas registradas de Microsoft Corporation en los Estados Unidos y/o en otros pases. Linux es una marca registrada de Linus Torvalds en los Estados Unidos y/o en otros pases. Java y todas las marcas registradas basadas en Java son marcas registradas de Sun Microsystems, Inc. en los Estados Unidos y/o en otros pases. UNIX es una marca registrada de The Open Group en los Estados Unidos y/o en otros pases. Otros nombres de empresas, productos o servicios, que pueden estar indicados por un doble asterisco (**), pueden ser marcas registradas o marcas de servicio de otras empresas.

488

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

ndice A
accesibilidad 8 actualizacin posicional de columnas por fila 463 administracin diagramas de tareas 5 resolucin de problemas 110 ALTER TABLE, sentencia 420 API C de IBM Sync Client clave para las descripciones de funciones 317 comparacin de versiones 312 resumen 314, 315 resumen de funciones 314 tipos de datos 315 API de IBM Java Sync, las 311 API de IBM Sync Client, las ISync Client nativo visin general 33 Java ISync Client visin general 30 Java Sync Client para IBM Cloudscape Versin 10 visin general 31 API de ISync.Net ubicaciones de archivo 62 API de ISync.NET cdigo de ejemplo 64 API de Java para IBM Cloudscape Versin 10 Sync Client visin general 31 API de Java para ISync Client implementacin JNI, en dispositivos Symbian 39 JNI, en Win32 40 JNI, en Windows CE 38 API de Java para ISync Client nativo visin general 33 API de Java para Java Sync Client visin general 30 API de Java Sync sistemas operativos soportados 311 API de JDBC 347 aplicacin escribir 4 aplicacin cliente 424 aplicacin de sincronizacin de ejemplo DB2 Sync Console, ejecutar 398 Aplicacin de sincronizacin de ejemplo de MIDP 406 aplicacin isync4j para MIDP desarrollo con la lnea de mandatos de Sun Wireless Toolkit 399 desarrollo con Sun Wireless Toolkit 401 aplicacin ISyncSample.java 402 aplicacin JSP transferir a un dispositivo Windows CE 46 aplicacin Visiting Nurse ejecucin 392 Copyright IBM Corp. 1998, 2004 aplicacin Visiting Nurse (continuacin) tablas 390 visin general 391 aplicaciones ejemplo 391 Procesador de lnea de mandatos 395 Visiting Nurse 390 aplicaciones, ejemplo 388 aplicaciones de ejemplo 7 C/C++ 22 CLP 395 Java 34 JSP 56 sincronizacin de Java DB2 Sync Console 398 sincronizacin MIDP de Java 406 sincronizacin nativa 402 Sync Client C/C++ 27 Visiting Nurse 391 ejecucin 392 tablas 390 visin general 391 Visual Basic visin general 78 aplicaciones de ejemplo, descripcin y ubicaciones 388 aplicaciones de ejemplo de DB2 Everyplace, probar 11 aplicaciones JSP ejecucin 47 ejecucin en Symbian OS 6 48 ejecucin en un dispositivo Windows CE 49 ejecucin en una estacin de trabajo Windows 48 instalar y verificar el soporte de JSP en Symbian OS 6 43 instalar y verificar el soporte de JSP en Windows CE 44 resolucin de problemas 55 aplicaciones para DB2 Everyplace, escribir 4 archivo de anotaciones cronolgicas, interpretar 112 archivo de anotaciones cronolgicas de errores. Vase archivo de anotaciones cronolgicas 112 archivo DSYUserExits.properties 126 archivos de cabecera 18 archivos de rastreo. Vase archivo de anotaciones cronolgicas y de rastreo, gestionar 113 asignacin de descriptores de contexto 216 atributos, tipo de datos 466 atributos de tipos de datos 466 AUTOCOMMIT 206

B
base de datos establecimiento de una conexin 98 gestin de conflictos 110 base de datos porttil 5 base de datos porttil DB2 Everyplace conectarse a 24 biblioteca de sistema operativo 18 bit de modificacin activar manualmente 465 concepto de 286 descripcin 286 errores, al activar 465 estados 286 valores, obtener 287 BLASTDB 207 Blob, clase en Java 352 Blob, interfaz 352 BLOB, tipo de datos 431

C
C/C++ herramientas de desarrollo soportadas 22 CallableStatement, interfaz 352 campo Base de datos mensajes de error 112 campo Cdigo mensajes de error 112 campo Descripcin mensajes de error 112 campo Nombre de usuario mensajes de error 112 campo Sist. Pral.:Puerto mensajes de error 113 campo Suscripcin mensajes de error 112 caracteres DBCS en nombres de columna 421, 431 en nombres de tabla 421, 430, 446 carpeta Anotaciones cronolgicas 112 catlogo 419 catlogo de DB2 Everyplace 419 Centro de administracin de dispositivos porttiles establecer propiedades de sincronizacin 116 cifrado ejemplo de utilizacin DB2eCLP 100 otorgar, instrucciones para sentencia de SQL 442 visin general 97 clase, DB2eConnection 350 clase, DB2eStatement 350 Clase DB2eConnection 350 CLI utilizacin para la recuperacin gradual de datos 25

489

cliente configurar bases de datos de informacin de sincronizacin 118, 119 conflictos de base de datos 110 habilitar la suscripcin de estadsticas de sincronizacin 115 CLP de DB2 Everyplace importar y exportar datos 395 mandatos 206 codificacin de caracteres 33 cdigos de los mensajes de error 140 columnas actualizar valores de fila, sentencia UPDATE 461 insertar valores, sentencia INSERT 444 COMMIT 207 COMMIT WORK 207 comportamiento del cursor 85 condicin de bsqueda con DELETE, seleccin de filas 437 con SELECT, seleccin de filas 453 con UPDATE, aplicar cambios 463 Conectar, funcin 228 conexin establecimiento 98 conexin, base de datos 24 conexiones comportamiento del cursor en 85 Configuracin de CLDC de J2ME 12 configuracin de jclCldc, utilizar 12 configuracin de jclXtr, utilizacin 12 Configuracin personalizada de JCL Extreme Palm 12 confirmacin comportamiento del cursor 87 conflictos, denominacin 84 conflictos de actualizacin, cmo gestionar 110 conflictos de denominacin, manejo 84 conflictos de lectura grabacin 85 CONNECT TO 207 Connection, interfaz 353 Consulta Remota 424 controladores de interfaz, registro 352, 367 conversin de datos 71, 213 correlacin de tipo de datos 129 DB2 Universal Database 130 IBM Cloudscape Versin 10 129 Informix 131 Lotus Domino 132 Microsoft SQL Server 135 Oracle 134 restricciones 136 Sybase 136 CREATE INDEX, sentencia 427, 428 CREATE TABLE, sentencia 429 cursor de lectura comportamiento en los conflictos de grabacin 85 cursor desplazable comportamiento en los conflictos de grabacin 86

CH
CHAR, tipo de datos 431 CHARACTER, tipo de datos 431

D
DatabaseMetaData, interfaz 355 DATE, tipo de datos 431 datos cifrado conexin con la base de datos 98 creacin de una tabla 99 ejemplo de utilizacin DB2eCLP 100 gestin de los privilegios de usuario 100 otorgar privilegios de usuario 99 visin general 97 gestin de conflictos 110 recuperacin gradual 25 datos locales cifrado 97 DB2 CLI funciones, lista de 208 SQLSTATE 472 DB2 Everyplace base de datos porttil 5 caso prctico de ejemplo 8 configuracin bsica de la solucin 5 conjunto de informacin 9 descripcin de 3 lmites 194 palabras reservadas 195 Sync Client 7 Sync Server 6 DB2 Everyplace Mobile Application Builder 4 DB2 Everyplace Update Tool mensajes de error 196 DB2eAppl.java compilacin y ejecucin en dispositivos no Palm OS 411 compilacin y ejecucin en Palm OS 411 aadir el controlador JDBC y el paquete java.sql a la va de acceso de creacin 412 ejecucin en QNX Neutrino o Linux incorporado 417 ejecucin en Symbian 418 ejecutar en Windows 412 ejecutar en Windows CE 414 importacin a WSDD para destinos de Palm OS 16 importacin a WSDD para destinos no Palm OS 17 no para Palm aadir db2ejdbc.jar a la va de acceso de creacin 13 creacin de un proyecto de WSDD 13 para Palm creacin de un proyecto de WSDD utilizando la configuracin de jclCldc 12

DB2eAppl.java (continuacin) para Palm (continuacin) creacin de un proyecto de WSDD utilizando la configuracin de jclXtr 12 ejecutar en un emulador de Palm OS 416 DB2eCLP cifrado utilizando 100 DB2eCommand 199 DB2eCommandBuilder 200 DB2eConnection 198 DB2eDataAdapter 201 DB2eDataReader 203 DB2eError 204 DB2eParameter 204 DB2ePLANTABLE columnas 441 utilizando la sentencia EXPLAIN 441 DB2eStatement, clase 350 DB2eSYSCOLUMNS 88 DB2eSYSRELS 88 DB2eSYSTABLES 87 DB2eSYSUSERS 88 DB2eType 205 DECIMAL, tipo de datos 431 definicin del preprocesador 19 DELETE, estado del bit de modificacin 286 DELETE, sentencia 436 errores al ejecutar 439 fila mltiple 439 registros suprimidos de forma lgica 439 desarrollo de aplicaciones DB2 Everyplace para Sync Client 30 registro del ID de creador de la aplicacin 22 utilizacin de .NET enumeracin de DB2eType 205 Miembros de DB2eCommand 199 miembros de DB2eCommandBuilder 200 Miembros de DB2eConnection 198 Miembros de DB2eDataAdapter 201 Miembros de DB2eDataReader 203 Miembros de DB2eError 204 Miembros de DB2eParameter 204 utilizando C/C++ aplicacin de ejemplo 22 archivos de biblioteca necesarios 19 archivos de cabecera 18 archivos necesarios para prueba 21 compilacin de ejemplos 18 definicin del preprocesador 19 herramientas de desarrollo soportadas 22 para Sync Client 26 pila de ejecucin de programas, tamao para Palm OS 19

490

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

desarrollo de aplicaciones DB2 Everyplace (continuacin) utilizando C/C++ (continuacin) preparar, compilar y enlazar proyectos 18 probar aplicacin 20 sistemas operativos soportados 23 soporte para UNICODE 19 visin general 18 utilizando Java aplicaciones de ejemplo 34 programas de ejemplo 411, 412 sistemas operativos soportados 35 visin general 29 utilizando JavaServer Pages aplicaciones de ejemplo 56, 402 configurando el mini servidor de Web HTTP en Win32 47 ejecucin de aplicaciones JSP 47 ejecucin de una aplicacin en un dispositivo Windows CE 49 ejecucin de una aplicacin en una estacin de trabajo Windows 48 probar 41 sistemas operativos soportados 40 subconjuntos JSP Versin 1.1 soportados 52 utilizando cdigos de personalizacin de IBM 49 visin general 41 utilizando Visual Basic aplicaciones de ejemplo, visin general 78 pasos bsicos 78 prueba del programa de ejemplo 82 sistemas operativos soportados 78 visin general 77 desarrollo de JSP configuracin en un dispositivo Windows CE 43 Desconectar, funcin 234 DESCRIBE SELECT 207 Describir atributos de columna, funcin 231 descriptor de conexin asignacin 216 ficticio 217 liberar 253 descriptor de contexto, liberar 253 descriptor de contexto de descriptor asignacin 216 descriptor de entorno asignacin 216 liberar 253 descriptor de sentencia asignacin 216 descriptor 217 liberar 253 mltiple 216 diagnstico de problemas. Vase resolucin de problemas 110 diagnsticos, obtener varios campos 263

DISABLE APPLICATION SET DIRTY 207 DISABLE LONG FILENAME 207 DISABLE PHYSICAL DELETE 207 DISABLE READ DELETED 208 DISABLE REORG 208 dispositivo porttil plataformas soportadas 5 utilizacin de habilitadores de idioma 383 Domino vase Lotus Domino 133 Driver, clase en Java 367 Driver, interfaz 367 DROP, sentencia errores al ejecutar 440 finalidad 439

E
Ejecutar sentencia, funcin 238 Ejecutar sentencia directamente, funcin 237 eliminar automticamente entradas del archivo de anotaciones cronolgicas archivo de anotaciones cronolgicas y de rastreo, gestionar 113 ENABLE APPLICATION SET DIRTY 208 ENABLE LONG FILENAME 208 ENABLE PHYSICAL DELETE 208 ENABLE READ DELETED 208 ENABLE REORG 208 Enlazar columna, funcin 218 Enlazar un almacenamiento intermedio con un marcador de parmetro, funcin 222 entorno de ejecucin J9 instalacin en un dispositivo Windows CE 44 errores al ejecutar sentencia DROP 440 al ejecutar sentencias DELETE 439 al ejecutar sentencias UPDATE 465 Establecer atributos de sentencia, funcin 284 Establecer opciones de conexin, funcin 280 estadsticas sincronizacin 115 estadsticas de sincronizacin 115 EXPLAIN, sistemas operativos soportados para la sentencia 440

fila (continuacin) suprimir, reglas para sentencia de SQL 436 FROM, clusula en sentencia DELETE 437 funcin de sincronizacin iscConfigClose() 324 iscConfigCloseCursor() 326 iscConfigDisableSubsSet() 329 iscConfigEnableSubsSet() 328 iscConfigGetNextSubsSet() 327 iscConfigGetSubsSetStatus() 332 iscConfigOpen() 323 iscConfigOpenCursor() 325 iscConfigPurge() 325 iscConfigResetSubsSet() 329 iscConfigSubsSetIsEnabled() 330 iscConfigSubsSetIsReset() 331 iscEngineClose() 333 iscEngineGetInfo() 334 iscEngineGetPref() 344 iscEngineListenerPF 336 iscEngineOpen() 332 iscEngineSetListener() 335 iscEngineSetPref() 343 iscEngineSync() 346 iscEngineSyncConfig() 347 iscGetVersion() 317 iscServiceClose() 319 iscServiceOpen() 318 iscServiceOpenEx() 320 funcin en desuso SQLAllocConnect 215 SQLAllocEnv 215 SQLAllocStmt 218 SQLError 237 SQLFreeConnect 253 SQLFreeEnv 253 SQLFreeStmt 256 funciones de CLI para DB2, por categora 208

G
gestin de conflictos 110 GRANT, sistemas operativos soportados para la sentencia 442

H
habilitadores 383 HELP 208 herramienta de comprobacin de la integridad de los datos 110 herramienta de realizacin de scripts XML establecer propiedades de estadsticas de sincronizacin 117 herramienta Synchronization Monitor establecer una frecuencia de renovacin automtica 124 exportar datos 124 personalizar la visualizacin de las columnas 124 utilizacin 124

F
FAR, punteros 213 fila actualizar valores de columna, sentencia UPDATE 461 insertar en una tabla 443 insertar valores, sentencia INSERT 444 restricciones para insertar valores 445

ndice

491

herramientas de desarrollo de aplicaciones para EPOC R5 22 para Linux y Linux incorporado 23 para Palm OS 22 para QNX Neutrino 23 para Symbian OS Versin 6.0 22 para Windows 2000 23 para Windows CE 23 para Windows NT 23 HISCCONF, tipo de datos 316 HISCCSR, tipo de datos 316 HISCENG, tipo de datos 316 HISCSERV, tipo de datos 316

I
IBDB 22 IBM Cloudscape Versin 10 Sync Client 31 identificadores delimitados uso para nombres de columna 421, 430 utilizar para nombres de tabla 420, 430 idioma, habilitadores de 383 importar y exportar datos 395 INDEX, clusula en sentencia DROP 440 Indicacin de fecha y hora mensajes de error 112 ndice crear, bit de modificacin 428 crear, instrucciones para sentencia de SQL 427 duplicado, descripcin 428 exploracin bidireccional 428 exploracin de prefijos 428 limitaciones al crear 428 ordenacin 428 supresin, mediante la sentencia DROP 439 informacin sincronizacin 115 informacin de sincronizacin 115 INSERT, estado del bit de modificacin 286 INSERT, restricciones de la clusula que provocan error 445 INSERT, sentencia 443 INTEGER, tipo de datos 431 interfaz Blob 352 interfaz CLI 18 Interfaz DataSource 379 interfaz de CLI/ODBC 41, 77 interfaz de JDBC. Vase tambin desarrollo de aplicaciones DB2 Everyplace, utilizando Java 29 interfaz de salida de usuario para el manejo de errores 125 interfaz Driver 367 INTO, clusula INSERT, especificacin de la tabla en la sentencia 444 restricciones de utilizacin 444 iscConfigClose(), funcin de sincronizacin 324

iscConfigCloseCursor(), funcin de sincronizacin 326 iscConfigDisableSubsSet(), funcin de sincronizacin 329 iscConfigEnableSubsSet(), funcin de sincronizacin 328 iscConfigGetNextSubsSet(), funcin de sincronizacin 327 iscConfigGetSubsSetStatus(), funcin de sincronizacin 332 iscConfigOpen() , funcin de sincronizacin 323 iscConfigOpenCursor(), funcin de sincronizacin 325 iscConfigPurge(), funcin de sincronizacin 325 iscConfigResetSubsSet(), funcin de sincronizacin 329 iscConfigSubsSetIsEnabled(), funcin de sincronizacin 330 iscConfigSubsSetIsReset(), funcin de sincronizacin 331 iscEngineClose(), funcin de sincronizacin 333 iscEngineGetInfo(), funcin de sincronizacin 334 iscEngineGetPref(), funcin de sincronizacin 344 iscEngineListenerPF, funcin de sincronizacin 336 iscEngineOpen(), funcin de sincronizacin 332 iscEngineSetListener(), funcin de sincronizacin 335 iscEngineSetPref(), funcin de sincronizacin 343 iscEngineSync(), funcin de sincronizacin 346 iscEngineSyncConfig(), funcin de sincronizacin 347 ISCEVT, tipo de datos 316 iscGetVersion(), funcin de sincronizacin 317 ISCLISTENARG, tipo de datos 316 ISCLISTENCOLUMN, tipo de datos 316 ISCLISTENCONFLICT, tipo de datos 317 iscServiceClose(), funcin de sincronizacin 319 iscServiceOpen(), funcin de sincronizacin 318 iscServiceOpenEx(), funcin de sincronizacin 320 ISCSTATE, tipo de datos 316 isy_BOOL, tipo de datos 316 isy_BYTE, tipo de datos 315 isy_DWORD, tipo de datos 316 isy_INT, tipo de datos 315 isy_INT16, tipo de datos 315 isy_INT32, tipo de datos 315 isy_TCHAR, tipo de datos 316 isy_UINT, tipo de datos 315 isy_UINT16, tipo de datos 315 isy_UINT32, tipo de datos 315 isy_ULONG, tipo de datos 315 isy_VOID, tipo de datos 315 isy_WORD, tipo de datos 316

ISync Client visin general 30 ISync Client nativo visin general 33 isync4j para PalmOS 15

J
J2ME MIDP ISync Client visin general 30 Java, aplicaciones utilizacin de UNICODE 33 Java, mtodos 347 Java ISync Client visin general 30 Java Sync Client para IBM Cloudscape Versin 10 visin general 31 JavaServer Pages, aplicaciones Ver desarrollo de aplicaciones DB2 Everyplace, JavaServer Pages 41 JDBC lista de controladores por omisin 348 restricciones comunes para fuentes de datos 348 sistemas operativos soportados 35 JSP cdigos de personalizacin de IBM 49 JSP Ver desarrollo de aplicaciones DB2 Everyplace, JavaServer Pages 41

L
Liberar recursos de descriptor de contexto, funcin 253 limitaciones en las aplicaciones de ejemplo Visual Basic 79 lmites 194 Lnea de mandatos de Sun Wireless Toolkit 399 Linux uso con C/C++ 23 uso con Java 35 uso con la sentencia EXPLAIN 440 Linux incorporado. Vase Linux 23 LIST COLUMNS 208 LIST INDEX 208 LIST TABLES 208 LOCK TABLE, sentencia 446 Lotus Domino restricciones de las fuentes de datos 133

M
mandatos CLP 206 manuales 9 marcadores de parmetros ejemplo de ADO.NET 70 ejemplo de CLI 68 ejemplo de JDBC 69 no tipificados 71 restricciones 72

492

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

marcadores de parmetros (continuacin) visin general 67 mensaje, error. Vase mensaje de error 112 mensaje de lmite excedido de SQL o del producto, en SQLState 476 mensajes de aviso, en SQLState 475 mensajes de caracterstica no soportada, en SQLState 475 mensajes de DDL para Java, en SQLState 476 mensajes de diversos errores de SQL o del producto, en SQLState 476 mensajes de error CLI 475 cdigos y explicaciones 140 DB2 Everyplace Update Tool 196 interfaz de salida de usuario para 125 registros rechazados 111 SQL 475 ver 112, 113 mensajes de error de sintaxis o de violacin de regla de acceso, en SQLState 476 mensajes de error de SQL dinmico, en SQLState 475 mensajes de error del administrador de DB2 Everyplace, en SQLState 476 mensajes de especificacin no vlida de autorizacin, en SQLState 476 mensajes de estado no vlido de aplicacin, en SQLState 476 mensajes de estado no vlido de la transaccin, en SQLState 476 mensajes de estado no vlido del cursor, en SQLState 475 mensajes de excepcin de accin desencadenada, en SQLState 475 mensajes de excepcin de conexin, en SQLState 475 mensajes de excepcin de datos, en SQLState 475 mensajes de excepcin de funcin externa, en SQLState 476 mensajes de excepcin de llamada a funcin externa, en SQLState 476 mensajes de identificador no vlido de sentencia de SQL, en SQLState 476 mensajes de no hay datos, en SQLState 475 mensajes de nombre no vlido de conexin, en SQLState 476 mensajes de nombre no vlido de cursor, en SQLState 476 mensajes de objeto no encontrado en estado previo necesario, en SQLState 476 mensajes de recurso errneo del sistema, en SQLState 476 mensajes de retrotraccin de transaccin, en SQLState 476 mensajes de smbolo no vlido, en SQLState 475 mensajes de SQLState CLI 301 cdigos de clase 475

mensajes de SQLState (continuacin) JDBC 471 mensajes de terminacin no vlida de transaccin, en SQLState 476 mensajes de terminacin satisfactoria no calificada, en SQLState 475 mensajes de violacin de la cardinalidad, en SQLState 475 mensajes de violacin de opcin con comprobacin, en SQLState 476 mensajes de violacin de restriccin, en SQLState 475 mensajes en SQLState 475, 476 mtodo Java clase, DB2eConnecton 350 clase, DB2eStatement 350 interfaz Blob 352 interfaz Driver 367 mtodos JDBC soportados 347 Metrowerks CodeWarrior 22, 23 Microsoft eMbedded Visual Tools 23 MIDP ISync Client visin general 30 mini servidor de Web HTTP 41 mini servidor de Web HTTP, configuracin para JavaServer Pages en Win32 47 mini servidor de Web HTTP, resolucin de problemas 55 MiniHttpConfig.properties, ejemplo de archivo para JavaServer Pages para Win32 47 Mobile Application Builder 7 Mobile Application Builder, descargar 11 modalidad de confirmacin automtica comportamiento del cursor 87 motor de base de datos de DB2 Everyplace 4 motor de base de datos para dispositivos porttiles 4

Obtener el valor actual de un atributo de conexin, funcin 291 Obtener el valor de un atributo de sentencia, funcin 270 Obtener informacin, funcin 265 obtener informacin, para sentencia SELECT 440 Obtener informacin de columna para una tabla, funcin 296 Obtener informacin de tabla, funcin 293 Obtener nombre de cursor, funcin 257 Obtener nmero de columnas resultantes, funcin 273 Obtener nmero de filas, funcin 278 Obtener nmero de parmetros en una sentencia SQL, funcin 300 Obtener varios campos del registro de diagnstico, funcin 263 On Error Resume Next, sentencia 78 opciones de columna, en sentencia ALTER TABLE 421 opciones de columna, en sentencia CREATE TABLE 432 orden de sincronizacin 111

P
palabras reservadas 195 Palm OS uso con C/C++ 23 uso con Java 35 uso con la sentencia GRANT 442 parmetro ID en salidas de usuario 125 parmetro MSG en salidas de usuario 125 parmetros, vincular 71 pila de ejecucin de programas, tamao para Palm OS 19 porttil, base de datos 5 Preparar sentencia, funcin 274 PreparedStatement, interfaz 369 privilegios usuario gestionar bases de datos cifradas 100 otorgar para bases de datos cifradas 99 privilegios de cifrado gestionar 100 otorgar 99 privilegios de SQL influencia sobre 111 privilegios de usuario gestionar bases de datos cifradas 100 otorgar para bases de datos cifradas 99 problemas de sincronizacin. Vase resolucin de problemas. 110 procedimiento almacenado llamar, instrucciones para sentencia de SQL 424 Procesador de lnea de mandatos 395 procesador JSP 41 procesador MIPS 19 procesador SH4 19 programa de utilidad de diagnstico 114 ndice

N
nivel de rastreo, definir archivo de anotaciones cronolgicas y de rastreo, gestionar 113 nombre-columna, en sentencia ALTER TABLE 421 nombre-columna, en sentencia CREATE TABLE 430 nombre-tabla, en sentencia ALTER TABLE 420 nombre-tabla, en sentencia CREATE TABLE 430 Nmero de columnas resultantes, funcin 273

O
Obtener columnas de clave fornea, funcin 250 Obtener columnas de clave primaria, funcin 276 Obtener datos, funcin 259

493

programa de utilidad de recuperacin 114 programas de ejemplo Java 411, 412 sentencia CALL 425 proveedor de datos .NET utilizacin 58 visin general 57 proveedor de sincronizacin basado en JNI instalacin 38 proveedor de sincronizacin nativa basada en JNI, instalacin 38 proveedor de sincronizacin nativa basada en la deteccin instalacin 14 proveedores de sincronizacin visin general 30 punteros FAR 213

Q
QNX Neutrino uso con C/C++ 23 uso con Java 35 uso con Metrowerks CodeWarrior 23

R
recuentos de bytes 423, 435 recuperacin gradual de datos 25 Recuperar, funcin 241 Recuperar conjunto de filas y Devolver datos, funcin 243 recursos, liberar 217 recursos no disponibles o mensajes de intervencin del operador, en SQLState 476 registro de controladores de interfaz 352, 367 REORG TABLE, sentencia finalidad 447 invocar internamente 447 resolucin de conflictos 110 resolucin de problemas archivo de anotaciones cronolgicas en el cliente, ver 113 archivo de anotaciones de errores, ver 112 mensajes de error y cdigos 140 supervisin de la sincronizacin del cliente 114 restricciones referenciales en sentencia CREATE TABLE 433 ResultSet, interfaz 371 ResultSetMetaData, interfaz 376 retrotraccin comportamiento del cursor 87 ROLLBACK 208 ROLLBACK WORK 208

S
seguimiento de versiones de registros de base de datos 110 seguridad 97

seleccin de la va de acceso script de ejemplo 441 utilizando la sentencia EXPLAIN 440 SELECT, sentencia 449 sentencia CALL 424 sentencia de SQL ALTER TABLE 419, 420 CALL 419, 424 CREATE INDEX 419, 427 CREATE TABLE 419, 429 DATE 419 DELETE 419, 436 DROP 419, 439 EXPLAIN DB2ePLANTABLE, columnas de la tabla 441 DB2ePLANTABLE, creacin de la tabla 441 finalidad 440 lista 419 GRANT 442 INSERT finalidad 443 lista 419 restricciones 446 limitacin de longitud 419 LOCK TABLE 446 REORG TABLE consideraciones 447 finalidad 447 invocar internamente 447 lista 419 REVOKE 448 SELECT 419, 449 SQLExecute, funcin 424 SQLPrepare, funcin 424 TIME 419 TIMESTAMP 419 UPDATE 419, 461 visin general 419 serializacin, conexiones 84, 96 serializacin de conexiones 84, 96 SET, clusula de sentencia UPDATE 463 sincronizacin conflictos de base de datos 110 consultar tablas de informacin del cliente 119 estadsticas 115 estructuras de tablas de estadsticas del cliente 120 habilitar carga de datos de rastreo 116 indicacin de la hora 110 informacin 115 orden 111 uso del informe de estadsticas de ejemplo 120 sitio Web de DB2 Everyplace 22 SMALLINT, tipo de datos 431 Software Developers Kit de GNU 22 Software Developers Kit de Java 29, 347 solucin de informtica porttil componentes del producto 4 soporte de idioma codificacin de caracteres en aplicaciones Java 33 por sistema operativo 381

soporte de idioma (continuacin) UNICODE 384 utilizacin de habilitadores de idioma 383 visin general 381 soporte de idioma nacional codificacin de caracteres en aplicaciones Java 33 por sistema operativo 381 UNICODE 384 utilizacin de habilitadores de idioma 383 visin general 381 soporte de JSP 41 verificar en una estacin de trabajo Windows 42 soporte de la sentencia de SQL 419 Soporte NLS codificacin de caracteres en aplicaciones Java 33 por sistema operativo 381 UNICODE 384 utilizacin de habilitadores de idioma 383 visin general 381 soporte para UNICODE 19 SQL lmites 194 SQL, tipos de datos atributos 466 simblicos y por omisin 471 SQLAllocConnect, funcin en desuso 215 SQLAllocEnv, funcin en desuso 215 SQLAllocStmt, funcin en desuso 218 SQLAllocHandle, funcin 216 SQLAllocHandleVer, funcin interna 78 SQLBindCol, funcin 218 SQLBindParameter, funcin 71, 222 SQLColumns, funcin 296 SQLConnect, funcin 228 SQLDescribeCol, funcin 231 SQLDisconnect, funcin 234 SQLEndTran, funcin 235 SQLError, funcin en desuso 237 SQLExecDirect, funcin 71, 237 SQLExecute, funcin 71, 238 SQLFetch, funcin 241 SQLFetchScroll, funcin 243 SQLForeignKeys, funcin 250 SQLFreeConnect, funcin en desuso 253 SQLFreeEnv, funcin en desuso 253 SQLFreeHandle, funcin 253 SQLFreeStmt, funcin en desuso 256 SQLGetConnectAttr, funcin 291 SQLGetCursorName, funcin descripcin 257 SQLGetData, funcin 259 SQLGetDiagRec, funcin 263 SQLGetInfo, funcin 265 SQLGetStmtAttr, funcin 270 SQLNumParams, funcin 300 SQLNumResultCols, funcin 273 SQLPrepare, funcin 274 SQLPrimaryKeys, funcin 276 SQLRowCount, funcin 278 SQLSetConnectAttr, funcin 280

494

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

SQLSetStmtAttr, funcin 284 SQLSTATE 419, 475 SQLTables, funcin 293 Statement, interfaz 377 subconjuntos de JSP Versin 1.1, soportados 52 Sun Wireless Toolkit 401 supervisin de la sincronizacin del cliente 114 supresin de objetos SQL 439 Symbian implementaciones basadas en JNI 39 Symbian OS uso con C/C++ 23 Symbian OS/EPOC uso con la sentencia GRANT 442 Sync Client aplicaciones de ejemplo C/C++ 27 archivo de anotaciones cronolgicas de sincronizacin 113 descripcin de 7 Visin general de la API de Java 30 Sync Server descripcin de 6 visin general 4

T
tabla actualizacin por fila y columna, sentencia UPDATE 461 bloquear, instrucciones para sentencia de SQL 446 compresin con sentencia de SQL 447 invocar internamente 447 creacin de cifrado 99 crear, en base de datos corporativa 435 crear, instrucciones para sentencia de SQL 429 gestin de conflictos 110 insercin de filas con sentencia de SQL 443 modificar, instrucciones para sentencia de SQL 420 seguimiento de versiones 110 supresin, mediante la sentencia DROP 439 tablas base del catlogo del sistema, descripcin 87 lmites para DB2 Everyplace 194 visin general de DB2 Everyplace 83 tablas base del catlogo del sistema, descripcin 87 tablas definidas por el usuario manejo de conflictos de denominacin 84 TABLE, clusula en sentencia DROP 440 TIME, tipo de datos 431 TIMESTAMP, tipo de datos 432 tipo de datos BLOB 431 compatibilidad 465 compatibles 465

tipo de datos (continuacin) conversiones 71 CHAR 431 DATE 431 DECIMAL 431 HISCCONF 316 HISCCSR 316 HISCENG 316 HISCSERV 316 INT 431 INTEGER 431 ISCEVT 316 ISCLISTENARG 316 ISCLISTENCOLUMN 316 ISCLISTENCONFLICT 317 ISCSTATE 316 isy_BOOL 316 isy_BYTE 315 isy_DWORD 316 isy_INT 315 isy_INT16 315 isy_INT32 315 isy_TCHAR 316 isy_UINT 315 isy_UINT16 315 isy_UINT32 315 isy_ULONG 315 isy_VOID 315 isy_WORD 316 operandos, de 465 para las API C de IBM Sync Client 315 SMALLINT 431 TIME 431 TIMESTAMP 431 VARCHAR 431 tipos de avisos 475 tipos de datos por omisin y simblicos, SQL 471

VERSION 208 vinculacin de parmetros

71

W
WCE Tooling instalacin para destinos no Palm 12 WebSphere Studio Device Developer 11 WHERE, clusula DELETE, seleccin de filas para la sentencia 437 SELECT, seleccin de filas para la sentencia 453 UPDATE, bsqueda condicional en sentencia 463 Windows 2000 implementaciones basadas en JNI 40 uso con C/C++ 23 uso con Java 35 uso con JavaServer Pages 41 uso con la sentencia EXPLAIN 440 uso con Visual Basic 78 Windows CE implementaciones basadas en JNI 38 uso con C/C++ 23 uso con Java 35 uso con JavaServer Pages 41 uso con la sentencia GRANT 442 uso con Visual Basic 78 Windows NT implementaciones basadas en JNI 40 uso con C/C++ 23 uso con Java 35 uso con JavaServer Pages 41 uso con la sentencia EXPLAIN 440 uso con la sentencia GRANT 442 uso con Visual Basic 78 WSDD 11 creacin de un proyecto para DB2eAppl.java para destinos de Palm 12 creacin de un proyecto para DB2eAppl.java para destinos no Palm 13 importacin de DB2eAppl.java para destinos no Palm 17 importacin de DB2eAppl.java para destinos Palm 16 instalacin de WCE Tooling para destinos no Palm 12

U
UID de aplicacin para EPOC R5 22 para Palm OS 22 para Symbian OS Versin 6.0 22 UNICODE soporte en DB2 Everyplace 384 utilizar en aplicaciones Java 33 UPDATE, estado del bit de modificacin 286 UPDATE, sentencia finalidad 461

V
VALUES, clusula INSERT, carga de una fila en sentencia 444 nmero de valores, reglas para 444 VARCHAR, tipo de datos 431 variable de lenguaje principal, insertar en filas 444 variable DSYID (salidas de usuario) 125 variable DSYMSG (salidas de usuario) 125 ndice

495

496

Gua de aplicaciones y desarrollo de IBM DB2 Everyplace Versin 8.2

Nmero de Programa: 5724D04

SC10-3942-02

You might also like