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

Connexion aux bases de données Firebird Discussion :

Update d'un champ BLOB


Sujet :

Connexion aux bases de données Firebird

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 22
    Points
    22
    Par défaut Update d'un champ BLOB
    Bonjour,

    Je sais que l'on ne peut pas modifier le contenu d'un BLOB texte directement par une requête SQL, mais voici mon problème :

    J'effectue l'importation de données depuis une table Paradox vers une table Interbase sous Delphi. J'utilise un composant TTable pour parcourir le contenu de ma table Paradox et génère une requête SQL qui s'exécute sur le serveur Interbase pour la mise à jour des enregistrements nouvellement créés (je précise que la table a été précédemment créée sur Interbase, et remplie avec des enregistrements bidons). Et parmi les champs à importer, j'ai bien évidemment des champs BLOB (sous-type 1, c'est à dire texte), que je souhaite conserver sous forme de BLOB et pas les changer en varchar(32000) par exemple.

    La seule solution (non encore testée) que j'ai trouvé pour l'instant est d'associer un composant TDBMemo pour le champ BLOB source Paradox, un autre composant TDBMemo pour le champ BLOB cible Interbase, et pour chaque enregistrement lu dans ma table Paradox, je copie le contenu de mon TDBMemo Paradox dans le TDBMemo Interbase puis je lance une requête SQL paramétrée qui utilise le contenu du TDBMemo Interbase pour mettre à jour le BLOB Interbase. Je ne sais même pas si ça va marcher en l'état, ou si je suis obligé de passer par un couple TIBQuery/TIBUpdateSQL...

    Si quelqu'un a déjà rencontré le problème et connait une solution, je suis preneur :-)

    PS : j'espère que les explications que j'ai donné sont claires, je m'y perds moi-même un peu...

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    TTable est à éviter en mode client/serveur car trop gourmand en resource.
    TIBQuery/TIBUpdate existent uniquement pour faciliter la migration des projets BDE vers IB et il est donc préférable d'utiliser TIBDataSet.

    Sinon pour le probleme du blob, il faut utiliser un TStream, et les Fields de type Blob. Les méthodes LoadFromStream et SaveAsStream (de mémoire).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Merci pour la réponse !

    Je ne me sers du TTable que pour la phase d'importation de données, par contre, j'avais cru comprendre que le couple TIBQuery/TIBUpdateSQL était plus performant que le TIBDataSet, mais il se peut que cela ait changé avec la version 6 d'Interbase (celle que j'utilise).

    En tous cas, encore merci !

    PS : je ne mets pas encore le tag [Résolu], je vais tester tout ça... Et je reviendrai mettre à jour mon post comme il faut dès que ça marchera ;-)

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Comme je l'ai dit, TIBQuery et TIBUpdate sont là uniquement pour faciliter la migration es projets BDE (qui eut utilisent TQuery et TUbdate.)

    Mais si tu regardes plus précisément comment sont fait les composants TIBQuery et TIBUpdate tu t'appercevra qu'ils sont basés sur le TIBDataSet....

    Donc en utilisant un TIBQuery et un TIBUpdate c'est comme si tu utilisais deux TIBDataSet... Alors qu'un seul suffit...

    Bref comme ont dit, il vaut mieux s'adresser directemnent à Dieu qu'à ses saints.

    Bonne programmation.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Merci pour ta réponse, encore une fois ! Je marque le pb comme résolu...

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

Discussions similaires

  1. [10g] Problème UPDATE avec un champ BLOB
    Par Nico02 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 04/07/2013, 09h25
  2. Java - Mysql update champ blob
    Par nawara3003 dans le forum JDBC
    Réponses: 1
    Dernier message: 21/05/2010, 14h26
  3. Select/Update champs blob (texte)
    Par agimation dans le forum Powerbuilder
    Réponses: 4
    Dernier message: 22/09/2009, 10h06
  4. Optimisation Update sur un champ blob
    Par bibi92 dans le forum SQL
    Réponses: 1
    Dernier message: 26/09/2008, 10h51
  5. [blob] update de champ blob
    Par Michael# dans le forum SQL
    Réponses: 8
    Dernier message: 13/12/2005, 09h51

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