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 :

sauvegarde images dans une DB SQL


Sujet :

VB.NET

  1. #1
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut sauvegarde images dans une DB SQL
    Bonjour

    Je ai un petit souci: je souhaite sauver une image dans la DB SQL, mais j'ai un message d'erreur assez générique. Quelqu'un aurait-il une idée sur la question

    le message d'erreur :
    Une erreur générique s'est produite dans GDI+.
    voici le code de la sauvegarde

    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
     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
                Dim ms As MemoryStream
     
                ms = New MemoryStream
                PbDocument.Image.Save(ms, PbDocument.Image.RawFormat)
     
                Dim arrImage() As Byte = ms.GetBuffer
     
                ' Close the stream object to release the resource.
                ms.Close()
     
                Dim strSQL As String = _
                                  "INSERT INTO Picture (Filename, Picture)" & _
                                  "VALUES ('" & "test" & "'," & arrImage(0) & ")"
     
     
     
          End Sub

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonjour,

    d'après cette discussion ca viendrait du fait que tu essayes de sauvegarder sur une image qui existe déjà et qui est verrouillée (ouverte)...

  3. #3
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    En fait j'ai chargé une image dans le PbDocument( picturBox): cette image même que je souhaite sauvegarder dans la DB.

    ou alors

    Quelle serait alors la syntaxe pour enregistrer un fichier image dans la Db

    exemple le fichier "c:\monimage.jpg"

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Il faudrait savoir où ça plante exactement...

    J'ai l'impression que ce qui pose problème, c'est principalement cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                PbDocument.Image.Save(ms, PbDocument.Image.RawFormat)
    essaye une fois avec, pour une image JPEG :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                PbDocument.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)

  5. #5
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Hai

    Le problème est le même

    Je pense que pour avoir plus facile, peut être enregistrer l'image dans la db directement a partir d'un fichier, sans l'ouvrir dans le Pb avent de vouloir le sauver...

    mais alors quel en est la syntaxe

  6. #6
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Non, vous vous y prenez de la bonne manière, il faut juste comprendre pourquoi ca ne fonctionne pas...
    Essayer de mettre un bloc try / catch avec un ex.toString pour voir s'il n'y a pas plus de détail sur l'exception.

  7. #7
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Oui, je comprend ( savoir le pourquoi )

    Mais je me posais juste la question

    Est-il interessant de charger l'image dans le pbox et puis de l'enregistrer dans la DB, au lieu d'enregistrer directement le fichier ( image ) dans la db avec un filedlg a ce moment

    Genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim image As Byte() = System.IO.File.ReadAllBytes("c:\image.jpg")

  8. #8
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Si vous ne la visualisez pas, il vaux mieux ne pas passer par un picturebox en effet... (désolé je n'avais pas compris)

  9. #9
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Bien disons que si j'utilise une fileDlg elle peut être affichées dans l'explorer de windows....

    poins de vue !!

    mais alors je coince sur la syntage de la commande INSERT de l'image

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim image As Byte() = System.IO.File.ReadAllBytes("c:\image.jpg")

  10. #10
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    il faut utiliser un dbparameter, on ne peut pas (enfin si on peut mais il faut vraiment éviter) mettre l'image dans la concaténation de la requête
    il vaut alors mieux mettre une variable dans la requete et passer un paramètre typé (tableau d'octet ou image selon la colonne de ta db) qui contient la valeur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    BOnjour pol63

    tu parles de cette façon de faire j'imagine?

    Dim strSQL As String = _
    "INSERT INTO Picture (Filename, Picture)" & _
    "VALUES ('" & "test" & "'," & arrImage(0) & ")"

  12. #12
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string qry = "insert into Picture (Filename, Picture) values(@Filename, @Picture)";
    SqlCommand SqlCom = new SqlCommand(qry, connection);
    SqlCom.Parameters.Add(new SqlParameter("@Filename", "test"));
    SqlCom.Parameters.Add(new SqlParameter("@Picture", (object)imageData));

  13. #13
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Ceci semble t'il correcte alors.

    Ceci-dit il reste la relecture et affichage dans le pb box a faire, heu...


    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
     If OpenFile.ShowDialog = System.Windows.Forms.DialogResult.OK Then
     
                      Try
     
                            Dim image As Byte() = System.IO.File.ReadAllBytes(OpenFile.FileName)
     
                            SqlConn.Open()
     
                            StrSql = "UPDATE Documents SET ImageName=@Filename, ImageDocument=@Picture WHERE IdDocument=" & CInt(DgDocuments.CurrentRow.Cells("IdDocument").Value)
     
                            SqlComm = New SqlCommand(StrSql, SqlConn)
     
                            SqlComm.Parameters.Add(New SqlParameter("@Filename", DgDocuments.CurrentRow.Cells("NumeroCOB").Value.ToString & DgDocuments.CurrentRow.Cells("NumeroExtensionCOB").Value.ToString))
                            SqlComm.Parameters.Add(New SqlParameter("@Picture", image))
                            SqlComm.ExecuteNonQuery()
     
                            SqlConn.Close()
                            MsgBox("Image enregistrée")
     
                      Catch ex As Exception
     
                            MsgBox("Un problème est survenu lors du traitement. - " & ex.Message, MsgBoxStyle.Critical)
     
                      End Try
     
                End If

  14. #14
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    J'ai posté un peut vite : voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     LblNomFichierImage.Text = DgDocuments.CurrentRow.Cells("ImageName").Value.ToString
     
                      Dim Picturebyte() As Byte = DgDocuments.CurrentRow.Cells("ImageDocument").Value
                      Dim StreamPicture As New MemoryStream(Picturebyte)
                      PbDocument.Image = Image.FromStream(streamPicture)
    Commentaire ou idée toujours les biens venus

Discussions similaires

  1. Stocker une image dans une base sql anywhere
    Par sorlok dans le forum SQL Anywhere
    Réponses: 1
    Dernier message: 12/12/2008, 15h16
  2. [SQL-Server] Images dans une base SQL Server
    Par matrouba dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 20/03/2008, 10h34
  3. Stockage d'image dans une base sql server
    Par rafik1f dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/03/2007, 10h07
  4. Supprimer une image dans une table SQL Serveur 2000
    Par Soobook dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/09/2006, 17h00
  5. [SQL] Upload/download de fichiers ou images dans une BDD sql
    Par boniface dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 31/07/2006, 16h04

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