IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Mysql insertion photos et transferer le blob vers une picture box [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Indépendant
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Par défaut Mysql insertion photos et transferer le blob vers une picture box
    Bonjour à tous,

    Je sais je sais, le sujet a du être largement traité.
    J'ai vue et essayé deux trois trucs mais je me heurte à mon incompréhension...
    Je n'arrive pas à inserer une photo dans ma base mysql
    donc comme le dis la chanson j'ai essayé un truc ou deux et voici le code de mon dernier essais

    Dans un button voici ce que j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    '  ouvre une boite de dialogue pour récupérer le chemin et le nom du fichier
     Dim dlgOuvrir As OpenFileDialog
            Dim cheminAcces As String
            dlgOuvrir = New OpenFileDialog()
            dlgOuvrir.InitialDirectory = "c:\dos"
            dlgOuvrir.Title = "selection du fichier à ouvrir"
            dlgOuvrir.Filter = "tous|*.*|Images|*.bmp;*.gif;*.jpg|texte|*.txt;|PDF|*.pdf|Msword2003|*.doc|Msword2007|*.docx"
            dlgOuvrir.DefaultExt = "toto"
            dlgOuvrir.AddExtension = True
            dlgOuvrir.CheckFileExists = False
            dlgOuvrir.Multiselect = True
            dlgOuvrir.ShowDialog()
            cheminAcces = dlgOuvrir.FileName
            If (cheminAcces IsNot Nothing) Then
        'textbox se rempli bien avec nom du fichier etc        
    TextBox34.Text = cheminAcces
            End If
    connection à la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            Dim oConn As MySqlConnection
            Dim myCommand As New MySqlCommand
            Dim SQL As String
            Dim rawData() As Byte
            Dim fs As FileStream
            Dim sPath As String
     
            oConn = New MySqlConnection()
            oConn.ConnectionString = "server =127.0.0.1;user id=xxxxxx; password='yyyyyyy';database= PMV"
     
            sPath = TextBox34.Text
    Et là en fait je ne comprend pas bien le code donc j'ai deja bidouillé un peu mais sans trop comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fs = New FileStream(sPath, FileMode.Open, FileAccess.Read)
            rawData = New Byte(fs.Length) {}
            fs.Read(rawData, 0, fs.Length)
            fs.Close()
     
            myCommand.Connection = oConn
            SQL = "UPDATE bien SET bien.plomb = ?"
    ok le ? est une variable mysql si je ne me trompe ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Try
                oConn.Open()
     
                myCommand.CommandText = SQL
                myCommand.Parameters.AddWithValue("diagnostic", rawData)
                myCommand.ExecuteNonQuery()
            Catch myerror As MySqlException
                MessageBox.Show("Error Connecting to Database: " & myerror.Message)
            Finally
                oConn.Dispose()
            End Try
    Et là j'ai une jolie fatale error sans autres forme de procès
    sql encountering fatal error during the acces to the database
    donc le code fonctionne (en tout cas pas d'erreur VB)


    et là si quelqu'un veut bien m'expliquer je luie paye un sachet de cahouette

    merci bcp à tous

  2. #2
    Membre du Club
    Homme Profil pro
    Indépendant
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Par défaut
    pour info je pensais que mettre entre quote le '?' marcherait.
    il est tard et je n'avais pas compris que ceci serait interpréter comme une valeur et non comme une variable.
    je suis toujours au point de départ pour cette nuit je lâche l'affaire ....

    merci pour votre aide

  3. #3
    Membre du Club
    Homme Profil pro
    Indépendant
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Par défaut réponse à la partie Insert / update
    bon après avoir réfléchi un peu j'ai viré le ? et je l'ai remplacé par @bindata puis dans la section addwithvalue j'ai placé la variable identique

    Ca marche donc y a plus qu'à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    myCommand.CommandText = "UPDATE bien SET bien.plomb = @bin_data where bien.idbien = '11' ;"
     
            Try
     
                oConn.Open()
                myCommand.Parameters.AddWithValue("@bin_data", rawnData)
                myCommand.ExecuteNonQuery()
            Catch myerror As MySqlException
                MessageBox.Show("Error Connecting to Database: " & myerror.Message)
            Finally
                oConn.Dispose()
            End Try
    Au passage j'ai rencontré un pb avec max_allowed_packet la variable mysql qui bloque un envoie massif de packet dans la base, donc il faut modifier cette valeur. j'ai utilisé mysqlworkbench pour ce faire ne pas oublier de redémarrer le server après la modif!

    bn a tous

  4. #4
    Membre du Club
    Homme Profil pro
    Indépendant
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Par défaut deuxieme etape : la recherche
    bon j'en suis à travailler sur l'affichage de l'image via une requete select donc le post n'est toujours pas résolu.
    Je mettrai mon code en ligne rapidement pour vous dire ou je coince ... mais si quelqu'un a déja un code prémaché je suis preneur

  5. #5
    Membre du Club
    Homme Profil pro
    Indépendant
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Par défaut Solution à la partie 2
    Bon j'ai trouvé la solution pour la partie deux . en voici le code Mais avant tout retenez qu'il est plus commode quand vous stockez des objets dans une base d'ajouter un champ taille de l'objet

    la base comporte un ID en INT un champ plomb en longblob et un champ tailleplomb en INT enfin je fais un select sur une clef etrangere donc pas la peine d'en tenir compte

    1) code pour insérer un objet dans la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    '  ouvre une boite de dialogue pour récupérer le chemin et le nom du fichier
     Dim dlgOuvrir As OpenFileDialog
            Dim cheminAcces As String
            dlgOuvrir = New OpenFileDialog()
            dlgOuvrir.InitialDirectory = "c:\dos"
            dlgOuvrir.Title = "selection du fichier à ouvrir"
            dlgOuvrir.Filter = "tous|*.*|Images|*.bmp;*.gif;*.jpg|texte|*.txt;|PDF|*.pdf|Msword2003|*.doc|Msword2007|*.docx"
            dlgOuvrir.DefaultExt = "toto"
            dlgOuvrir.AddExtension = True
            dlgOuvrir.CheckFileExists = False
            dlgOuvrir.Multiselect = True
            dlgOuvrir.ShowDialog()
            cheminAcces = dlgOuvrir.FileName
            If (cheminAcces IsNot Nothing) Then
        'textbox se rempli bien avec nom du fichier etc        
    TextBox34.Text = cheminAcces
            End If
    Dim oConn As MySqlConnection
            Dim myCommand As New MySqlCommand
            Dim SQL As String
            Dim rawData() As Byte
            Dim fs As FileStream
            Dim sPath As String
     
            oConn = New MySqlConnection()
            oConn.ConnectionString = "server =127.0.0.1;user id=xxxxxx; password='yyyyyyy';database= PMV"
     
            sPath = TextBox34.Text
    fs = New FileStream(sPath, FileMode.Open, FileAccess.Read)
            filesiZe = fs.Length
            rawData = New Byte(fs.Length) {}
            fs.Read(rawData, 0, fs.Length)
            fs.Close()
     
            myCommand.Connection = oConn
            SQL = "UPDATE bien SET bien.plomb = @bindata, bien.tailleplomb=@sizephotos;"
    Try
                oConn.Open()
     
                myCommand.CommandText = SQL
                myCommand.Parameters.AddWithValue("@bin_data", rawData)
                myCommand.Parameters.AddWithValue("@sizephotos", filesiZe)
                myCommand.ExecuteNonQuery()
            Catch myerror As MySqlException
                MessageBox.Show("Error Connecting to Database: " & myerror.Message)
            Finally
                oConn.Dispose()
            End Try
    Code pour la recherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
        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 fs2 As FileStream
            Dim fs As FileStream
            conn = New MySqlConnection()
            conn.ConnectionString = "server =127.0.0.1;user id=XXXXX; password='YYYYYY';database= PMV"
            SQL = "SELECT plomb, sizeplomb from bien where bien.idbien ='11';"
            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("sizeplomb"))
                rawData = New Byte(FileSize) {}
                myData.GetBytes(myData.GetOrdinal("plomb"), 0, rawData, 0, FileSize)
                fs = New FileStream("C:\tempo\P1.jpg", FileMode.OpenOrCreate, FileAccess.Write)
                fs.Write(rawData, 0, FileSize)
                fs.Close()
                myData.Close()
                conn.Close()
            Catch ex As Exception
                MessageBox.Show("There was an error: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
            PictureBox1.Load("C:\tempo\P1.jpg")
    en esperant que cela soit utile je reste dispo pour expliquer ce code

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Fichier mysql connector odbc indispensable pour un export vers une BDD mysql ?
    Par magikmed dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/02/2015, 11h05
  2. [AC-2010] insert into pour envoyer les donnees d'une table Access vers une table Mysql
    Par jj4822 dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 01/12/2014, 11h12
  3. [AC-2010] Insertion de champs d'un formulaire vers une autres table
    Par papagei2 dans le forum VBA Access
    Réponses: 7
    Dernier message: 30/12/2009, 13h17
  4. Réponses: 6
    Dernier message: 06/04/2008, 22h42
  5. Transfer de donnees vers une page HTML
    Par ldcarpathes dans le forum Applets
    Réponses: 4
    Dernier message: 15/09/2006, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo