Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/02/2012, 06:11
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Como no modificar campos en blanco

Mira, la cosa la puedes manejar de dos formas: Por programación, o por consulta en SQL.
Por programación lo que tienes que hacer es construir la lógica de ese método de modo tal que valide lo que está recibiendo en esos datos, y si recibe datos y no vacíos, ir agregando uno a uno los parámetros a cargar en la sentencia.
Esto significa que:
- Armas esta parte: "UPDATE USUARIO SET "
- Si recibes el nombre, debes agregar "NOMBRE=?"
- Si recibes el apellido, debes agregar "APELLIDO1=? "
- Finalmente le agregas "WHERE EMAIL=?";

En tu ejemplo el e-Mail, Username y Password deberían ser obligatorios, así que no los incluyo; a su vez, el cambio de e-Mail debería ser hecho en un proceso especial, por cuanto lo estás usando de identificador, con lo que se puede suponer que es PK, y las PK no se cambian de una forma tan liviana.

La otra posibilidad es hacerlo en la consulta SQL. Para eso lo que haces es una sentencia algo más compleja:

Código MySQL:
Ver original
  1. UPDATE USUARIO SET
  2.     EMAIL=IF(?<>'', ?, EMAIL),
  3.     PASSWORD=IF(?<>'', ?, PASSWORD),
  4.     NOMBRE=IF(?<>'', ?, NOMBRE),
  5.     APELLIDO1=IF(?<>'', ?, APELLIDO1)
  6. WHERE EMAIL=?
El problema, como puedes apreciar, es que como los parámetros los incluyes sin nombre, deberás ingresar dos veces cada parámetro para que crear la consulta.

Pregunta: ¿Estás trabajando en .Net o no?

Nota final: las normas de este foro prohíben postear código de programación (notarás que no usé lenguaje de programación para responderte), para tratar el tema en ese lenguaje, postea la pregunta en el Foro del lenguaje que usas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)