Problemas con PictureBox y SQL Server

22/05/2007 - 11:23 por Fernando Alonso | Informe spam
Hola a tod@s:

¿Como se guardan y recuperan imagenes en una base de datos SQl Server?. Lo
he intentado asinganado a un PictureBox el campo del TablaAdapter subyacente.
Funciona correctamente para visualizar imagenes preexistentes, pero no
consigo que guarde las nuevas, para cargar las nuevas utilizo el siguinete
código :
Image Imagen;

Imagen = Image.FromFile(OpF1.FileName);
pictureBox1.ImageLocation = OpF1.FileName;
pictureBox1.Load();
Este código visualiza la imagen en el pictureBox, pero no la guarda en la
BD, a pesar del DataBindings enlazado al campo

Alguna ayuda?

Gracias de antemano y un saludo

Fernando Alonso
 

Leer las respuestas

#1 Fernando Alonso
22/05/2007 - 12:03 | Informe spam
Al final he conseguido guardar las imagenes en la BD, pero de forma
aleatoria, es decir, unas veces las guarda y otras no. ¿Dónde estará mi
querido Delphi?. Evdientemente, tan extraño comportamiento se produce sin
ningún tipo de error, y con la misma imagen, unas veces la carga, otras no,
unas veces la guarda en la BD y otras no. Para lograr que me las guardara, me
he creado un strean, un componente image, y actualizo directamente el
BindingSource, es la única forma que he visto para poder guardar la imagen
aunque como digo, de forma aleatoria. Incluyo el código de la función, por si
algún gúru descubre el fallo:


private void toolStripButton7_Click(object sender, EventArgs e)
{
if (OpF1.ShowDialog() == DialogResult.OK)
{
MemoryStream ms = new MemoryStream();

Image Imagen;

Imagen = Image.FromFile(OpF1.FileName);
imagenPictureBox.ImageLocation = OpF1.FileName;
imagenPictureBox.Load();

switch (OpF1.FilterIndex)
{
case 1:
Imagen.Save(ms, ImageFormat.Bmp);
break;
case 2:
Imagen.Save(ms, ImageFormat.Jpeg);
break;
case 3:
Imagen.Save(ms, ImageFormat.Gif);
break;
case 4: //Hay que averiguar la extension
Imagen.Save(ms, ImageFormat.Gif);
break;
default:
MessageBox.Show("Formato de imagen inválido o
no conocido");
break;
}
DataRowView DRI;
DRI = (DataRowView)imagenesBindingSource.Current;

DRI["imagen"] = ms.GetBuffer();
this.Validate();
this.imagenesBindingSource.EndEdit();

this.imagenesTableAdapter.Update(this.iNMOBLIARIADataSet.Imagenes);
Imagen.Dispose();
ms.Dispose();
}


}

Alguna ayuda?

Gracias de antemano y un saludo

Fernando Alonso

Preguntas similares