VB.NET 2010 Download de archivos binarios en DataGridView desde MySQL

Iniciado por el_cantante, 23 Agosto 2015, 14:15 PM

0 Miembros y 1 Visitante están viendo este tema.

el_cantante

Hola!
Tengo un DataGridView en el que elenco una serie de archivos binarios (PDF), que se encuentran guardados en una tabla de un database MySQL.
Las columnas de la tabla son las siguientes (El archivo binario se encuentra en la columna allegato):

matricola   int(11)
matricola_old   int(11)
nome_file   text
file_size   decimal(20,0)
allegato   longblob
extension   text
data   text

Mi problema es que no se como hacer para descargar estos archivos, intente hacer que una de las columnas tenga la propiedad DataGridViewLinkColumn, o bien agregar otra columna con un button pero la verdad es que me estoy perdiendo...

Este es el codigo que uso, donde carga los archivos binarios:


Dim Query As New MySqlCommand
                    Dim Conexion As MySqlConnection
                    Dim Consultar As MySqlDataReader
                    Dim Sql As String = "Server=172.XX.XX.XX;User Id=XXX;Password=XXX;Database=sicurezza"
                    Dim query_Adapter2 As String
                    If ComboBox7.Text = "matricola_old" Then

                        query_Adapter2 = "SELECT dipendenti_allegati.nome_file, dipendenti_allegati.data, dipendenti_allegati.allegato As Allegato FROM dipendenti_allegati INNER JOIN dipendenti ON dipendenti_allegati.matricola = dipendenti.matricola  WHERE dipendenti." & ComboBox7.Text & " = " & TextBox17.Text & ""
                    Else
                        query_Adapter2 = "SELECT dipendenti_allegati.nome_file, dipendenti_allegati.data, dipendenti_allegati.allegato As Allegato FROM dipendenti_allegati INNER JOIN dipendenti ON dipendenti_allegati.matricola = dipendenti.matricola  WHERE dipendenti." & ComboBox7.Text & " LIKE '%" & TextBox17.Text & "%'"
                    End If

                    Conexion = New MySqlConnection()
                    Conexion.ConnectionString = Sql
                    Conexion.Open()
                    Query.CommandText = query_Adapter2
                    Query.Connection = Conexion
                    Consultar = Query.ExecuteReader
                    While Consultar.Read

                    Dim File As String = Consultar(0).ToString
                    Dim Data As String = Consultar(1).ToString
                    Dim texto As String = Consultar(2).ToString
                    Dim Allegato As String = Consultar(3).ToString
                    DataGridView4.Rows.Add(File, texto, Data, Allegato)
                    DataGridView4.Refresh()
                End While


Por favor alguien me podría ayudar o darme alguna sugerencia?

Gracias

Saludos!

El sistema del zapping mental en su apogeo, donde las horas pasan con la velocidad de la vida. No es el mismo domingo del principio, es un domingo anterior, otra temporada en el infierno, siete di­as atras.

el_cantante

Aquí la solución por si a alguien mas puede ser de ayuda:



Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click

        Dim conn As New MySqlConnection
        Dim cmd As New MySqlCommand
        Dim myData As MySqlDataReader
        Dim SQL As String
        Dim rawData() As Byte
        Dim FileSize As UInt32
        Dim fs As FileStream


        conn.ConnectionString = "Server=8.8.8.8;User Id=xxx;Password=xxxx;Database=sicurezza"
           


        SQL = "select allegato, file_size, nome_file from dipendenti_allegati where nome_file=" _
                                              & """Licenze Kaspersky 2014.pdf"""


        Try
            conn.Open()

            cmd.Connection = conn
            cmd.CommandText = SQL

            myData = cmd.ExecuteReader

            If Not myData.HasRows Then Throw New Exception("There are no BLOBs to save")

            myData.Read()

            FileSize = myData.GetUInt32(myData.GetOrdinal("file_size"))
            rawData = New Byte(FileSize) {}

            myData.GetBytes(myData.GetOrdinal("allegato"), 0, rawData, 0, FileSize)

            fs = New FileStream("C:\Users\yo\Desktop\" & myData.GetString(myData.GetOrdinal("nome_file")), FileMode.OpenOrCreate, FileAccess.Write)
            fs.Write(rawData, 0, FileSize)
            fs.Close()


            MessageBox.Show("Archivo guardado!", "OK!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)


            myData.Close()
            conn.Close()
        Catch ex As Exception
            MessageBox.Show("Error: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub



Saludos!  ;-)
El sistema del zapping mental en su apogeo, donde las horas pasan con la velocidad de la vida. No es el mismo domingo del principio, es un domingo anterior, otra temporada en el infierno, siete di­as atras.

n3n3

Hola espero me puedas ayudar, lo que yo intento hacer es algo parecido pero que me muestre en un treeview carpetas y subcarpetas de mi pc en una ruta especifica y que me despliege los archivos PDF al dar doble click me lo descarge o me de la opcion de guardarlo me seria de mucha ayuda un ejemplo o si me puedes contactar por facebook.

Gracias
"Todo lo que somos es el resultado de lo que hemos pensado; está fundado en nuestros pensamientos y está hecho de nuestros pensamientos."

el_cantante

El sistema del zapping mental en su apogeo, donde las horas pasan con la velocidad de la vida. No es el mismo domingo del principio, es un domingo anterior, otra temporada en el infierno, siete di­as atras.