Visualizar imagen desde BD SQL

15/09/2004 - 18:17 por Shania | Informe spam
Hola a todos!
Tengo un campo Foto que es varbinary en una tabla de una
base de datos SQL y lo que quiero ahora es poder leer este
campo para visualizar la imagen en un picture box.
He buscado por la redí y encontré un código pero no me
funciona, me da el error "La conversión especificada no es
válida" en la línea que indico en el código:

Dim sqlDA As SqlClient.SqlDataAdapter
sqlDA = New SqlClient.SqlDataAdapter("SELECT Foto FROM
Clientes WHERE CodCliente=" & Codigo, vg.ConexionSql)

Dim cmd As New SqlClient.SqlCommandBuilder(sqlDA)
Dim ds As New DataSet
sqlDA.Fill(ds, "Tabla")
Dim c As Integer = ds.Tables("Tabla").Rows.Count

If c > 0 Then
Dim byteBLOBData(-1) As [Byte]

'En esta fila da error :
byteBLOBData = CType(ds.Tables("Tabla").Rows((c - 1))
("Foto"), [Byte]())

Dim stmBLOBData As New System.IO.MemoryStream
(byteBLOBData)

MostrarFoto = Image.FromStream(stmBLOBData)

End If

He visto que en la página del guille viene ésto pero es en
C# y aunque lo he intentado pasar a vb.net he debido de
hacer algo mal porque me sale el mismo error. ¿alguien me
puede ayudar?

Muchas gracias y un saludo.
 

Leer las respuestas

#1 Anonimo
19/09/2004 - 00:54 | Informe spam
Buenas Shania, yo hoy que puesto una nota diciendo que el
codigo de Microsoft indicando como recuperar una foto en
una base de datos falla. A mi me funciona grabar una foto
en binario en una base de datos, pero al recuperarla me
va bien hasta la linea que te indico.

Esta linea es la ultima, cuando hago el
fromstream, "Parametro usado no valido"

cm.CommandText = "SP_SELECT_IMAGEN"
cm.Parameters.Clear()
cm.Parameters.Add("@Id", valor)
Try
da.Fill(ds, "BLOBTest")
Catch ex As SqlException
MsgBox(ex.Message)
End Try

Dim c As Integer = ds.Tables
("BLOBTest").Rows.Count
If c > 0 Then
Dim bytBLOBData() As Byte = _
ds.Tables("BLOBTest").Rows(0)(0)
Dim stmBLOBData As New System.IO.MemoryStream
(bytBLOBData)

stmBLOBData.Write(bytBLOBData, 0,
bytBLOBData.GetUpperBound(0) + 1)


Try
'PictureBox2.Image = Image.FromStream
(imgimagen)
'aqui me falla
PictureBox2.Image
=drawing.Image.FromStream(stmBLOBData)

Catch ex As Exception
MsgBox(ex.Message)
End Try

End If

Preguntas similares