Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/05/2010, 08:00
Avatar de goncafa
goncafa
 
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 22 años, 4 meses
Puntos: 10
Respuesta: Hacer INSERT con valores nulos.

Bueno, ya que nadie pudo responder hare yo mismo el aporte.

Efectivamente los valores que en el objeto vienen null pasan a la base de datos solo como un String vacío, no quedando realmente NULL en ella.

La solución que me hice para evitar este desagradable problema es la siguiente clase con un método estático utilitario:
Código PHP:
<?php
class Util {
    public static function 
convert2Sql($campo) {
        if(
null == $campo) {
            
$campo 'NULL';
        } else {
            
$campo '\''.$campo.'\'';
        }
        
        return 
$campo;
    }
}
?>
De esta forma en mi DAO puedo tener el metodo save de la siguiente forma:
Código PHP:
public function save(Ecg $ecg) {
        if(
null == $ecg) {
            throw new 
Exception('Objecto Ecg viene nulo'2001);
        }
        
        
$this->query 'INSERT INTO ECG (
                        PCNTE_CDG,
                        ECG_PICTURE_RUTE,
                        ECG_OBS,
                        ECG_DIAGNOSIS,
                        ECG_AUD_FEC_CREAT,
                        ECG_AUD_CREAT_BY
                    ) VALUES ('
                        
Util::convert2Sql($ecg->getPcnteCdg()) . ','
                        
Util::convert2Sql($ecg->getEcgPictureRute()) . ','
                        
Util::convert2Sql($ecg->getEcgObs()) . ','
                        
Util::convert2Sql($ecg->getEcgDiagnosis()) . ','
                        
'NOW(),'
                        
Util::convert2Sql($ecg->getEcgAudCreatBy())
                    . 
')';
                    
        
$this->con->setQuery($this->query);
        return 
$this->con->executeUpdate();
    } 
Ahí esta por si a alguien le sirve o tiene el mismo problema, así nos evitamos los eternos if validando si el campo viene nulo y eso.

Cualquier duda me pueden consultar.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo