Bonjour,
Y-a un moyen pour récupérer dans Delphi le contenu d'un champ blob d'une requete, par exemple sous la forme d'un TStream afin de pouvoir le traiter ?
Merci
Jean-Pierre
Bonjour,
Y-a un moyen pour récupérer dans Delphi le contenu d'un champ blob d'une requete, par exemple sous la forme d'un TStream afin de pouvoir le traiter ?
Merci
Jean-Pierre
Il y a plusieurs solutions, sans que l'une soit plus idéale qu'une autre... Tout dépend aussi que ce qu'il contient.
La premiere consiste à ne pas utiliser de blob mais des types chaines de caractères...![]()
La deuxième consiste à convertir le champ en question en chaine de caractères (si celui-ci contient biensur du texte) dès la requete SQL. Sous SQLServer ca donnerait un truc dans ce gout:
La requete est utilisable depuis un xmlrgram, mais cela a le gros inconvenient de fixer ton code à un type de SGBD en particulier!
Code : Sélectionner tout - Visualiser dans une fenêtre à part CONVERT(VARCHAR(8000), CONVERT(VARBINARY(8000), MON_CHAMP_BLOB)))Pas génial!
La dernière solution que je vois consiste à utiliser sous delphi un autre middleware d'accès à la BDD qui le permet. Si tu utilises ADO par exemple, le principe est de connecter un TADODataset (en récupérant le chaine de connexion depuis le curseur Datasources biensur) et de l'utiliser pour récupérer ton champ BLOB. Tu peux ainsi attaquer le champ qq soit son contenu (fichiers, images, texte, ...). En encapsulant cela proprement dans un composant par exemple cela fonctionne bien... en tout cas c'est la meilleure solution que j'ai pu trouver...
Michael
Merci de ta réponse.
Actuellement, je suis avec Interbase, et la solution intermédiaire que j'ai trouvé, c'est d'utiliser une UDF qui enregistre le blob dans un fichier temporaire, que je charge ensuite ...
Après, la solution de la deuxième connexion est attrayante, il faut que je teste si le temps de connexion est pas trop long.
Merci![]()
Partager