4D ODBC Pro : lire une colonne LONG RAW, code exemple

4D ODBC Pro : lire une colonne LONG RAW, 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 LONG RAW 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_lgraw contient une colonne NUMBER et une colonne LONG RAW contenant des fichiers images jpg
   $sql_statement:="select key, lgraw FROM test_lgraw where key='10'"

   $result:=ODBC_SQLPrepare ($statementID;$sql_statement)
   $result:=ODBC_SQLBindCol ($statementID;1;->ZeKey;->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)
FIXER TAILLE BLOB(zeBlobFinal;0)
   $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("lgraw_image.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.