Hola De Nuevo ahora haremos un ejemplo simple Para Almacenar imágenes en nuestro servidor de base de datos Desde un formulario en el lenguaje desde visual basic.net
Para Esto Utilizaremos :
-
4 Button
- Un Button Para Buscar La Imagen
- Un Button Para Guardar La Imagen En La Base De Datos
- Un Button Para Visualizar Las Imágenes Guardadas En La Base De Datos
- Un Button Para Ocultar Las Imágenes Almacenadas En La Base De Datos
-
1 OpenFileDialog1
- Un OpenFileDialog Para Seleccionar Nuestra Imagen A Almacenar
-
1 DataGridView
- Un DataGridView Para Mostrarnos los datos De La Base De Datos
-
1 PictureBox
- Un PictureBox Donde Nos Mostrara Y Nos Dara Una vista Previa De las Imágenes.
-
1 Label
- Un Label Para Mostrarlos La Ruta Donde se encuentra la imagen
Bueno Con Estos Controles Crearemos Un Diseño Algo Así.
Y Bueno Ahora Para El Ejemplo Crearemos Una Base De Datos Para Este Ejemplo:
Create Database TechPeru Go Use TechPeru Go Create Table AlmacenarImagenes( Id int primary key identity(0,1), Imagen Image )
Ahora El Codigo Fuente
Imports System.Data Imports System.Data.SqlClient Imports System.IO Public Class Form1 Dim Str As String = "Data Source=.;Initial Catalog=TechPeru;Integrated Security=True" Dim Da As New SqlDataAdapter Dim Dt As DataTable Dim Cn As New SqlConnection(Str) Dim Cmd As New SqlCommand Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Size = New System.Drawing.Size(396, 412) DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect OpenFileDialog1.Filter = "Todos(*.Jpg, *.Png, *.Gif, *.Tiff, *.Jpeg, *.Bmp)|*.Jpg; *.Png; *.Gif; *.Tiff; *.Jpeg; *.Bmp" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Size = New System.Drawing.Size(396, 412) End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Size = New System.Drawing.Size(396, 591) Try Cn.Open() With Cmd .CommandType = CommandType.Text .CommandText = "SELECT * from AlmacenarImagenes" .Connection = Cn End With With Da .SelectCommand = Cmd Dt = New DataTable .Fill(Dt) DataGridView1.DataSource = Dt End With Catch ex As Exception MsgBox(ex.Message) Finally Cn.Close() End Try End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click OpenFileDialog1.ShowDialog() Label1.Text = OpenFileDialog1.FileName.ToString PictureBox1.Image = System.Drawing.Image.FromFile(Label1.Text) End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Try Cn.Open() Dim arrFilename() As String = Split(Text, "\") Array.Reverse(arrFilename) Dim ms As New MemoryStream PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat) Dim arrImage() As Byte = ms.GetBuffer With Cmd .CommandType = CommandType.Text .CommandText = "Insert Into AlmacenarImagenes(Imagen)Values(@Imagen)" .Connection = Cn .Parameters.Add(New SqlParameter("@Imagen", SqlDbType.Image)).Value = arrImage End With MessageBox.Show("Registrado Correctamente") Cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Finally Cmd.Parameters.Clear() Cn.Close() End Try End Sub Function ExtraerImagen(ByVal Foto As Integer) As Byte() With Cmd .CommandType = CommandType.Text .CommandText = "Select Imagen From AlmacenarImagenes Where id = " & Foto .Connection = Cn End With With Cn .Open() Dim MyPhoto() As Byte = CType(Cmd.ExecuteScalar(), Byte()) .Close() Return MyPhoto End With End Function Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick Try Dim ms As New MemoryStream(ExtraerImagen(CInt(DataGridView1.SelectedCells(0).Value))) PictureBox1.Image = Image.FromStream(ms) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub End Class
Y Un Video De Muestra
Espero Que Les Sirva este Ejemplo Comenten Y Punteen!! 😀 Gracias Se Aceptan Sugerencias!!
Gracias por el codigo men es lo que andaba buscando …. Thanks
Estamos Para Servirtes Y Gracias Por Comentar
una pregunta porfavorrrr este campo “ID” ME gustaria ponerle “CODIGO” y que sea de tipo alfanumérico por ejemplo “EMP001″ Pero cada vez que lo intento me sale error por favor ayúdame… este proyecto lo debo presentar de aki a 4 diasss y quiero insertar una imagen pero no puedoooo… o si tienes otro método para insertar una imagen de vb.net 2008 a sql 2008 plisss ayudenmee…….ia no se k hacerrr 😦
Hola amigo…estos tutoriales son geniales…desde paraguay te saluda Hugo Caballero…si tenes la posibilidad de alzar un tuto de como hacer un informe con parametros de fechas. ej. desde tal fecha hasta tal fecha…
Hola Hugo!! Bueno Gracias Por El Comentario!! bueno Quieres Realizar Informes Con Fechas!!! Seria Genial Pero Reportes A Base De Crystal Reports? O sobre Una Grilla?
Gracias!!
Por los dos tipos seria fantastico
Muy bueno Me sirvio de mucho, ojala hagas uno que almacene en una carpeta las imagenes y las muestre igual que este
Hola cesar Muy Interesante tu pregunta trabajaremos en eso .. en estos dias lo colgaremos!!
HEy men que tal tus tutoriales estan increibles de 100%% estaria maravilloso que unieras tus codigps es decir hacer un BD en SQL server y VB.NET que agregara registros desde vb.net igual agregara una foto referente a lo que se registro en VB.NET y al realizar la busqueda rapida o filtrado de datos mientras se escribe algun dato te lo busque inmediatamente y te coloque la foto de quien es como el regitro para una escuela nombre,apellido,edad, FOTO, y asi agilizar la busqueda de ese regitro mientras se escribe a quien quiero buscar filtado de datos con el ya conocido comando ‘LIKE’ seguramente lo debes de conocer estaria supermegaincreible que hicieras eso estaria de 100000%%% espero me reposndas men saludos XD….:)…..XD algo parecido como lo ke esta en este video de este link ::: http://www.youtube.com/watch?v=rIxHIzuvFnY
Lei Tu Comentario Y Me Parece Estupendo Supongamos Pero Ya existen Posts!! Donde Se Realizan Busquedas.
En Este Post https://techperu.wordpress.com/2011/08/16/buscar-datos-y-mostrarlos-vb-net-sql-server/
Solo Tendrias Que Agregar Un Campo Mas Es Que El De Imagen Y Seguir Estas Instrucciones!!!! Gracias!!! X LAs Sugerencias
EXACTO LO que dice el comentario de arriba estaria bien que hicieras una BD EN SQL EERVER Y VB.NET QUE BUSCARA MEDIANTE FILTADO DE DATOS Y AGREGAR REGISTROS E IMAGENES ….
HOLA tu tutoriales esta extraordinarios estaria inclreible que hicierN UN BD EN SQL Server y VB.NET que agregara registros e imagenes como por ejemplo de una escuela que agregara desde VB.NET nombre,apellido,edad,FOTO etc y que lo guardar en la BD DE SQL SERVER y que al momemto de consulata o buscar algun registro lo hiciera mientras escribo basado en enl comando ‘LIKE’ que creo ya conoces filtado de datos o busqueda rapida mientras escribes estari sorprendente XD…:) algo parecido a lo ke esta en este video de este link….::: http://www.youtube.com/watch?v=rIxHIzuvFnY
saludos espero me respondas men¡¡¡¡¡¡¡¡
Lei Tu Comentario Y Me Parece Estupendo Supongamos Pero Ya existen Posts!! Donde Se Realizan Busquedas.
En Este Post https://techperu.wordpress.com/2011/08/16/buscar-datos-y-mostrarlos-vb-net-sql-server/
Solo Tendrias Que Agregar Un Campo Mas Es Que El De Imagen Y Seguir Estas Instrucciones!!!! Gracias!!! X LAs Sugerencias
Igual Que Nestor Pero Si Les Gusta Posteare Algo Que Haga Lo Que Dicen !! Gracias
Ya he usado este codigo, pero el campo de la imagen se queda en blanco, no nulo, sino vacio, no muestra ningun error y guarda perfecto los demas campos de la tabla, menos la imagen… Estoy usando VB 2005 y SQL server EXPRESS 2005, tendrá algo que ver? Help me.
Uhmm Que Raro………… Me Puedes Enviar TU Proyecto Con Un Backup Y Personalmente Lo Vere Gracias!!
Excelente turorial!
Mejor explicame para que sirven estas lineas:
Dim arrFilename() As String = Split(Text, «\»)
Array.Reverse(arrFilename)
Dim ms As New MemoryStream
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
Dim arrImage() As Byte = ms.GetBuffer
Las entiendo, digamos superficialmente… noc si me entiendas..
Como se si realmente me esta almacenando algo??
Para que es el array.reverse?
Que tal Luis Batista, primeramente agradezco tu codigo, lo he probado y funciona bien, pero tengo duda: las lineas
Dim arrFilename() As String = Split(Text, «\»)
Array.Reverse(arrFilename)
creo no se usan en el codigo, las elimine y sigue funcionando, esto es correcto ??
en respuesta a la duda del amigo anonimo:
Dim ms As New MemoryStream
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
Dim arrImage() As Byte = ms.GetBuffer
estas lineas crean un espacio de memoria que sirve para guardar temporalmente la imagen del picturebox en byte, para posteriormente grabarla.
saludos y espero puedas reponder a mi duda.
Jose Luis
P.D. como te puedo puntear ??
Holq Que tal como estas espero poder solucionar tus dudas buenoo…
La Linea
Dim arrFilename() As String = Split(Text, “\”)
Array.Reverse(arrFilename)
Esta DeMas es que como tenia un ejemplo de estos en otro formulario… No tiene nada k ver en el ejemplo
Es Correcto Lo Que Tu Dices De las Lineas
Dim ms As New MemoryStream
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
Dim arrImage() As Byte = ms.GetBuffer
Basicamente!! Vuelve La Imagen que se guarda en el picturebox en tipo byte para asi almacenar en la bd que tiene el campo byte!!
Gracias por el aporte pero podrias explicarme o pasarme el codigo de como puedo llevarlo a asp.net utilizando el mismo vb.net porfavor … gracias!
El Código Esta Ahí Y Si Lo Kieres Llevar A Asp.Net Bueno El Procedimiento Es Parecido!! No Lo Eh Intentado Aun Pero Debe Ser!! Gracias Pero T Mandare El Codigo Fuente Saludos Y Gracias !!
Que tal Luis, tengo una duda, usando este mismo ejemplo, veo que las imagenes del datagridview se ven pequeñas al tamaño del renglon.
Tu sabes como se puede hacer para que las imagenes del datagridview se muestren en un tamaño determinado dentro del datagridview ??
hay alguna propiedad stretch o algo asi ??.
De antemano muchas gracias por tu apoyo.
Saludos
Jose Luis
Uhmmmm La Verdad es primera vez Que me pongo a ver eso buscare informacion sobre esto y posteare Algo si encuentro
Que tal Luis, Agradezco atencion y tus comentarios. Respecto al Datagridview y las imagenes, de momento lo he solucionado agrandando los renglones desde las propiedades del modo de diseño y ademas hice una rutina para cargar una imagen en un picturebox y despues grabarla en un nuevo archivo con las dimensiones que requiero para la presentacion del datagridview, por lo que ahora todas las imagenes son del mismo tamaño y se presentan correctamente.
Agradezco tu apoyo y bueno si en algo puedo ayudar, aqui estare al pendiente. Saludos y nuevamente gracias.
Hola oye una pregunta no tienes un codigo para escanear en visual basic 10.net, estoy batallando mucho y aque no hay muchas aplicaciones para este lenguaje
Mire unos tutoriales y en ellos aparece una biblioteca que se llama twainHandler.vb de casualidad no la tendras
espero verme favorecido en tu respuesta
bakan esta saludos quisiera saber como diablos guardo la informacion completa que se carga en el fileupload en la base de datos y luego la presento paso a paso soy novato en esto…………
Hola buenas noche recien descubro su pagina y muy buena de verdad felicitaciones ahora lo que quisiera saber si pudieran hacerlo es como almacenar o sea un mantenimeinto completo con imagenes pero con procedimientos almacenados , se como hacer mantenimeinto insertar actualizar, eliminar datos con Procedures pero a esos procedures incluri imagenes
Si Es Posible Con PA.!!
Hola Hugo muy interesante el tutorial pero cuando lo ejecuto me dice que es imposible convertir un entero en byte
Dim ms As New MemoryStream(ExtraerImagen(CInt(DataGridView1.SelectedCells(0).Value)))trabajo con sqlserver 2005 y visual studio 2008
luis, primero que todo te quiero agradecer por el post, y como segundo punto tengo una pregunta, hay alguna posibilidad de ver la imagen nuevamente en un picturoox, es decir, ya la guarde, pero ahora la quiero volver a ver, se puede hacer???
gracias
buena vacan excelente código gracias 🙂
hola buenas soy nuevo en el manejo de vb.net y me gustaria aque explicaras mejor la forma de como crear la base de datos donde lo haces en el video no muestras ese proceso espero tu respuesta lo mas pronto posible gracias
Exelente Programa
Hola Buenos Días.
Les agradezco inmensamente. Este tuto me ha servido de mucho. Mil gracias.
Una pregunta, como seria el código para aliminar una image.
Gracias
hola que tal. mira muy interesnte este tema, pero quisiera saber si me puedes ayudar, necesito guardar archivos pdf en un campo de una base de datos, asi como tambien necesito luego poder extraerlo y visualizarlo, lo unico es que estoy usando una base de datos mysql, porfa ayudame
Hola que tal, felicidades, un gran trabajo.
una consulta estoy trabajando con vb.net y mysql, quisiera saber si me puedes ayudar para hacer este mismo tipo de ejemplo pero con documentos pdf, es que lo necesito para un trabajo del cole …
es decir que en ves de que sean imagenes , se almacene otro tipo de archivo, puede ser pdf u otro tipo y que la base de datos sea en mysql.
por favor ayudame con eso, he encontrado cientos de ejemplos con imagenes pero ninguna que me de solucion con otro tipo de archivos..
gracias de antemano..
BUENASO MI PANA, SALUDOS DESDE ECUADOR
Gracias por el codigo, pero a mi me manda un error al momento de llamar la imagen del grid. Me manda el siguiente error
{«La conversión del tipo ‘Byte()’ en el tipo ‘Integer’ no es válida.»}
Me podrias decir por que?
gracias
donde se coloca el codigo para la base de datos????
gracias este codigo me saco de apuros esta muy bien es cuestion de que lo peguen y listo gracias mil gracias
hola raul checa bien en tu base de datos en especificacion de la identidad te aparese como «no» tu cambiaselo a «si» y listo con eso ya debe de funcionar
GRACIAS POR EL CODIGO, ME GUARDA UY ME AÑADE LA IMAGEN PERFECTAMENTE PERO CUANDO DEVUELVO LA COLSULTA PARA QUE ME APARECAN TODOS LOS DATOS ME DICE QUE QUE UN TIPO BAY NO RPUEDE CONVRTIRSE A STRING
LA QUIERO VOLVEL A VER ,SI PUEDE MANDAME ES CODIGO POR FA
yo trabajo con un el servidor phpmyadmin y en la conexion si trabajo con una conexion de sql..como lo convierto a string
Exelente trabajo felicitaciones amigo, estas entre los pesados, Bien mi pregunta es la siguiete.
Primeramente te felicito por la aplicación, pero hay una pequeña falla al querer insertar una imagen. si no seleccionas una imagen y si le das cancelar da error
Hola buenas noches esta genial la pagina la comprendi mejor que al profesor jeje aunque me gustaria saber como hago lo mismo pero en asp.net gracias
una pregunta porfavorrrr este campo «ID» ME gustaria ponerle «CODIGO» y que sea de tipo alfanumérico por ejemplo «EMP001» Pero cada vez que lo intento me sale error por favor ayúdame… este proyecto lo debo presentar de aki a 4 diasss y quiero insertar una imagen pero no puedoooo… o si tienes otro método para insertar una imagen de vb.net 2008 a sql 2008 plisss ayudenmee…….ia no se k hacerrr 😦
HEY STANKYOU BROTHER CONGRATULATIONS FOR YOU
Muy buen ejemplo. Me sirvió de mucho. Muchas gracias.
hola buenas…. estuve viendo este codigo.. y realmente me da una idea de como realizar lo q necesito pero no he podido realizarlo xD..
si pudiesen ayudarme please….
miren estoy haciendo un formulario
en el cual si se dan cuenta abajo tengo unos form uploadfile….
de esa manera no se como ralizarlo para q me guarde el archivo q selecciono en la base de datos….
tenia algo asi…. he intentado con varios codigos encontrados en internet, pero no puedo realizarlos…
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Try
‘abrir conexión
con.Open()
‘declarar variables
Dim foto As Byte
Dim sql As String
foto = uploadfoto.FileName
‘sentencia SQL
sql = «INSERT INTO Table1 VALUES (‘» & foto & «‘) »
‘creo objeto command
Dim command As New SqlCommand(sql, con)
‘ejecuto sentencia sql
command.ExecuteNonQuery()
Catch ex As Exception
Finally
‘lblIngresar.Visible = True
con.Close()
End Try
espero puedan ayudarme……
hola ..gracias por el codigo ,,,usted sabe com almacenar una imagen en una variable para mandarsela a un insert desde una clase
muchas gracias por tomarte el tiempo y que nosotros los que no tenemos ese conocimiento podamos aprender un poco mas cada dia…
Al devolver la imagen guardada en la grilla me muestra un error «La conversión del tipo ‘Byte()’ en el tipo ‘Integer’ no es válida.» ayuda please
Gracias
Hola!! muy util tu publicacion disculpa me podrias mandar el codigo me seria de mucha ayuda!
mi correo es
axon_91@hotmail.com
gracias de ante mano
SALUDOS!!!
Saludos disculpa una pregunta, el bton para buscar la imagen y mostrarla me funciono muy bien, a la hora de almacenarla y mostrar el datagrid es cuando me sale un problema que me dice queno se pudpo conectar con el servidor de base de datos me podrias ayudar???
gracias de ante mano
En el error {“La conversión del tipo ‘Byte()’ en el tipo ‘Integer’ no es válida.”}
Cambiar
Dim ms As New MemoryStream(ExtraerImagen(CInt(DataGridView1.SelectedCells(0).Value)))
Por :
Dim ms As New MemoryStream(ExtraerImagen(CInt(DataGridView1.Rows(e.RowIndex).Cells(0).Value)))