4D ODBC Pro : lire une colonne BLOB, code exemple

4D ODBC Pro : lire une colonne BLOB, code exemple

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Produit : 4D ODBC 2004 · Plateforme : Mac & Win


Ci-dessous un code exemple qui récupère les données d'une colonne Oracle de type BLOB avec les commandes du plugin 4D ODBC Pro 2004.

`----- méthode -----

   `méthode qui initialise les variables
InitVariables

`méthode initialisant les paramètres de connexions
   `‹›DataSource, ‹›UserName, ‹›Password
LoginParameters

$result:=ODBC_SQLAllocConnect ($connectionID)
$result:=ODBC_SQLConnect ($connectionID;‹›DataSource;‹›UserName;‹›Password)

Si ($result=SQL_SUCCESS ) `Connexion OK
   $result:=ODBC_SQLAllocStmt ($connectionID;$statementID)

`la requête
      `la table test_blob contient une colonne VARCHAR et une colonne BLOB comportant des images jpg
   $sql_statement:="select * from test_blob where name='NENUPHAR'"

   $result:=ODBC_SQLPrepare ($statementID;$sql_statement)
   $result:=ODBC_SQLBindCol ($statementID;1;->ZeName;->zeLength)
   $result:=ODBC_SQLExecute ($statementID)
   $result:=ODBC_SQLFetch ($statementID)

Si ($result#0)
C_ENTIER LONG($res)
      $res:=ODBC_SQLGetDiagRec (SQL_HANDLE_STMT;$statementID;1;SQLState;nativeError;debugMess)
Fin de si

`il faut définir une taille de blob à l'avance
   $size:=1024
FIXER TAILLE BLOB(zeBlob;$size) `le blob qui reçoit le data
FIXER TAILLE BLOB(zeBlobFinal;0) `le blob concaténé

   $offset:=0

Repeter `on reçoit morceau par morceau (ici, 1024 bytes par itération)
      $result:=ODBC_SQLGetData ($statementID;2;->zeBlob;zeLength)
Si (zeLength>$size)
COPIER BLOB(zeBlob;zeBlobFinal;0;$offset;$size)
Sinon
COPIER BLOB(zeBlob;zeBlobFinal;0;$offset;zeLength)
Fin de si
      $offset:=$offset+$size
Jusque (($result=SQL_NO_DATA ) | ($result>0))

`créer un document avec l'image reçue
   $docRef:=Creer document("blob_nenuphar.jpg")
FERMER DOCUMENT($docRef)
BLOB VERS DOCUMENT(document;zeBlobFinal)

`libérer les connexions
   $result:=ODBC_SQLFreeStmt ($statementID;SQL_UNBIND )
   $result:=ODBC_SQLDisconnect ($connectionID)

Sinon
ALERTE("Impossible de se connecter !")

Fin de si

`----- /méthode -----

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2005 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.