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 PDF champs BLOB - C#


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 23
    Par défaut Insérer PDF champs BLOB - C#
    Bonjour,

    Je travaille avec une BD MySql et je voudrais stocker un PDF dans un champs BLOB.

    Voici le code que j'utilise pour réaliser l'insertion (j'envois ma requête en passant par un webservice fonctionnant sous IIS) :

    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
     
    FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read);
     
                        byte[] MyData = new byte[fs.Length];
                        fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
     
                        fs.Close();
     
                        this._requete = "INSERT INTO stage_abstract(etuid, anac, pdf) VALUES (" + 1 + ", " + 2009 + ", \"" + MyData + "\")";
     
                        int suc = 0;
                        using (this._ds)
                        {
                            suc = this._dbo.InsertUpdateDelete(ws, this._requete);
                        }
    Et voici ce que j'utilise pour recréer le fichier (_ds étant le DataSet que je récupère) :

    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
     
    byte[] MyData = new byte[0];
     
                this._requete = "SELECT stage_abstract.pdf as pdf FROM stage_abstract WHERE stage_abstract.etuid = " + 1 + " AND stage_abstract.anac = " + 2009;
     
                using (this._ds)
                {
                    this._ds = this._dbo.select(this.ws, this._requete);
                }
     
                MyData = (byte[]) this._ds.Tables[0].Rows[0]["pdf"];
                int ArraySize = new int();
                ArraySize = MyData.GetUpperBound(0);
     
                FileStream fs = new FileStream(@"C:\essairecup.pdf", FileMode.OpenOrCreate, FileAccess.Write);
                fs.Write(MyData, 0, ArraySize);
                fs.Close();
    Lorsque je tente d'ouvrir le fichier PDF, Adobe me dit qu'il n'a pas pu ouvrir le fichier car il n'est pas pris en charge ou est endommagé.

    Je ne sais pas si c'est lors que l'insertion ou lors de la récupération que je procède mal. Je pense cependant que le problème est lors de l'insertion car j'ai pu voir dans mon champ blob que ce qui était inséré était de 13 o... Quelqu'un peut-il m'éclairer?

    Merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 23
    Par défaut
    J'ai dû utiliser une requête paramétrée :

    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
    int tfeid = 222;
                string fileName = "myFile";
                string fullFileName = @"C:\myFile.pdf";
     
                FileStream fs = new FileStream(fullFileName, FileMode.OpenOrCreate, FileAccess.Read);
                byte[] MyData = new byte[fs.Length];
                fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
                fs.Close();
     
                DbProviderFactory MFactory = DbProviderFactories.GetFactory("MySql.Data.MySqlClient");
                DbConnection Mconnect = MFactory.CreateConnection();
                Mconnect.ConnectionString = ConfigurationManager.ConnectionStrings["ConnexionMySql"].ConnectionString;
                Mconnect.Open();
                DbCommand Mcommand = Mconnect.CreateCommand();
                Mcommand.CommandText = "UPDATE tfe_abstract SET pdf = ?paramImg, pdfnom = \"" + fileName + "\" WHERE tfeid = " + tfeid;
     
                DbParameter parametre = Mcommand.CreateParameter();
                parametre.ParameterName = "paramImg";
                parametre.Value = MyData;
                Mcommand.Parameters.Add(parametre);
     
                int result = Mcommand.ExecuteNonQuery();
     
                Mconnect.Close();

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

Discussions similaires

  1. Stocker PDF dans un champs BLOB
    Par drake56 dans le forum C++
    Réponses: 5
    Dernier message: 17/07/2013, 15h42
  2. Réponses: 1
    Dernier message: 07/09/2011, 10h33
  3. [BDE & Delphi 2009] : je ne peux plus insérer de champ BLOB ?
    Par ZZZzzz2 dans le forum Bases de données
    Réponses: 24
    Dernier message: 04/03/2011, 14h53
  4. [MySQL] Lire / télécharger contenu PDF d'un champ BLOB
    Par domKr dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/06/2009, 15h36
  5. [XI R2] affichers des pdf / champs blob
    Par Flamby38 dans le forum Débuter
    Réponses: 0
    Dernier message: 23/06/2008, 16h42

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