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

C# Discussion :

Insertion d'image dans une base


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 94
    Par défaut Insertion d'image dans une base
    Salut à tous, je voudrais insérer une image dans ma base mais j'ai un problème de syntaxe, je me suis inspiré d'un code existant. c'est un code avec requete paramétré du coup j'ai des pb au niveau du paramètre "param.Value =" je sais pas si il faut mettre le nom de mon picturebox et coment le mettre.


    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
     
    try
                {
                    // Tableau d'octets representant l'image au format jpeg
                    MemoryStream mstImage = new MemoryStream();
                    pictureBox1.Image.Save(mstImage, System.Drawing.Imaging.ImageFormat.Jpeg);
                    Byte[] bytImage = mstImage.GetBuffer();
     
                    //création de la connection
                    OdbcConnection connection = new OdbcConnection();
                    //chaine de connection (du type "DSN=monDSN)
                    string chaineDeConnection = "Dsn=basetest";
                    //affectation de la chaine de connection à la connection
                    connection.ConnectionString = chaineDeConnection;
                    //ouverture de la connection
                    connection.Open();
                    MessageBox.Show(" Connexion réussi ...");
                    // Insere l'image dans la base
     
                    string requete = "insert into operlogo (idlogo,logo) values(@idlogo,@image)";
                    OdbcCommand comm = new OdbcCommand(requete, connection);
                    comm.Parameters.AddWithValue("@idlogo", textbox.Text);
                    OdbcParameter param = new OdbcParameter("@image", "varbinary");
                    param.Direction = ParameterDirection.Input;
                    comm.Parameters.Add(param);
                    param.Value = ..... ; // quel valeur mettre ici
     
                    comm.ExecuteNonQuery();
                    connection.Close();
     
                }

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    il faut mettre un tableau d'octet obtenu à partir de l'image (qui est donc dans picturebox.image)
    pour l'obtenir il faut utiliser un memorystream, question qui revient souvent donc la réponse doit etre trouvable par recherche
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    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
    Il te manquait pas grand chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    param.Value = bytImage;

  4. #4
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 94
    Par défaut
    J'ai effectivement un tableau d'octet et j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    param.Value = bytImage;
    mais voila j'ai un message d'erreur lors de l'insertion:
    Erreur: ERROR[42000][Microsoft ][ODBC visual Foxpro Driver]: erreur syntaxe
    J'utilise Fox Pro comme SGBD.

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OdbcParameter param = new OdbcParameter("@image", "varbinary");
    OdbcParameter n'a pas de constucteur qui prend 2 String en paramètre... donc le constructeur utilisé est en fait celui qui prend une String et un Object, et ton paramètre "varbinary" est donc considéré comme la valeur du paramètre et non comme son type... essaie plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OdbcParameter param = new OdbcParameter("@image", OdbcType.Binary);
    Si ça ne marche toujours pas : pour FoxPro je suis pas sûr que les paramètres soient indiqués avec un "@"... essaie avec un "?" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string requete = "insert into operlogo (idlogo,logo) values(@idlogo,@image)";

  6. #6
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Cela étant, c'est pas forcément toujours une bonne idée de stocker des image en BD

    Il faut bien réflechir au contexte et a la nécessité
    Il est souvent beaucoup plus souple de stocker une reference a l'image dans la DB et conserver l'image elle meme dans des fichiers sur un repertoire partagé

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

Discussions similaires

  1. insertion des image dans une base de données oracle
    Par tayeb_dev dans le forum Oracle
    Réponses: 2
    Dernier message: 12/08/2011, 01h48
  2. insertion des images dans une base de donnees mysql
    Par matamin dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2011, 16h59
  3. [MySQL] Insertion d'image dans une base MySQL à partir d'un formulaire
    Par WPH2009 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/10/2009, 18h13
  4. [VS2005] insertion d'images dans une base access
    Par lightedge dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/09/2007, 09h25
  5. [MySQL] Insertion d'image dans une base de données
    Par dragonfly dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/03/2006, 14h59

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