Visual Basic.NET - Obtener imagenes de BD MySql y cargar en un objeto tipo Imagelist

 
Vista:
sin imagen de perfil

Obtener imagenes de BD MySql y cargar en un objeto tipo Imagelist

Publicado por Guillermo (42 intervenciones) el 03/03/2015 12:27:06
Hola gente! Lo primero es agradecer cualquier tipo de respuesta por vuestra parte. Os explico un poquito mis dudas:

Tengo una tabla en una base de datos MySql online llamada 'Familias' que almacena los tipos de producto de un restaurante (Carnes, pescados,entrantes.......) con su respectiva imagen png. Los campos de la tabla son:
-CodigoRes (codigo del restaurante en cuestión)
-Familiacod (codigo de familia que le asigno a cada uno)
-Descripcion (nombre de la familia, ej.: Carnes)
-Fotofam (fotografia en png de la familia. ej. para Carnes: foto de chuleton.png)

Lo que quiero hacer es lo siguiente: Tengo en un formulario un objeto de tipo 'Imagelist', que como todos sabemos sirve para almacenar imágenes que después se pueden obtener desde diferentes cuadros/listas, y lo que me gustaría es coger los campos: Descripcion y Fotofam, de los registros de la tabla 'Familias' cuyo campo CodigoRes sea igual al codigo del restaurante actual, llamémoslo: "X" (está almacenado en una variable), y almacenar dichos datos en el objeto Imagelist para después poder mostrárselos al cliente de la manera más estética posible, y que así pueda elegir los que más le gusten para su menú.

Muchas gracias por adelantado.
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
sin imagen de perfil

Obtener imagenes de BD MySql y cargar en un objeto tipo Imagelist

Publicado por Guillermo (42 intervenciones) el 03/03/2015 17:43:28
Para concretar un poco mas la pregunta os diré que yo tengo hecha la conexión remota con la base de datos, y después creo esta consulta:
1
Dim sqlquery As String = "Select descripcion,fotofam FROM Familias"
Que después ejecuto así:
1
2
Dim fotoarecuperar As MySqlDataReader
fotoarecuperar = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Pero a partir de ahí, ya no se como recuperar ni la descripción, ni la foto. El campo fotofam es un campo BLOB.
Me gustaría saber como debo almacenar tanto "descripcion", como "fotofam", y en que tipo de variables debo almacenarlas, porque quiero pasar las fotos directamente a un ImageList, con la descripcion rellenar otro tipo de objeto para listado de texto.
Sé que quizás esto esté tratado en otros post, pero he buscado y rebuscado pero no encuentro exactamente esto.
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
sin imagen de perfil

Obtener imagenes de BD MySql y cargar en un objeto tipo Imagelist

Publicado por omar (155 intervenciones) el 03/03/2015 18:10:23
Saludos

Podria ayudarte en tu problema

tienes teanviewer para realizarlo
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
sin imagen de perfil

Obtener imagenes de BD MySql y cargar en un objeto tipo Imagelist

Publicado por Guillermo (42 intervenciones) el 03/03/2015 18:33:05
Hola Omar!
Pues no tengo el teamviewer instalado la verdad. Estoy todo el dia con el tema y ahora ando buceando por el espacio de microsoft, he avanzado en lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'Iniciamos recuperacion de los campos descripcion (string) y fotofam (blob)
            Dim fotoarecuperar As MySqlDataReader
            fotoarecuperar = cmd.ExecuteReader(CommandBehavior.SequentialAccess) 'ejecutamos consulta
 
            'Con esto recuperamos el primer campo, que es la descripcion
            descripcion = fotoarecuperar.GetString(0)
 
            'Y ahora vamos a recuperar la foto
            Dim memorybits As New System.IO.MemoryStream()
            memorybits = fotoarecuperar.GetBytes(1, startIndex, outbyte, 0, bufferSize)
 
            'Cremos una variable que almacenara la imagen obtenida
            Dim bitmap As New Bitmap(memorybits)
            'Agregamos la imagen obtenida en la variable anterior al objeto ImageList
            ............

Pero no entiendo los parametros que se le pasan al .GetBytes entre paréntesis
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
sin imagen de perfil

Obtener imagenes de BD MySql y cargar en un objeto tipo Imagelist

Publicado por Guillermo (42 intervenciones) el 04/03/2015 11:38:56
Bueno, ayer estuve loco buscando la información para desarrollar lo que preguntaba aquí, porque como nadie me ha ayudado, al final en un foro de Microsoft lo encontré. Voy a dejar la información para que si alguien la necesita, como yo, no se vuelva loco buscándola! Aquí está el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
'Inicio instrucciones conexion base de datos SQL de manera remota
Dim DBCon As New MySqlConnection
'Aqui ponemos los datos de la base de datos de prueba creada en DB4FREE.NET (que es gratuita y permite
'conexiones remotas!)
DBCon.ConnectionString = "Server = DIRECCIONSERVIDORWEB; Database = NOMBREBASE; Uid= USUARIO; Pwd = CONTRASEÑA; Port=NUMEROPUERTO"
 
'Introducimos los parametros de la busqueda con el Select, que recuperará las columnas FOTOFAM (campo BLOB) 'y DESCRIPCION (string) de una tabla llamada Familias
 
Dim sqlquery As String = "Select fotofam,descripcion FROM Familias"
Dim cmd As New MySqlCommand(sqlquery, DBCon)
 
'Abrimos la conexión con la base de datos
DBCon.Open()
 
If DBCon.State = ConnectionState.Open Then 'Si hemos conectado con la base de datos hacemos lo siguiente
            'Iniciamos recuperacion de los campos descripcion (string) y fotofam (blob)
            Dim dp As New MySqlDataAdapter(cmd)
	    'Creamos un objeto dataTable
            Dim dt As New DataTable
	    'Llenamos el objeto datatable con Fill
            dp.Fill(dt)
            'Con el Rows(x) indicamos el numero del resultado que vamos a mostrar. Es decir, si hemos obtenido 25
            ' resultados, en la x indicamos el numero del resultado a mostrar
            Dim myRow As DataRow = dt.Rows(0)
            'Como lo que vamos a obtener es una foto, es decir: datos, debemos almacenarlos en un objeto
            'tipo Byte(). En la siguiente instruccion extraemos el dato numero X del campo FOTOTAM sobre 
            'el resultado obtenido con el fill. Y lo almacenamos en Mydata
            Dim MyData As Byte() = DirectCast(myRow("fotofam"), Byte())
            'Ahora viene lo bueno y dificil de encontrar! porque mucha gente coge los bytes para ordenarlos y es un rollo!    
            'Con Memorystream podemos convertir directamente los datos byte 
            'obtenidos en un objeto de fotografia
            Dim Stream = New MemoryStream(MyData)
            'Aqui asignamos a una fotografia de un formulario, llamada CAJADEFOTOS la fotografia obtenida
            cajadefotos.Image = Image.FromStream(Stream)
End if

Con el codigo anterior conectamos a una base de datos MySql remota, y hacemos una consulta sobre una tabla, que contiene un campo con fotografia y otro con descripción. Obtenemos la fotografia del primer resultado de la búsqueda y lo almacenamos en un objeto 'image' que hay en un formulario.

Para obtener la 'descripción', que es el otro campo obtenido en la búsqueda de tipo texto, sería así:

1
2
3
4
5
6
7
           'Seleccionamos el row(0) para obtener el primer resultado
            myRow = dt.Rows(0)
            'Aqui como el resultado es de tipo string, no de byte() como la imagen, lo definimos y le decimos que el campo
            'a obtener es DESCRIPCION
            Dim textito = DirectCast(myRow("descripcion"), String)
            'asignamos el resultado obtenido a una etiqueta llamada LABELNOMBRE
            Labelnombre.Text = textito

Espero que os pueda ayudar!! Un saludo.
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
sin imagen de perfil

Obtener imagenes de BD MySql y cargar en un objeto tipo Imagelist

Publicado por Guillermo (42 intervenciones) el 04/03/2015 12:29:59
Importante! se me olvidaba, para que funcionen algunas funciones de las que incorporo en el codigo debeis escribir en el 'Principal' del formulario lo siguiente, para importar las librerias que se usan

1
2
Imports MySql.Data.MySqlClient
Imports System.IO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Obtener imagenes de BD MySql y cargar en un objeto tipo Imagelist

Publicado por Pablo Jimenez (1 intervención) el 10/05/2017 23:00:05
Eres lo Máximo, me sirvio, andaba loco igual que tu jajaj, GRACIAS AMIGO
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