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

Windows Presentation Foundation Discussion :

Stocker une image dans sqlserver depuis WPF


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut Stocker une image dans sqlserver depuis WPF
    Salut !

    je suis entrain de développer ma première application en WPF !

    Cependant , dans un formulaire WPF je dois enregistrer une photo dans une table qui réside dans ma base de données sql server 2005 !

    Prière si quelqu'un sait comment procéder ou à une idée !!

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Par défaut
    Tu peux nous donner plus d'infos ?

    Type de ton champ en base et mode d'acces à ta base ? Entity framework, Enterprise librarie, proc stock...

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut
    pour le champ il est de type image

    et j accède via linq to sql

  4. #4
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut,
    Si j'ai bien compris tu as une image dans ton application et tu aimerai la sauvegarder dans une table.
    Ta table doit être adaptée à la situation : avoir une colonne typée varbinary(max)
    Enfin, y'a d'autres types de données qui fonctionnent, je te laisse juger du plus adapté a tes besoin.
    Tu dois avoir une instance de System.Drawing.Bitmap (ou Image) contenant ta photo.
    Tu créer un System.IO.MemoryStream dans lequel tu enregistres ton image et ca te permettra de transformer ca en tableau de byte.
    Et le tableau de byte passera en paramètre de ta requête.

    petit exemple :
    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
     
    System.Drawing.Image img = System.Drawing.Image.FromFile("monimage.png"); // Chargement de ton image.
    byte[] imgBytes = null;
    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Png); // On sauvegarde l'image dans un MemoryStream (permet de ne pas passer par le disque dur)
        imgBytes = ms.ToArray(); // On obtient le contenu du MemoryStream sous forme de tableau d'octets
    }
     
    // On oublie pas les using
    using (System.Data.SqlClient.SqlConnection cnx = new System.Data.SqlClient.SqlConnection("ta chaine de connexion."))
    {
        cnx.Open();
        using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("INSER INTO dbo.MesImages ( id, img) VALUES (@ID, @IMG)"))
        {
            // On ajoute les paramètres à la requete
            cmd.Parameters.AddRange(new System.Data.SqlClient.SqlParameter[] {
                new System.Data.SqlClient.SqlParameter("@ID", Guid.NewGuid()),
                new System.Data.SqlClient.SqlParameter("@IMG", imgBytes) // On passe l'image
            });
            cmd.ExecuteNonQuery();
        }
    }
    A toi d'adapter.
    Pour moi ta question n'a rien a voir avec le WPF (que je ne pratique pas du tout par ailleurs)

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut
    Citation Envoyé par ctxnop Voir le message
    Salut,
    Si j'ai bien compris tu as une image dans ton application et tu aimerai la sauvegarder dans une table.
    Ta table doit être adaptée à la situation : avoir une colonne typée varbinary(max)
    Enfin, y'a d'autres types de données qui fonctionnent, je te laisse juger du plus adapté a tes besoin.
    Tu dois avoir une instance de System.Drawing.Bitmap (ou Image) contenant ta photo.
    Tu créer un System.IO.MemoryStream dans lequel tu enregistres ton image et ca te permettra de transformer ca en tableau de byte.
    Et le tableau de byte passera en paramètre de ta requête.

    petit exemple :
    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
     
    System.Drawing.Image img = System.Drawing.Image.FromFile("monimage.png"); // Chargement de ton image.
    byte[] imgBytes = null;
    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Png); // On sauvegarde l'image dans un MemoryStream (permet de ne pas passer par le disque dur)
        imgBytes = ms.ToArray(); // On obtient le contenu du MemoryStream sous forme de tableau d'octets
    }
     
    // On oublie pas les using
    using (System.Data.SqlClient.SqlConnection cnx = new System.Data.SqlClient.SqlConnection("ta chaine de connexion."))
    {
        cnx.Open();
        using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("INSER INTO dbo.MesImages ( id, img) VALUES (@ID, @IMG)"))
        {
            // On ajoute les paramètres à la requete
            cmd.Parameters.AddRange(new System.Data.SqlClient.SqlParameter[] {
                new System.Data.SqlClient.SqlParameter("@ID", Guid.NewGuid()),
                new System.Data.SqlClient.SqlParameter("@IMG", imgBytes) // On passe l'image
            });
            cmd.ExecuteNonQuery();
        }
    }
    A toi d'adapter.
    Pour moi ta question n'a rien a voir avec le WPF (que je ne pratique pas du tout par ailleurs)
    Merci d'avoir accorder de l'intérêt à ma question !

    j ai posté dans le coin WPF vu que je bâtis l'interface en WPF et j'utilise le controle : Image

    dans un premier temps j arrive à charge l'image dans le formulaire , mais je compte aussi l 'enregistrer dans la base sachant que j utilise linq to sql pour l exploitation de la bd

  6. #6
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Peut importe que tu utilises WPF ou Winform ou je ne sais quoi d'autre. Peut importe le contrôle. Dans tous les cas ton image peut être obtenue sous la forme d'une instance de System.Drawing.Image (ou System.Drawin.Bitmap, qui hérite de Image, ce premier étant la classe de base et abstraite).
    Et donc l'exemple que j'ai donné reste tout à fait valable.
    Si tu ne vois pas ce qu'il viens faire ici c'est que je n'ai pas compris ta demande, aussi il nous faudrait plus de précisions.

  7. #7
    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
    j'arrive un peu en retard, pour dire que c'est dommage d'utiliser des namespace dédiés à l'origine aux windows forms en wpf

    un system.drawing.image n'est pas utilisable en wpf (instanciable certes mais pas affichable)

    je vais continuer de parcourir google qui a surement la solution.
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Comment stocker une image dans une base de données sqlce ?
    Par ozeon dans le forum Développement
    Réponses: 3
    Dernier message: 11/07/2016, 20h13
  2. [MySQL] Stocker une image dans une BD MYSQL
    Par jbenz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/06/2007, 19h01
  3. stocker une image dans un document XML
    Par freakss dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 28/03/2007, 18h39
  4. Réponses: 9
    Dernier message: 19/03/2007, 10h46
  5. [Conception] Stocker une image dans la BD
    Par naima2005 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/12/2006, 13h41

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