Professional Documents
Culture Documents
SC10-3942-02
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
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 . . . . . . . . .
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
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
Sincronizacin
Dispositivo porttil
desarrollar
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.
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.
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.
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&
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.
10
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.
11
12
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
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
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.
16
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.
Desarrollo
17
Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411
18
%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
Linux
20
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.
22
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.
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.
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
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\
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 : }
26
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
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
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.
30
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
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
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.
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
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
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
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)
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
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
38
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.
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.
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
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
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.
42
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
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.
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
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.
# 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
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.
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
Sintaxis
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" />
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
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
54
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.
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.
56
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
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
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
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
UID
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
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();
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
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;
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
66
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.
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
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(); }
70
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; } }
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
72
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
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
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
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.
78
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
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
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
82
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
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)
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
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.
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
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.
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
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)
VARCHAR (19) VARCHAR (19) VARCHAR (19) CHAR (19) BLOB (280) TIMESTAMP (26)
S S S
Desarrollo
89
90
Ajuste
Este captulo describe tcnicas para mejorar el rendimiento de las aplicaciones de DB2 Everyplace.
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
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
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
Seguridad
Los temas de este captulo describen tcnicas que se pueden utilizar para hacer que las aplicaciones resulten ms seguras.
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.
98
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.
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.
Seguridad
99
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.
100
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);
-- 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
-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
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.
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
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
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
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.
110
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
Cliente 1
ltima sincronizacin: 12:02:04
actualizar
Tabla VNMEDICALRECORD
Cliente 2
ltima sincronizacin: 12:02:45
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.
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.
112
Sist. Pral.:Puerto Identificacin de Sync Server que informa de esta entrada del archivo de anotaciones cronolgicas.
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.
114
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.
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.
116
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>
118
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
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 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
120
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
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)
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
4. En el campo Name (Nombre), escriba el nombre del archivo de texto. 5. Pulse OK (Bien).
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
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
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
Consulta
Este captulo proporciona informacin de consulta.
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
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
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
132
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
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
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
136
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.
137
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
Valor por omisin de Oracle constante, NULL SYSDATE, NULL constante, NULL NULL NULL constante, NULL
138
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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 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.
Consulta
197
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
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
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
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
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.
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
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, 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
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.
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.
Blob
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
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
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
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
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
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
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
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.
212
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.
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
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
Consulta
215
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
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
HY014
HY092
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
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
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.
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() 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
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
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
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 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
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.
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
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
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.
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.
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
232
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
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
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
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.
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.
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
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.
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
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
Restricciones Ninguna.
238
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
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.
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
Restricciones Ninguna.
240
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
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.
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
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
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.
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.
246
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.
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
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
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.
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
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.
HY014
252
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.
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
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
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.
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
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.
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.
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
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.
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.
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
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
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
262
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().
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.
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
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
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.
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
SQLSMALLINT * StrLen_or_IndPtr
266
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
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.
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
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
HY000
Error general.
HY001
272
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.
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).
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.
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
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.
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.
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
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.
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
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
HY013
Restricciones Ninguna.
Consulta
279
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
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
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
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.
284
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
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
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
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)
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
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.
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
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
HY001
HY090
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() 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
294
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)
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() 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
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
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.
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
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.
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
07006
SQLGetData
07009
SQLBindCol
07009
SQLDescribeCol
08001
SQLConnect
302
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
08003 08004
SQLDisconnect SQLConnect
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
42xxx
SQLNumResultCols
Error de sintaxis
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
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
59106*
SQLExecute
HY000
SQLAllocHandle
HY000
SQLFreeHandle
Error general
HY001
SQLAllocHandle
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
HY002
SQLGetData
HY003
SQLBindCol
306
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
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
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
HY013
SQLNumResultCols
308
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
HY090
SQLDescribeCol
HY090
SQLExecDirect
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
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
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
310
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
HYT00
SQLConnect
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
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.
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
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.
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 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
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)
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);
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
Tabla 139. Argumentos de iscServiceOpen() (continuacin) Tipo de datos Argumento Uso entrada salida Descripcin (Reservado) Descriptor de contexto para un servicio
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);
320
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
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
324
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
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
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
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
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
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);
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
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
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)
ISCEVT_ErrAllocResource (400) ISCEVT_ErrConnectData (401) ISCEVT_ErrDisconnectData (402) ISCEVT_ErrNoData (403) ISCEVT_ErrMessageFormat (412) ISCEVT_ErrNotFound (413)
340
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).
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
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.
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
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
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).
For AS\400: 1. Slo recibe soporte com.ibm.as400.access.AS400JDBCDriver. 2. El controlador JDBC de DB2 Connect no recibe soporte
348
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
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");
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
UCS-2
Coreano
UCS-2
Pgina de v Instalar cdigos/ habili- UTF-8 tador UCS-2 Pgina de cdigos/ UTF-8 N/D
Japons
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
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.
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
384
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.
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
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(); }
388
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
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))
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.
392
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.
2. Seleccione un nombre de paciente en la lista y pulse el botn Informacin para ver informacin general 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
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.
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
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.
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
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
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
h. i.
j. k.
Consulta
401
4. Cree y ejecute la aplicacin de ejemplo VNurse. En la ventana de Sun Wireless Toolkit, pulse Build y Run.
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
// 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
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
} } 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; }
} } // 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 } } }
Consulta
405
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
/** Clase de soporte que maneja todas las tareas de sincronizacin. La llama ISyncSample.
406
*/ 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
} 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
provider = null; }
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
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.
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
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.
416
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.
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.
418
Vuelva a Compilacin y ejecucin de aplicaciones Java de ejemplo en destinos que no sean Palm OS en la pgina 411.
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::
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
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
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
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
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
(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
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
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 )
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
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
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
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
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:
/ * + -
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
>= 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
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))
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
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 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
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
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
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
448
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
condicin-bsqueda
LIMIT entero-simple
elementoSeleccionado:
* COUNT ( AVG SUM MIN MAX ( ( ( ( expresin * expresin expresin expresin expresin ) ) ) ) )
condicin-bsqueda:
AND OR
NOT
predicado condicin-bsqueda
450
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 ) )
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
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
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
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
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
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
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
operador
= <> < > <= >= LIKE NOT LIKE IS NULL IS NOT 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
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
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
466
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).
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
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).
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
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.
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
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
472
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.
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.
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.
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
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.
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
SC10-3942-02