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

Bases de données Discussion :

Stocker une image dans une base de données


Sujet :

Bases de données

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Stocker une image dans une base de données
    Bonjour,

    Je dois stocker une image, et non son lien dans une base de donnée mysql puis sql server. Seulement, je ne sais pas du tout comment faire, j'ai vu qu'il fallait utiliser le type BLOB dans le sgbdr .
    Seulement je ne vois pas comment l'utiliser pour envoyer l'image sur le serveur, ni comment utiliser le resultat d'une requete pour l'afficher.

    Merci par avance.

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour firewall7720

    Sans avoir une réponse précise (je n'ai jamais fait ça), voici une piste :
    - une table BDD est représentée dans Qt par une QSqlTableModel
    - tu ajoutes une ligne dans la table avec QSqlTableModel::setRecord en donnant un QSqlRecord
    - tu définies chaque élément de ton record avec la fonction QSqlRecord::setValue
    - cette fonction prend un QVariant, qui peut contenir une image

    Reste ensuite à savoir si QSqlRecord accepte une QImage dans un QVariant et sous quel format créer la table dans la base.

    Bon courage

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Exusez moi pour cette reponse tardive mais je n'ai toujours pas reussi a inserer d'image dans ma base. Cependant j'ai reussi a exploiter une image ajouté dans la base par son pannel d'administration grace au code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QPixmap img;
    img.loadFromData(requeteur.value(5).toByteArray());
    Il faudrait donc envoyer un ByteArray a la bdd pour stocker l'image cependant je ne trouve pas comment convertir une image en ByteArray avec Qt.

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour

    Tu peux passer par un QDataStream pour la lecture et l'écriture (pour être sur que le format d'image soit conservé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // write
    QByteArray data;
    QDataStream stream(&data)
    stream << img;
     
    // read
    QByteArray data;
    QDataStream stream(&data)
    stream >> img;
    Ça devrait marcher

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta réponse, mais il y a une erreur lors de la compilation avec le code que tu ma donné :
    no matching function for call to "QDataStream::QDataStream(QByteArray*)"

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Oui désolé. En effet, j'ai oublié de préciser dans le constructeur le mode d'accès au QByteArray (ce n'est pas nécessaire avec les QIODevice que j'utilise habituellement, puisque le mode d'accès est spécifié lors de la création du QIODevice) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // write
    QByteArray data;
    QDataStream stream(&data, QIODevice::WriteOnly);
    stream << img;
     
    // read
    QByteArray data;
    QDataStream stream(&data, QIODevice::ReadOnly);
    stream >> img;
    Tu pouvais corriger facilement cette erreur en regardant les prototypes des constructeurs dans la documentation.

    Bonne continuation

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    C'est bon j'ai finalement reussi a stocker une image en employant une autre methode, que voici pour ceux qui rencontrerait le meme probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QSqlQuery query;
    query.prepare("Update colonne set image=:image where id=:id");
    QFile fichier(img);
    fichier.open();
    query.bindValue(":image", fichier.readAll(), QSql::In|QSql::Binary);
    query.bindValue(":id", id);
    fichier.close();
    query.exec();

    Voila merci gbdivers pour t'etre pencher sur mon probleme .

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

Discussions similaires

  1. [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
  2. Comment stocker une image dans la base de données ?
    Par geforce dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/06/2012, 13h15
  3. [MySQL] sauver une image dans la base de donnée?
    Par bebas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/05/2007, 11h26
  4. Introduire une image dans la base de données
    Par ghassenus dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/04/2006, 10h09

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