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 :

Selection d'une image a partir du SQL


Sujet :

VB.NET

  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut Selection d'une image a partir du SQL
    Svp j'ai essayé d' afficher l'image avec la requete si dessous et l'afficher dans picturebox1 mais le probleme vous pouvez le voir ci dessous.Aider moi SVP.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    connexion.con.Open()
     
            Dim cmd2 As SqlCommand
            cmd2 = New SqlCommand("select image_data from [BaseERP].[dbo].[PERSONNEL] where nom='OUSSS'", connexion.con)
            Dim imageData As Byte() = DirectCast(cmd2.ExecuteScalar(), Byte())
            If Not imageData Is Nothing Then
                Using ms As New MemoryStream(imageData, 0, imageData.Length)
                    ms.Write(imageData, 0, imageData.Length)
                    Progression.picturebox1.BackgroundImage = Image.FromStream(ms, True)
                End Using
            End If
     
            connexion.con.Close()
    [IMG][/IMG]
    http://upload-pics.org/images/54286065242416492403.jpg

    et voici ci dessous ma base SQL

    [IMG][/IMG]

  2. #2
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Désolé on ne voit plus l'image.

    Par contre qu'elle base de données utilises tu ?
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut
    Citation Envoyé par infosam76 Voir le message
    Désolé on ne voit plus l'image.

    Par contre qu'elle base de données utilises tu ?
    Je crois que vous pouvez voir l'image et ma base SQL.
    Merci d'avance.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Enlève cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ms.Write(imageData, 0, imageData.Length)
    Ca sert à rien (tu as déjà initialisé le MemoryStream avec les données de imageData), et ça place le curseur à la fin du Stream, alors qu'il faudrait se placer au début pour lire l'image

  5. #5
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Je crois que vous pouvez voir l'image et ma base SQL.
    Merci d'avance.
    Désolé début de l'aprem je ne les voyais pas.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 193
    Par défaut
    quel bd utilise-tu?
    est ce que tu as un champ qui prend le chemin de l'image?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Dim fs As New FileStream(txtimg.Text, FileMode.OpenOrCreate, FileAccess.Read)
            Dim MyData(fs.Length) As Byte
            fs.Read(MyData, 0, fs.Length)
            fs.Close()
           Me.PictureBox1.ImageLocation = txtimg.Text

  7. #7
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Citation Envoyé par eddyphan Voir le message
    quel bd utilise-tu?
    est ce que tu as un champ qui prend le chemin de l'image?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Dim fs As New FileStream(txtimg.Text, FileMode.OpenOrCreate, FileAccess.Read)
            Dim MyData(fs.Length) As Byte
            fs.Read(MyData, 0, fs.Length)
            fs.Close()
           Me.PictureBox1.ImageLocation = txtimg.Text
    Non ce n'est pas un chemin vu que le type d'image_data est bien "image". Je pense que TomLev à raison j'attends la réponse d'oami89
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  8. #8
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut
    Voici ci dessous le debut du resultat de la requete SQL

    "0xFFD8FFE000104A46494600010201000000000000FFE1003E4578696600004D4D002A00000008000187690004000000010000001A000000000001928600070000000A0000002C00000000554E49434F444500002AFFFE00042A00FFE2021C4943435F..."

    Et j'ai supprimé la ligne comme il m'a demandé tomlev "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ms.Write(imageData, 0, imageData.Length)
    "
    et c'est le meme problème.
    Merci d'avance de m'aider.

  9. #9
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut
    Citation Envoyé par infosam76 Voir le message
    Non ce n'est pas un chemin vu que le type d'image_data est bien "image". Je pense que TomLev à raison j'attends la réponse d'oami89
    Le même problème

  10. #10
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Peux tu nous donner le type de ta base de données ? J'aurais tendance à penser à ACCESS
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  11. #11
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonjour,

    A voir le screenshot du premier message, il semble que ce soit une base SQL Server.

    Le champ image d'une base de données SQL server est apparement appelé à disparaitre si j'en crois un post trouvé à ce sujet sur MSDN.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.PictureBox1.ImageLocation = txtimg.Text
    définit l'URL ou le chemin d'accès au fichier image.
    Ce n'est donc pas la bonne propriété qui est renseignée.

    Les données du champ Image sont en fait un tableau de Bytes, du coup, il faudrait recréer l'image avant de définir PictureBox.Image

    Le fait de stocker des images dans une base de données la fait grossir rapidement, il vaut peut être mieux privilégier le fait de ne stocker que l'URL de l'image, de créer un dossier spécifique pour les mettre et d'y accéder directement sur le disque...

  12. #12
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut
    Citation Envoyé par Rainui Voir le message
    Bonjour,

    A voir le screenshot du premier message, il semble que ce soit une base SQL Server.

    Le champ image d'une base de données SQL server est apparement appelé à disparaitre si j'en crois un post trouvé à ce sujet sur MSDN.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.PictureBox1.ImageLocation = txtimg.Text
    définit l'URL ou le chemin d'accès au fichier image.
    Ce n'est donc pas la bonne propriété qui est renseignée.

    Les données du champ Image sont en fait un tableau de Bytes, du coup, il faudrait recréer l'image avant de définir PictureBox.Image

    Le fait de stocker des images dans une base de données la fait grossir rapidement, il vaut peut être mieux privilégier le fait de ne stocker que l'URL de l'image, de créer un dossier spécifique pour les mettre et d'y accéder directement sur le disque...
    Je veux enregistré la matrice parce-que j'ai des traitements sur la matrice.

  13. #13
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut
    Citation Envoyé par oami89 Voir le message
    Je veux enregistré la matrice parce-que j'ai des traitements sur la matrice.
    Svp s'il y a un autre code meme si different aidez moi

  14. #14
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Tu veux enregistrer une matrice de quoi ?

    As-tu suivi la recommandation de Rainui ?

  15. #15
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Le fait de stocker des images dans une base de données la fait grossir rapidement, il vaut peut être mieux privilégier le fait de ne stocker que l'URL de l'image, de créer un dossier spécifique pour les mettre et d'y accéder directement sur le disque...
    Que ça soit le dossier de la base de donnée ou le dossier des images qui augmente je ne vois pas ce que tu gagnes !

    SQL Server est tout à fait à même de stocker des images ou autres fichiers binaires sans problème de performance si on l'utilise correctement.

    Par contre il te retourne dans une requête un array of Byte qu'il faut convertir en objet image pour l'affichage dans un contrôle (et inversement lorsque l'on veut le modifier l'image dans la base).

    Si tu utilises le databinding pour lié un objet de donnée (datarow, entity, etc) il faut déclarer manuelle le binding dans le code, ajouter la gestion des évènement format et parse du binding afin de réaliser la conversion (Byte <=> Image) à la volée.

  16. #16
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonjour,

    Voici quelques liens en relation avec le type Image :

    Gestion des données ntext, text et image

    Types ntext, text et image (Transact-SQL)

    SQL Server est tout à fait à même de stocker des images ou autres fichiers binaires sans problème de performance si on l'utilise correctement.
    Je ne dis pas le contraire

    Le fait de stocker des images dans une base de données la fait grossir rapidement, il vaut peut être mieux privilégier le fait de ne stocker que l'URL de l'image, de créer un dossier spécifique pour les mettre et d'y accéder directement sur le disque...
    Je ne sais plus ou j'avais lu que ça pouvait poser problème.

  17. #17
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Attention, comme stipulé au tout début du lien fourni par Rainui :
    Citation Envoyé par MSDN
    ntext , text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  18. #18
    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
    Salut peut que ceci peut t'aider
    Indexligne et l'index de la ligne dans le datagidviewer
    S_ImageLogo est le champs de type image dans la DB SQL
    PgImageLogo est un pictureBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Private Sub LoadImageLogo(ByVal IndexLigne As Integer)
     
                If IsDBNull(Datagridview.Rows(indexligne).Cells("S_ImageLogo").Value) = False Then
     
                      'Affiche l'image dans le pictureBox
                      Dim Picturebyte() As Byte = Datagridview.Rows(IndexLigne).Cells("S_ImageLogo").Value
                      Dim StreamPicture As New MemoryStream(Picturebyte)
                      PgImageLogo.Image = Image.FromStream(StreamPicture)
     
                End If
     
          End Sub
    Bien a toi

  19. #19
    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
    Citation Envoyé par Rainui Voir le message
    Le fait de stocker des images dans une base de données la fait grossir rapidement, il vaut peut être mieux privilégier le fait de ne stocker que l'URL de l'image, de créer un dossier spécifique pour les mettre et d'y accéder directement sur le disque...
    Je ne suis pas d'accord sur ce point, voir pourquoi dans ce message, après ce n'est qu'une appréciation personnelle

  20. #20
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Les choses ont un peu évolué depuis le temps où ces posts ont été écrits ! SQL Server propose en effet les technologies Filestream et File Table, qui permettent de stocker les images sur le système de fichiers, tout en ayant la possibilité d'intéragir avec en T-SQL.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Récupérer une image JPEG à partir d'une vidéo
    Par kurul1 dans le forum C++Builder
    Réponses: 8
    Dernier message: 09/08/2006, 10h51
  2. [VBA-E]Selection d'une ligne a partir d'une certaine colonne
    Par deathsurfer dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/06/2006, 16h36
  3. [Image] Comment créer une image à partir d'un fichier
    Par mereyj dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 01/07/2005, 21h48
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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