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 :

Inserer un fichier dans un longblob MySQL


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Inserer un fichier dans un longblob MySQL
    Bonjour,

    Je suis débutant en C (quelques heures) et je cherche a Inserer un fichier dans un longblob MySQL en C

    Je n'ai pas de problème avec le SQL mais en C c'est une autre histoire

    J'ai fait un petit programme qui me connecte sur ma base mais je vois pas comment charger mon fichier

    Pourriez vous me dire comment charger le fichier dans un buffer et ensuite le passer dans une requête du style "insert into " ?

    PS : je sais qu'il vaut mieux copier le fichier dans un répertoire et stocker le chemin du fichier dans la base mais je n'ai pas le choix

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Bonjour,

    Si le fichier est visible du serveur MySQL (situé sur la même machine), le plus simple reste quand même d'utiliser LOAD_FILE() au sein de la requête et laisser le serveur charger le fichier lui-même.

    Sinon, le plus propre consiste à faire une requête paramétrée avec PREPARE. Tu écris ta requête, tu précises que l'une des valeurs est un paramètre transmis dans une variable et tu soumets cette requête une seule fois au serveur pour analyse.

    En C, tu auras besoin de MYSQL_BIND. C'est une structure dont tu déclares un tableau à autant d'entrées qu'il y a de paramètres. Pour chacun d'eux, la structure va fournir un tas d'information comme la taille du buffer, son emplacement en mémoire et la taille des données qu'il contient. Voir ici : http://dev.mysql.com/doc/refman/5.7/...tructures.html .

    Donc, en gros, tu évalues si besoin la taille de ton fichier avec stat(), tu alloues la mémoire nécessaire avec malloc(), tu ouvres ton fichier normalement avec fopen(), tu lis le contenu de ton fichier en une fois dans ton buffer avec fread(), tu refermes ton fichier avec fclose(), tu spécifies la taille du fichier et l'emplacement du buffer (renvoyé par malloc) dans ta structure MYSQL_BIND, tu exécutes ta requête préparée, tu vérifies que tout s'est bien passé et tu libères l'espace mémoire réservé avec free().

Discussions similaires

  1. Inserer un fichier dans un Blob?
    Par phpaide dans le forum JDBC
    Réponses: 3
    Dernier message: 05/07/2007, 12h01
  2. [DEBUTANT]Inserer des fichiers dans des champs blob
    Par tripper.dim dans le forum Débuter
    Réponses: 1
    Dernier message: 19/10/2006, 22h23
  3. inserer des photos dans une bdd mysql
    Par oceane751 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/05/2006, 20h06
  4. Stockage de fichiers dans une base MySQL
    Par FredMines dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 09/01/2006, 22h15
  5. Réponses: 1
    Dernier message: 27/10/2005, 10h15

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