Problema con Oracle y C++

4 views
Skip to first unread message

RFOG

unread,
May 9, 2018, 6:59:37 AM5/9/18
to cp...@googlegroups.com
Hola a todos. 

Estoy un poco desesperado con esto, porque no consigo encontrar el problema. A ver si a alguno de vosotros se os enciende la bombilla.

Mi aplicación conecta localmente a una base de datos Oracle mediante ODBC y el programa accede mediante objectos CRecordSet de MFC.

El problema es que algunas ejecuciones me devuelven datos incorrectos. Yo ejecuto una query SQL en el Oracle SQL Developer o el SQLPlus y me devuelve los valores correctos.

Cojo esa misma SQL, la ejecuto desde un recordset y me devuelve valores incorrectos. De hecho me devuelve valores anteriores. Es decir, si en la base de datos había por ejemplo esto:

    ANZAHL       WERT
---------- ----------
         37        500
         11       1000

El programa ejecuta otra query y pone esos valores a cero. Hace un commit y listo, los valores han cambiado. Verificado porque vuelvo a leer con el Oracle SQL developer y SQLPlus.

Sin embargo, y ojo, esto es importante, en nuevas ejecuciones del programa, y también en la misma ejecución (y la base de datos es local y solo accede ese programa, en condiciones de laboratorio), ejecuciones de la query debe devolver esos valores a cero. 

Cierro el programa y lo vuelvo a abrir. Y a veces devuelve los valores correctos (es decir, la columna ANZAHL a cero), pero otras ejecuciones, devuelve los valores 37 y 11 anteriores. Es decir, se ejecuta la query en una parte del código y devuelve los valores correctos. Luego se ejecuta la misma query en otra parte del código y devuelve los valores incorrectos, que son precisamente los que había antes.

Y aquí viene lo bueno, incluso después de hacer un drop completo de la base de datos y volver a cargar los valores por defecto con scripts SQL que lo ponen todo a cero, la query que ejecuta mal... sigue devolviendo esos valores que no existen ya. Pero los devuelve... 

He probado a modificar la query que falla para que sea diferente de la que no falla, como por ejemplo obtener alguna columna que no necesito, pero las columnas que fallan, siguen fallando aunque las otras las devuelva bien.

¿Le ha pasado a alguien algo similar o puede darme alguna indicación de por dónde pueden venir los tiros?



Jorge Atala

unread,
May 9, 2018, 9:59:49 AM5/9/18
to cppba
tiro lo primero que se me viene a la mente para ayudarte a pensar por otro camino, no conozco ni Recordset ni MFC, pero al decir que son objetos, significa que hay una capa intermedia entre tu aplicacion y la base de datos, esos frameworks suelen cachear las tablas para mejorar el acceso, sera que tenes un estado intermedio ahi que es el culpable? fijate si ese framework no tiene algun modo de purgar estas caches o asegurarte de que lee directamente de la base.

Capaz estoy tirando fruta, pero por ahi sirve :)



--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Leonardo J Boquillón

unread,
May 9, 2018, 10:08:38 AM5/9/18
to cp...@googlegroups.com
Wireshark a la DB?

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

RFOG

unread,
May 9, 2018, 10:19:56 AM5/9/18
to cp...@googlegroups.com
Por ahí deben andar los tiros. No eres el primero que me apunta a eso.

El mié., 9 may. 2018 a las 15:59, Jorge Atala (<alan...@gmail.com>) escribió:
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

RFOG

unread,
May 9, 2018, 10:20:33 AM5/9/18
to cp...@googlegroups.com
¡Jarl!

No había caído, a ver qué está realmente devolviendo de la consulta.


Marcos Díaz

unread,
May 9, 2018, 10:06:11 PM5/9/18
to CyC++ Buenos Aires
Volvió el lobo oscuro?

dgutson .

unread,
May 9, 2018, 10:08:06 PM5/9/18
to cppba
Leonardo Boquillón

El mié., 9 de mayo de 2018 23:06, Marcos Díaz <mdmarc...@gmail.com> escribió:
Volvió el lobo oscuro?


--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages