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 :

Insérer des graphes dans une base de données


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut Insérer des graphes dans une base de données
    Bonjour à tous,
    J'ai un petit soucis pour stocker des graphes sur ma base de donnée.
    Voila sur ma base j'ai défini ces types sous format 'image'.
    Or lors de l'insertion j'ai l'erreur suivante qui apparaît
    Impossible de convertir chart (qui est mon graphes) en Byte.
    Merci.

  2. #2
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Bonjour,

    Peux tu préciser ta base de données ? SQLserver ? Oracle ? La version ?
    Une description de ta table serait aussi utile

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    c'est une base SQL server Express 2008,pour mes chart ils sont de type image sur la base.

  4. #4
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Je ne connais pas SQLServer , mais sous Oracle je stocke mes objets de type images ou autre dans des champs de type BLOB.

    J' ai peut être un ambrions d'exemple qui peut te servir , attention c'est pour Oracle et en lecteur mais le principe peut surement s'adapter pour SQLserveur et en écriture :

    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
     
    OracleLob myPicture = reader.GetOracleLob(2);
     
                                    String filePicture = dossier + "\\" + file_name + "." + file_suffix;
     
                                    // fetch the value of Oracle parameter into the byte array
                                    byteData = (byte[])(myPicture.Value);
     
                                    // get the length of the byte array
                                    int ArraySize = new int();
                                    ArraySize = byteData.GetUpperBound(0);
     
                                    // Write the Blob data fetched from database to the filesystem at the
                                    // destination location
                                    FileStream fs1 = new FileStream(@filePicture,
                                                                    FileMode.OpenOrCreate, FileAccess.Write);
                                    fs1.Write(byteData, 0, ArraySize);
                                    fs1.Close();

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Le principe est le même sous SQL server 2008, il faut que tu stock ton image dans un tableau de byte.

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Vous pouvez me donnez un exemple sur comment les stocker en écriture sous SQL Server car le type BLOB n'existe pas dans les types de données sou SQL.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par kensem Voir le message
    Vous pouvez me donnez un exemple sur comment les stocker en écriture sous SQL Server car le type BLOB n'existe pas dans les types de données sou SQL.
    Non, mais il existe le type Image qui est à peu près la même chose.

  8. #8
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Pour stocker mes chart dans la base de donnée j'arrive pas à les convertir en des bits,car j'ai la même erreurs que j'ai posté au début.

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par kensem Voir le message
    Pour stocker mes chart dans la base de donnée j'arrive pas à les convertir en des bits,car j'ai la même erreurs que j'ai posté au début.
    Sauf erreur de ma part, tu n'as pas dit de quel type était ton objet "chart".

  10. #10
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Sauf erreur de ma part, tu n'as pas dit de quel type était ton objet "chart".
    Mes charts c'e son les graphes que je trace sur mon interface graphique.Sur ma base ils sont de type image.
    pour les stocker sur ma base je procède comme suite;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oCommand1.Parameters.Add(new SqlParameter("@idi8", SqlDbType.Image));
     oCommand.Parameters["@id15"].Value = Convert.ToByte(chart1);

  11. #11
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par kensem Voir le message
    Mes charts c'e son les graphes que je trace sur mon interface graphique.Sur ma base ils sont de type image.
    pour les stocker sur ma base je procède comme suite;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oCommand1.Parameters.Add(new SqlParameter("@idi8", SqlDbType.Image));
     oCommand.Parameters["@id15"].Value = Convert.ToByte(chart1);
    Merci de répondre à la question !

    De quel type d'objet s'agit il ?
    (et on ne voit pas pourquoi un Convert.ToByte devrait fonctionner).

    Dit autrement : que retourne un typeof(chart1).Name ?

  12. #12
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Vraiment acune idée,je sais pas sous c# quel est le type des Chart, ce que je sais c'est qu'on utilise une classe de nom charting pour pouvoir les trace.

  13. #13
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par kensem Voir le message
    Vraiment acune idée,je sais pas sous c# quel est le type des Chart, ce que je sais c'est qu'on utilise une classe de nom charting pour pouvoir les trace.

    Je trouve bizarre de demander un coup de main et refuser de donner les infos à ceux qui tentent de t'aider.

    Allez, on va essayer un dernière fois :

    que retourne un typeof(chart1).Name ?

  14. #14
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    ça retourne une erreur
    Chart1 est un champs mais utilisé comme type.

  15. #15
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par kensem Voir le message
    ça retourne une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chart1 est un champs mais utilisé comme type.
    Alors que retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chart1.GetType().Name

  16. #16
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Je pense que c'est un System.Windows.Forms.DataVisualization.Charting.Chart

    Je ferais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Bitmap bmp;
          bmp = new Bitmap(chart1.Width, chart1.Height);
          this.DrawToBitmap(bmp, new Rectangle(0, 0, chart1.Width, chart1.Height));
    Et après, transformer le bmp en byte[]

    Ou alors, sérialiser le chart...

  17. #17
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    elle retourne aussi une erreur

  18. #18
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par ppphil Voir le message
    Je pense que c'est un System.Windows.Forms.DataVisualization.Charting.Chart

    Je ferais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Bitmap bmp;
          bmp = new Bitmap(chart1.Width, chart1.Height);
          this.DrawToBitmap(bmp, new Rectangle(0, 0, chart1.Width, chart1.Height));
    Et après, transformer le bmp en byte[]

    Ou alors, sérialiser le chart...
    Vous voulez dire quoi par sérialiser le Chart?

  19. #19
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Ca veut dire transformer l'objet en fichier xml ou binaire pour pouvoir le stocker et le recréer au moment voulu.
    Il y a plein de doc sur la sérialisation.

    A part ça, il faut voir s'il est possible de sérialiser un graphique.

    Mais ce que je trouve bizarre, c'est que tu veuilles stocker un graphique alors que ça sert à représenter des données. Or, les données sont stockées, elles....
    Mais bon, je n'ai pas non plus toutes les données du problème...

  20. #20
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Merci pour votre réponse

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

Discussions similaires

  1. insérer des tables dans une base de données oracle
    Par Spacy_green dans le forum Oracle
    Réponses: 3
    Dernier message: 16/03/2007, 11h23
  2. insérer des élément dans une base de donné
    Par wiss20000 dans le forum JDBC
    Réponses: 5
    Dernier message: 01/03/2007, 14h49
  3. [Conception] Gestion des accents dans une base de données
    Par MiJack dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 07/07/2005, 11h41
  4. Interet de mettre des fichiers dans une base de donnée
    Par Oberown dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 04/07/2005, 11h35
  5. inserer des images dans une base de données
    Par alilou04 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/06/2004, 18h54

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