elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [SOLUCIONADO]Insertar imagen en access
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO]Insertar imagen en access  (Leído 14,000 veces)
diego_lp

Desconectado Desconectado

Mensajes: 180


In a free world, who needs gates and windows?


Ver Perfil WWW
[SOLUCIONADO]Insertar imagen en access
« en: 1 Enero 2010, 17:02 pm »

Hola gente, estoy intentando guardar una imagen en access para usarla en un crystal report, segun tengo entendido cystal report no soporta imagenes directamente por lo que tienen que estar en formato byte(), eh logrado convertir una imagen en byte pero no logro insertarla en mi base de datos, alguien me puede ayudar?
Bueno gracias, saludos.
Ah y feliz año!  ;D


« Última modificación: 3 Enero 2010, 21:43 pm por diego_lp » En línea

Los programadores hicimos un pacto con Dios, él no hace sistemas y nosotros no hacemos milagros!
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.706


WOS & Khan & Calero LDN


Ver Perfil WWW
Re: Insertar imagen en access
« Respuesta #1 en: 1 Enero 2010, 20:29 pm »

Guardando imágenes en la BD



Para almacenar una imagen en la base de datos, hemos de leer el archivo que la contiene en forma de stream binario. Para ello, utilizamos la clase BinaryReader, con la que a partir de un objeto FileStream podremos obtener los bytes que forman el archivo. En la aplicación de ejemplo, tras pulsar el botón "Guardar Imagen en BD" y elegir un archivo de tipo bmp, jpg o gif, se ejecuta el siguiente código (en la función btnGuardar_Click de frmImagenes):

VB
Código:
Dim fs As System.IO.FileStream = New FileStream(ofdDataBase.FileName, FileMode.Open, FileAccess.Read)
Dim br As New System.IO.BinaryReader(fs)
Dim abImagen As Byte() = New Byte(fs.Length - 1) {}
br.Read(abImagen, 0, CInt(fs.Length))
br.Close()
fs.Close()

C#
Código:
System.IO.FileStream fs=new FileStream(ofdDataBase.FileName,FileMode.Open,FileAccess.Read);
System.IO.BinaryReader br = new System.IO.BinaryReader(fs);
byte [] abImagen=new byte[fs.Length];
br.Read(abImagen,0,(int)fs.Length);
br.Close();
fs.Close();

En primer lugar se crea un objeto FileStream apuntando al fichero que hemos seleccionado. Sobre este objeto se crea un  BinaryReader, con el que podremos leer los bytes del la imagen y almacenarlos en un array de bytes (abImagen) del mismo tamaño que el fichero. Este array es el que enviamos a la clase DBAccess  para ser almacenado mediante el método GuardarImagen:

VB
Código:
Public Function GuardarImagen(ByVal abImagen As Byte()) As Boolean
    Dim comm As New OleDbCommand("INSERT INTO imagenes (imagen) VALUES (?)", conn)
    Dim parImagen As New OleDbParameter("@imagen", OleDbType.VarBinary, abImagen.Length)
    parImagen.Value = abImagen
    comm.Parameters.Add(parImagen)
    conn.Open()
    Dim iResultado As Integer = comm.ExecuteNonQuery()
    conn.Close()
    Return Convert.ToBoolean(iResultado)
End Function

C#
Código:
public  bool GuardarImagen(byte  [] abImagen){
   OleDbCommand comm=new OleDbCommand("INSERT INTO imagenes (imagen) VALUES (?)",conn);
   OleDbParameter parImagen=new OleDbParameter("@imagen", OleDbType.VarBinary,abImagen.Length);
   parImagen.Value=abImagen;
   comm.Parameters.Add(parImagen);
   conn.Open();
   int iResultado=comm.ExecuteNonQuery();
   conn.Close();
   return Convert.ToBoolean(iResultado);
}

En este método, creamos un nuevo objeto OleDbCommand para ejecutar la INSERT en la base de datos. El parámetro que precisamos enviar es el array de bytes, por lo que en el tipo de dato del parámetro indicamos VarBinary (datos binarios de longitud variable).

La función devuelve un tipo booleano indicando si se ha efectuado o no la inserción en la base de datos. Como he comentado más arriba, no hay ningún tipo de control de errores en esta aplicación de ejemplo, algo que es indispensable en una real.

Fuente: http://www.elguille.info/colabora/puntoNET/mack_imagenesAccess.htm

Saludines!


« Última modificación: 1 Enero 2010, 20:31 pm por Shell Root » En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
diego_lp

Desconectado Desconectado

Mensajes: 180


In a free world, who needs gates and windows?


Ver Perfil WWW
Re: Insertar imagen en access
« Respuesta #2 en: 3 Enero 2010, 21:43 pm »

Muchas gracias Shell Root
Había encontrado ese mismo en lace buscando en google pero no había logrado pasarlo correctamente del todo a visual basic y que esta todo en C#  :D
Ahora si pude.
Problema resuelto.
Muchas gracias  ;-)
En línea

Los programadores hicimos un pacto con Dios, él no hace sistemas y nosotros no hacemos milagros!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(solucionado)[VB6] Insertar control permanente en la ToolBox
Programación Visual Basic
SuperDraco 3 2,180 Último mensaje 16 Julio 2011, 01:08 am
por raul338
(Solucionado)Insertar datos en un textarea
Desarrollo Web
Zeroql 3 8,214 Último mensaje 23 Julio 2011, 20:52 pm
por Zeroql
[Solucionado]Insertar columna en listview (dialogboxparam)
ASM
.:UND3R:. 0 1,279 Último mensaje 12 Mayo 2013, 18:15 pm
por .:UND3R:.
Insertar Objeto OLE en Access
Programación General
R3Z 0 811 Último mensaje 29 Noviembre 2015, 23:36 pm
por R3Z
Insertar Objeto OLE en Access (Actualizado)
.NET (C#, VB.NET, ASP)
R3Z 0 978 Último mensaje 30 Noviembre 2015, 00:26 am
por R3Z
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines