En una parte de mi aplicación, el usuario debe poder adjuntar una pequeña imagen a un registro de la base de datos, en un campo blob.
El caso es que hasta llegar al SQL todo va bien, utilizo FormFile para cargar la imagen desde el cliente y le paso el byte[] extraído mediante el método getFileData() y lo guarda bien en la variable (al menos, el tamaño es idéntico al de la imagen original); pero al ir a guardarlo en la BBDD, no lo hace, sino que ese campo blob se queda como null.
Esta es la parte del código que se encarga de almacenarlo:
consulta = "UPDATE proyectos SET titulo=?,resumen=?,cod_categoria=?,bibliografia=?, claves=?";
// Si tenemos imagen y no debíamos eliminarla...
if ((!eliminaImagen) && (imagen != null))
consulta = consulta + ", imagen=?";
consulta = consulta + " WHERE cod_proyecto=? AND validado = ? AND desactivado = ?";
if (cod_tipo != 1)
consulta = consulta + " AND cerrado = ?";
stmnP2 = conn.prepareStatement(consulta);
// Asignación de parámetros
stmnP2.setString(1,titulo);
stmnP2.setString(2,resumen);
stmnP2.setInt(3,cod_categoria);
stmnP2.setString(4,bibliografia);
stmnP2.setString(5,claves);
if ((!eliminaImagen) && (imagen != null)){
stmnP2.setBytes(6,imagen);
stmnP2.setInt(7,cod_proyecto);
stmnP2.setString(8,"S");
stmnP2.setString(9,"N");
if (cod_tipo != 1)
stmnP2.setString(10,"S");
}
else {
stmnP2.setInt(6,cod_proyecto);
stmnP2.setString(7,"S");
stmnP2.setString(8,"N");
if (cod_tipo != 1)
stmnP2.setString(9,"N");
}
// Ejecución de la consulta
resultadoP2 = stmnP2.executeUpdate();
He ido paso por paso ejecutando el programa y en ningún momento se pierde el valor de la variable "imagen", y el resultado del UPDATE no marca ningún error y tampoco se lanzan excepciones.
¿Alguien sabría decirme por qué no se almacenan?