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

Accès aux données Discussion :

[C#] Récupération d'une image depuis une table SQL Server [FAQ]


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2002
    Messages : 102
    Points : 70
    Points
    70
    Par défaut [C#] Récupération d'une image depuis une table SQL Server
    Hello,

    J'aimerais résupérer depuis un champs image d'une table SQL Server une icone ou image.

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Image icon ; (...)
    rs.Read() ; (...)
    icon = (Image)rs.GetSqlValue(11); //erreur de casting et
    icon = (Image)rs.GetValue(11); //erreur de casting
    Qui peut m'aider ????

    [Balise [Code] ajoutée par freegreg]
    [Pensez-y, vous-même, la prochaine fois. Merci ]

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Tu dois utiliser un memorystream

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2002
    Messages : 102
    Points : 70
    Points
    70
    Par défaut
    voici mon nouveau code mais marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    byte[] temp = (byte[])rs.GetValue(11) ;
    memoryStream stream = new MemoryStream(temp);
    stream.Write(temp, 0, temp.Length);
    icon = Image.FromStream(stream) ;
    //erreur
    An unhandled exception of type 'System.ArgumentException' occurred in system.drawing.dll

    Additional information: Invalid parameter used.
    [Balises [Code] et [Quote](Citation) ajoutées par freegreg]
    [Pensez-y, vous-même, la prochaine fois. Merci ]

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    avec un datareader :

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2002
    Messages : 102
    Points : 70
    Points
    70
    Par défaut
    Oui, avec un objet de type SQLDataReader !!!

  6. #6
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;317017

    section Functions to Read from a BLOB Column

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2002
    Messages : 102
    Points : 70
    Points
    70
    Par défaut
    Ca marche toujours pas

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 64
    Points : 48
    Points
    48
    Par défaut
    essaie de voir si ça peut pas t'aider ==> http://www.developpez.net/forums/viewtopic.php?t=162543

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 64
    Points : 48
    Points
    48
    Par défaut
    en plus tu étais déjà venu dans mon topic lol ....

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 64
    Points : 48
    Points
    48
    Par défaut
    la solution en VB.NET, j'espère que ça t'aidera

    Pour récupérer le fichier et ouvrir une invite de commande "ouvrir ou enregistrer le fichier"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim oByte() As Byte = myFicRow.Item("fi_h_fichier") ' On récupère directement le champ
    Response.ContentType = "application/octet-stream"
    Response.AddHeader("content-disposition", "attachment; filename=" & "nom_fichier")
    Response.BinaryWrite(oByte)
    Récupérer le fichier en base pour le sauvegarder en local :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim oByte() As Byte = myFicRow.Item("fi_h_fichier") ' On récupère directement le champ
    Dim oFile As File
    Dim oFileS As FileStream
     
    oFileS = oFile.Create("chemin_fichier" & "nom_fichier", UBound(oByte))
    oFileS.Write(oByte, 0, UBound(oByte))
    oFileS.Close()

  11. #11
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Moi j'arrive à récupérer un bmp comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.IO.MemoryStream MS = new System.IO.MemoryStream(( (byte[]) MonReader["photo"]));
    System.Drawing.Bitmap MaPhoto=new Bitmap(MS);
    this.pictureBox1.Image=MaPhoto;

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 16/01/2015, 10h50
  2. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  3. [Image] charger une image depuis un fichier xml.
    Par Invité dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 21/11/2006, 14h59
  4. Enregistrer une image depuis une url
    Par joeyinbox dans le forum Windows
    Réponses: 2
    Dernier message: 23/10/2006, 20h00
  5. [Image] Afficher une image depuis serveur distant
    Par grinder59 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 17/05/2006, 09h45

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