Spanish Ojo con esto!!! DBUtils.ExecuteMap siempre devuelve valores tipo CADENA (String)

Seneca

Active Member
Licensed User
Hola.

Acabo de descubrir que DBUtils.ExecuteMap SIEMPRE devuelve un MAP con todos sus valores tipo Cadena, aunque los campos de la BD sean de tipo numérico. Si no se tiene esto en cuenta, en determinados casos el código no va a funcionar como se espera.

Supongamos que en la BD tenemos una tabla con un campo tipo numérico llamado "campo1" y que en el primer registro tiene almacenado el valor numérico 1. Nos encontramos lo siguiente

B4X:
mapRegistro = DBUtils.ExecuteMap (Starter.sqlBD, "SELECT  * FROM tabla.........................)


Log (mapRegistro.Get("campo1") = 1)   '----> Devuelve False, cuando esperamos que devuelva True
Log (mapRegistro.Get("campo1") = "1") '----> Devuelve True

If  mapRegistro.Get("campo1") = 1 then 'Aunque se trata de un campo numérico, esta expresión es incorrecta
....
End

If  mapRegistro.Get("campo1") = "1" then 'Esto es lo correcto, a pesar de tratarse de un campo numérico en la BD
....
End

Una vez que se conoce esto, no tiene mayor problema, pero mientras tanto el código no hace correctamente su función.

Saludos.
 
Top