La solución a los statements en java, pues según leí, esto depende del conector JDBC con el que estes trabajando hay conectores, con simplemente escribir System.out.println y el statement te imprimen la consulta pero que pasa cuando trabajas con una base de datos como infiernix y algo falla en la ejecución de un query o un procedimiento y tienes unas 20 llamadas y la tarea de debuguear se vuelve tediosa, sobre todo si tienes un procemiento almacenado con 78 parametros, pues bueno para ver que esta pasando en los querys y en los procemientos tenemos algo llamado P6spy lo puedes bajar de http://sourceforge.net/projects/p6spy/.
Pasos para instalar p6spy
1- Bajarte el archivo p6spy-install.jar abrirlo con winrar y descomprimir o sacar p6spy.jar y spy.properties.
2- Agregale a las libs de tu proyecto p6spy.jar
3.-En la parte(puede ser una clase o un xml) donde hagas referencia al driver cambiala, ejemplo:
Yo hago referencia al driver en una clase.
//Class.forName("com.informix.jdbc.IfxDriver"); Este ya no va
Class.forName("com.p6spy.engine.spy.P6SpyDriver");
4.- El archivo spy.properties colocalo en la raíz del src de tu proyecto.
5.-El archivo spy.properties edita las siguientes 2 líneas. Yo como trabajo con informix este es el nombre de mi driver, recuerda que este varía según la base de datos y la carpeta temporal debe de existir.
realdriver=com.informix.jdbc.IfxDriver
logfile = c:/temporal/spy.log
6.- Corre tu aplicación normalmente y revisa el log spy.log dentro de temporal
resultado de ejemplo con un procedimiento almacenado en informix
1427018443548|17|0|statement|{call procedimientoconsulta_marcas(?,?,?,?,?,?,?) }|{call procedimientoconsulta_marcas(0,0,'57777000000',600,0,0,'208980') }
Como siempre espero que les sirva
Nota: No recomiendo el uso en ambientes productivos
Mostrando entradas con la etiqueta Informix. Mostrar todas las entradas
Mostrando entradas con la etiqueta Informix. Mostrar todas las entradas
martes, 24 de enero de 2012
viernes, 20 de enero de 2012
Error Informix con Java Cannot open DEBUG file for SPL routine trace.
Pues el otro día me encontre con este error y bueno en la ayuda de informix dice que es porque no se puede escribir en un archivo, practicamente de log, pues en mi codigo java yo no tenía nada que escribiera un archivo de log, entonces abrí el store procedure y me tope con esta grosería de línea.
Una de dos o no tengo permisos o el archivo no existe, pero para mi sorpresa tengo todos los permisos, entonces el archivo es el que no existe para no meterme en broncas simplemente lo comente y listo funcionó.
SET DEBUG FILE TO '/temporal/instance1/logs/marca_cuenta.log';
TRACE ON;
Una de dos o no tengo permisos o el archivo no existe, pero para mi sorpresa tengo todos los permisos, entonces el archivo es el que no existe para no meterme en broncas simplemente lo comente y listo funcionó.
Equivalente a top en informix
Pues este es el equivalente al top en informix
Select FIRST 5 * from tabla
Select FIRST 5 * from tabla
Informix System Catalogs y Herramienta
Si alguien usa infiernix que diga informix pues le dejo un link por si necesita realizar busquedas de tablas, columnas etc IBM. Y aprovechando el post támbien recomiendo esta herramienta Db Visualizer, te ayuda con la edición y creación de procedimientos almacendos, aunque funciona en infiernix, támbien sirve para otras bases de datos, recomendable si trabajas con multiples bases de datos.
miércoles, 4 de enero de 2012
Smart large object error Infiernix(Informix y java)
Pues tratando de traerme una imagen de la base de datos, en este caso Informix rs.getBlob(1); me salió este error, así que bueno cuando alguien se trae una base de datos generalmente es para pasarla a un objeto imagen mediante un InputStream, pues bien el error lo solucione de la siguiente forma.
InputStream campo=null;
while (rs.next()) {
campo= rs.getBinaryStream(1);
}
campo= rs.getBinaryStream(1);
Suscribirse a:
Entradas (Atom)