Visual Basic.NET - Como leer y escribir una imagen SQL Server 2000??

 
Vista:

Como leer y escribir una imagen SQL Server 2000??

Publicado por Jorge Jiménez (1 intervención) el 21/10/2002 19:14:40
Hola, alguien me puede ayudar a saber como lograr esto de manera sencilla, ya le he probado con MemoryStream, pero me marca errores al leer del campo de tipo Image, por fa si alguien sabe se lo agradeceré. La interface es VB .NET con SQL 2000
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como leer y escribir una imagen SQL Server 2000

Publicado por Jose Luis Gonzalez (1 intervención) el 02/04/2009 11:27:10
Hola, prueba con esto:

Para leer:

Debes obtener el campo que contiene la imagen, así como sus tamaño, haciendo una consulta parecida del estilo "select campoImagen, datalength(campoImagen) as len from imagenes)"

Luego, necesitarás una variable tipo integer para guardar el tamaño de la imagen, donde almacenar el campo "len" que te ha devuelto la consulta anterior.

Necesitarás también un array de bytes para almacenar el campo de la imagen devuelto por la consulta. Para leerlo tienes que hacer lo siguiente:

Dim bImg() As Byte 'Donde tengas declaradas el resto de variables

ReDim bImg(aux) 'Cuando hayas rellenado la variable aux

luego, por ejemplo "bImg=ds.tables(0).rows(0).item("imagen")". Esta linea puede variar en función de los objectos de conexion a sql server que utilices, en este ejemplo utilizo el system.data.sqlClient del .Net Framework 1.1.

Finalmente necesitaras un MemoryStream para convertir la imagen a un objeto image:

Dim ms As new MemoryStream
Dim img As Image

ms.Write(bImg, 0, aux)
img = Image.FromStream(ms)

Y ya tienes la imagen de la base de datos convertida a un objeto image de vb.net.

Para Escribir:

Suponiendo que tengas la imagen en un archivo, necesitaras un objeto fileStream para leer la imagen y otro FileInfo para obtener el tamaño. Además necesitarás un array de bytes para convertir la imagen antes de pasarsela al sql server:

' Primero declaras el fileStream y cargas la imagen
Dim imgStream As new FileStream("c:ejemplo.jpg", FileMode.Open)

'Luego declaras el FileInfo que necesitaremos para obtener el tamaño de la imagen
Dim imgInfo As New FileInfo("c:ejemplo.jpg")

' Ahora cargamos la imagen en el array de bytes
Dim imgByte(convert.toInt32(imgInfo.Length)) As Byte

imgStream.Read(imgByte, 0, len)
imgStream.Close()

Finalmente, lo almacenas en el campo de la base de datos:

Dim newRow As DataRow

newRow = ds.Tables("Imagenes").NewRow
newRow.Item("imagen") = imgByte

Espero que te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar