Guardar imagen en SQL Server

18/08/2004 - 12:57 por Oscar | Informe spam
Hooolas,

Pues lo dicho, quiero guardar una imagen en un campo de una
base de datos SQL Server 2000. He probado lo siguiente pero
no me sale...

Dim fs As FileStream = New FileStream(filePath,
FileMode.Open, FileAccess.Read)
*** En filePath está la ruta de la foto en cuestión ***
Dim br As BinaryReader = New BinaryReader(fs)

Dim photo() As Byte = br.ReadBytes(fs.Length)

br.Close()
fs.Close()

*** Ahora la intento guardar en la BBDD ***

Dim cn As New SqlConnection(cadenaConexión)
Dim UPDATESocio As SqlCommand

UPDATESocio = New SqlCommand _
("UPDATE Socios SET FotoSocio = @FotoSocio" & _
" WHERE NumLicencia = @NumLicencia", cn)

UPDATESocio.Parameters.Add("@FotoSocio", SqlDbType.Image,
v_obSocio._FotoSocio.Length).Value = v_obSocio._FotoSocio

cn.Open()

UPDATESocio.ExecuteNonQuery()

cn.Close()

*** El campo de la BBDD lo he creado como image ***

*** Bueno pues eso es el resumen del código que tengo
hecho. Resumen pq entre otras cosas la sentencia SQL era
muucho más larga... ***

*** El error que me devuelve cuando le doy al botón guardar
es el siguiente --> "Los datos de cadena o binarios se
truncarían. Se terminó la instrucción." ***

Pues ahí está mi duda...

Muuuchas gracias y perdonad las molestias...

saludos

adios
 

Leer las respuestas

#1 Luis Cisneros
18/08/2004 - 14:00 | Informe spam
Hola!

Visto de un Post de Juan Carlos Badiola el 22/03/2003

Para grabar la imagen (en Sql es igual, cambiando OleDb
por Sql)

Dim stream As New MemoryStream()
imagen.Save(stream, ImageFormat.Jpeg)
Dim comando As New OleDbCommand("UPDATE Tabla SET Imagen
= @Imagen WHERE
...")
comando.Parameters.Add("@Imagen", stream.GetBuffer())
comando.Connection = OleDbConnection1
OleDbConnection1.Open()
comando.ExecuteNonQuery()
OleDbConnection1.Close()


Para recuperarla:

Dim comando As New OleDbCommand("SELECT Imagen FROM Tabla
WHERE ...")
comando.Connection = Me.OleDbConnection1
OleDbConnection1.Open()
Dim bytes As Byte() = CType(comando.ExecuteScalar(), Byte
())
Dim stream As New MemoryStream(bytes)
PictureBox2.Image = Image.FromStream(stream)
OleDbConnection1.Close()


Saludos.
Luis Cineros

Hooolas,

Pues lo dicho, quiero guardar una imagen en un campo de


una
base de datos SQL Server 2000. He probado lo siguiente


pero
no me sale...

Dim fs As FileStream = New FileStream(filePath,
FileMode.Open, FileAccess.Read)
*** En filePath está la ruta de la foto en cuestión ***
Dim br As BinaryReader = New BinaryReader(fs)

Dim photo() As Byte = br.ReadBytes(fs.Length)

br.Close()
fs.Close()

*** Ahora la intento guardar en la BBDD ***

Dim cn As New SqlConnection(cadenaConexión)
Dim UPDATESocio As SqlCommand

UPDATESocio = New SqlCommand _
("UPDATE Socios SET FotoSocio = @FotoSocio" & _
" WHERE NumLicencia = @NumLicencia", cn)

UPDATESocio.Parameters.Add("@FotoSocio", SqlDbType.Image,
v_obSocio._FotoSocio.Length).Value = v_obSocio._FotoSocio

cn.Open()

UPDATESocio.ExecuteNonQuery()

cn.Close()

*** El campo de la BBDD lo he creado como image ***

*** Bueno pues eso es el resumen del código que tengo
hecho. Resumen pq entre otras cosas la sentencia SQL era
muucho más larga... ***

*** El error que me devuelve cuando le doy al botón


guardar
es el siguiente --> "Los datos de cadena o binarios se
truncarían. Se terminó la instrucción." ***

Pues ahí está mi duda...

Muuuchas gracias y perdonad las molestias...

saludos

adios
.

Preguntas similares